Making internet start-up… Part 2: Choosing tools
It has been a while since my last entry in this series. In previous one i made decision: what i would like to make and why. To sum up, I want to make something simple, something about travelling, for travellers, something that may follow idea of websites like: Yahoo Answers or StackOverflow. The next step is to choose appropriate tools, that will help me to build start-up.
1. Choosing technology
Choosing the right technology for web development is crucial. What I believe, is that MVC pattern suits web and simply - it just the best for the web. So before choosing technology I need to consider if there is a way to use MVC pattern with it. Python Django, RubyOnRails, PHP Zend, ASP.NET MVC. Taking look at populurity of them gives:
On the graph, generated with Google Trends it is clearly visible that python django and php zend framework are gaining a increasing interest since middle of 2005. Slightly opposite things happen to “Ruby on Rails”. ASP.NET MVC is relatively new in the group, but it is constantly gaining more and more interest. Before making decision I need to consider couple more factors. That is going to be a tough decision. Up to now I had very little experience with framworks beside ASP.NET. It so tempting for me to choose Django framework - not only it is so far the most popular framework following MVC patters - which tells something about community, it is nicely documented as well. It has a brilliant administration panel, and build-in ORM. Moreover I love to learn, I love to play with something new. But on the other side - let’s face the truth. It would take far longer to make new web site. I had experience with python during my studies - but assuming some things have changed during last years, it will take some time for me to adjust - to make full advantage of it’s features. Moreover, there are some environments for python django that i am not really familiar with - like eclipse. Overall, after a lot of brain storms i decided to stick with ASP.NET MVC (wit Visual Studio 2008). I know it, I work with it. Also it looks like this project is under constant development - notice that after few months since ASP.NET 1.0 was released we already have APS.NET 2.0 preview. Decision: ASP.NET MVC (but would like to play with Django… :) Maybe next time…
2. Database and ORM
I had experience with both SQL Server and MySql. Like both of them. But since decision concerning main technology/framework was made on advantage of microsoft technologies i decided to choose MS SQL Server for this task as well. Second choise is for object relational mapper. Here, knowing we are going to stick to .net we can choose among: NHibernate, SubSonic, Entity Framework, Linq to SQL. Lets play with Google trends again….
As expected NHibernate is a leader. It is no surprise as NHibernate is a quite mature - especially in IT world (5 years , wow, that’s a lot!). Another interesting ORM is Entity Framework - as according to some Microsoft officials this is going to be a main line in the future. For me is no much difference. There is some buzz recently concerning new release of Entity Framework - version 4 - should be released together with .net 4.0 and visual studio 2010. There will be a “model first” approach and POCO classes. I’m excited. VS 2010 + .NET 4.0 is about to come in few months so i guess i will play with 1.0 version of EF and then immediately switch to newer one as soon as it is ready… Decision: Entity Framework
No doubts this time. jQuery is the most popular one. Plus you can use Google’s CDN. Plus it ships with Visual Studio on MIT licence. Plus - it is just brilliant and has thousands of plugins…. Decision: jQuery
This article is not a comparison of technologies. Remember, that i do not compare asp.net with python, mvc with django. I just choose tools to work with. Having Google Trends as a way to help me make a decision is a tiny add-on. Just to make sure some technology/framework/library - thus community - is not dead already. As i need help, like most of the developers. Life is brutal - although i would like to play with some alternatives i need to face the truth and i choose those that i feel most comfortable with and will enable me to deliver app in certain period of time. Uh, long post. time for ice-creams … :)