I’ve released 0.0.1 version of Candidate pretty long time ago. I was actually quite happy how the things went, before I collected some initial feedback. Even, if I can see the application useful, almost all responders had a different opinion. Let’s briefly see the major concerns.
Original idea of Candidate was that it works as usual ASP.NET application, hosted under IIS. That worked really bad, though. Candidate is performing a some operations that requires extended permissions (for git, msbuild, file system operations etc.). That means that IIS web site has to be configured to run under under your personal account (or any other administrative account, with set-up SSH keys, access to msbuild etc).
All of that created a bit of overhead. First of all, Candidate has to be installed and configured on IIS. Even, it is possible to create kind of installer to automate this job, it does not sound good. In other hand, some people might have very strict policies on their machines, so it is not even possible to change any kind of IIS settings under it.
So, it turned out to be bad idea for this particular application.
The primary deployment scenario that implemented in Candidate is local one. It means, it’s able to build and test the site and deploy it to local IIS. I did so, since I use the same scenario for deployment of trackyt.net, which is hosted on VPS and deployed by Jenkins running on the same server.
But many people are not using VPS, but rather sharing hosting there they are not even able to install any kind of other software. So, they are more interested in remote deployment, not local one. With the re-invention of Azure, you might consider scenarios of deployment existing web application to it seamlessly.
Local deployments was a good for prototype, but not good at all for product.
I stick to framework named Bounce. It’s very powerful product, that basically allows to write a deployment scripts in .NET languages. Then I originally saw it, I thought it’s great since it does everything I need, including git operations, msbuild and IIS sites deployment. Even more, Bounce is the one of the best .NET code I ever seen, so respect to refractalize.
But.. Bounce, is not that good for long perspective. It required to create a lot of configuration code, hard to change logging options and further extension.
For a long running product I need more lightweight and robust approach.
Considering all things above, I decided to re-start the project, almost from the scratch.
It would be based on 3 different technologies, that in my opinion are agile enough to allow me to build what I want.
Unfortunately, I’m not yet proficient with any of these technologies. It makes me very exited to learn something new. I’ve already created a branch where some basic infrastructure is prepared. My goal would be create first prototype in 2 - 3 weeks.
And I want to appreciate everyone who provided feedback and useful technical suggestions. I hope it would turn in something good.