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….
I want to enable heavy posting, answering, commenting on the web site. For that i need some rich text editor.
There are generally two types of rich text editors: WYSIWYG (What You Sea Is What You Get) and WYSIWYM (What You See Is What You Mean). From development point of view WYSIWYM editors are an obvious choice. Why? Simply because most of WYSIWYG editors produce code of really poor quality, not to cal it sh**y. But for majority of users – WYSIWYG editors are more natural – simply because most of them are familiar with MS Word. And it is a user that we really care about making internet web site. And I plan to make an application for all. Including my grandmas… How would i explain them how to use markup editors?
There are some mature WYSIWYG products, like tinyMCE and CKEditor (previously known as FCKeditor). The only problem with them is that they are so heavy (above 100KB). That is way too much. Especially when I don’t need new MS Word. I just need few basic actions: bold, italic, list, link. That’s it. Nothing more. Why would i need some advanced features for posting questions or leaving comments?
Now, the tricky part with WYSIWYG editors is that you might get a poor html code. Moreover, this code might differ depending on user browser – as most of previously mentioned editors make use of some browser’s build-in features. Making library that will help me to parse and “fix” user code – to change it info semantic html is very, very difficult and tricky. So note for everyone – don’t do it yourself. There is a library that might help you with that: HtmlAgilityPack, and it will definitely help me! Hey, check – after few quite years there is a fresh release of 1.4 beta.
Decision: jwysiwyg for now. Changing that shouldn’t be a problem…
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 …