Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am primarily a programmer developing on windows based OS using C# as my primary language. I am evaluating Ubuntu Linux as an alternate platform and would like to know the best stack for doing web development on this.

I had gone through this thread but it doesn't answer my questions fully. Some of the points I am interested are:

  • PHP/Ruby/Python (What would you recommend?)
  • Is Mono mature enough for any large scale development? Has anyone any real experience using Mono.
  • IDE (including debugging support, intellisense, source control integration,Unit testing)
  • Unit testing framework based on the language recommended
  • Web framework if any.
  • Load Testing tools
  • Web server (I know there are many webservers, but would like to know which one is primarily used by most people)
share|improve this question
2  
Why are you choosing to migrate? It might be easier to answer some of your remaining questions if we knew why you'd like to move. Is this just in the spirit of embracing change, or is there a particular pressing reason? –  Cody Gray Dec 28 '10 at 8:31
    
The primary reason is change and I was always looking to move on the opensource as I had learned a lot from it and then the other motivating factor came up of building an online training academy (and thereby building up a website for the same). And since this is a personal project the cost of hosting on a windows platform along with SQLServer, bandwidth, and diskspace seems to be quite high for me. And linux seems to be a good option for me. –  rajesh pillai Dec 28 '10 at 8:36
    
Bandwidth and disk space aren't cheaper under Linux than they are for a Windows-based server. Open source is neat and all, but it doesn't work miracles. ;-) –  Cody Gray Dec 28 '10 at 8:39
1  
If you're used to MSSQL or any other DB server except MySQL, PostgreSQL would probably give you less surprises than MySQL. –  John Reynolds Dec 28 '10 at 23:50
1  
format c: /y <ENTER> –  Casey Dec 29 '10 at 3:50
show 4 more comments

migrated from stackoverflow.com Dec 28 '10 at 21:23

This question came from our site for professional and enthusiast programmers.

5 Answers

I don't have any professional experience with C# / Mono, though I have checked out Mono develop and it seems pretty good. I have used Qt (C++) more extensively in Ubuntu and the Qt Creator is a great GUI app builder, the framework is also a pleasure to work with.

But you were asking about web development ... I've been doing PHP & Python web development for Linux for many years now, and most of those years my development environment has been Linux as well. Linux really excels at this type of usage, there are many, many great tools available, if you're not afraid to get your hands dirty and use the command line.

Regarding your choice of language, it's really a personnal choice, each has its own strenghts and weaknesses. PHP probably has the most libs available for web dev work, due to it being used for building web pages for a long time. PHP is also supported by more webhosts. But Ruby and Python are both very complete and are more pleasant to develop with. They are also likely to be faster then PHP.

Regarding the web server, Apache httpd is THE standard, used by most websites and almost always offered by web hosts. It is very complete and offers a lot of options and settings. There is also lighthttpd, which has less features but is faster. Both of these will work with all 3 languages. Ruby however also needs Mongrel in addition to Apache or lighthttpd.

Framework depends on language used. In PHP, Zend framework or Yii framework are both very good. Python has Django, and Ruby has Ruby on Rails.

For my web development, I like netbeans IDE the best : does what I need but stays out of my way and is easy to configure. Some people swear by Eclipse though, personnaly I can't stand it. I would suggest trying both and seeing which one you like better.

Unit testing, PHP has PhpUnit which is very good. Python has the unittest module for this, it is part of the language.

Load testing, Apache has a built in tool for this.

BTW, all of the apps / servers / etc listed above are available through Ubuntu's package manager. No nightmare of trying to get everything work properly, as is the case under windows ;-)

share|improve this answer
add comment

I got this Hint from your question that you might be okay with a change of development language. :) here is my answer to the points highlighted by you .

Languge :

PHP:Seriously i won't reccomend using PHP , but the advantage of using PHP is that the web is full of PHP code you can always have a look at it ( but not the downside a large part of php code is badly written)

Ruby: Python : you can pick any of then , but my personal preference is python :) a lot of material is available in form of google code university and google tech talks from google.

IDE : i don't use an ide for debuging the python pdb module works just fine for me , but you want you can use Eclipse / Pycharm for python.

Mono : No experience with mono, so i am not the right person to comment on this.

Unit Testing Framework : Python has unit testing framework built into the langugae.

Web Framework : If you are using Python i'd definetly recommond using django Ruby has an awsome framework too called rails.

Web Server : Apache is primarily used .

Also as pointed out by by a lot of people here that linux hosting is not so cheap , you might want to use the google app engine for hosting your application its the cheapest hosting options i have ever seen , even free :) FYI its the google's cloud supporting Python and java , though support for other language can be extended through JVM.Also you don't have to worry about scalability and Load balancing .

Hope it helps .

share|improve this answer
2  
He seems to have said 'primarily a programmer', not 'preliminary' –  Herman Dec 28 '10 at 10:03
    
Arguments for recommandations ? (which shouldn't be answered as it's a little too arbitrary) –  Chouchenos Dec 28 '10 at 10:24
2  
-1 for not knowing that you can do well architected OO code with PHP, just look at Symfony (symfony.com) as an option for a framework, it beats Rails hands-down in terms of flexibility and architecture along with Doctrine. Bad programmers give PHP bad fame because its easy to make bad code, just as its easy to write sloppy non-OO C++. –  dukeofgaming May 16 '11 at 23:00
1  
@dukeofgaming he never said it can't. in practice it doesnt. Also in what way is Sympony better than Rails? I took a look and it looks like alot more boilerplate. –  alternative May 16 '11 at 23:43
add comment

Language

Web languages are mostly OS agnostic —meaning the OS doesn't matter that much, unless its Microsoft technology— so you don't need to switch to Linux completely, OTOH you should learn linux since most servers are in linux and the most flexible way to maintain your production environment —where your web app runs with real users— is through the command line. My work machines are Windows 7 and I always have a SSH terminal and/or virtualized Ubuntu instance running at the same time.

Whatever web language you choose is fine, but don't choose it based on popularity. Languages are tools and you should choose a tool depending on the work it is intended for. I'm mainly a PHP dev because its simplicity to deploy and because I know how to write well architected and object oriented code, I also rely con Symfony as a web development framework. I know a little of Ruby and Python and they are very awesome languages, however, I don't like Ruby On Rails because it doesn't match the complexity of the projects I work on. I haven't tested Django but I'm really looking forward to doing so. Java is actually a nice option for web too.

IDE

Regarding the IDE, Netbeans has always been my loyal companion. You should also look into Eclipse. Try several before you decide, those two work with several languages, but you might find other non open source ones that work better for you with the language of your choice.

Unit Testing

Regarding Unit Testing, there is PHPUnit, which has everything you'd expect it to have. Java has JUnit, phpUnit is inspired on JUnit.

Framework

Web framework, for me, Symfony all the way... once you get past the learning curve you actually end up being a better developer altogether.

Load Testing

For load testing there is Selenium

Web Server

For web server, the de facto choice is usually Apache, but people also use nginx when performance is critical. If you rent shared hosting you will most probably run into apache. If you rent a VPS or dedicated server, you can use nginx, but you must install it on your own, not that hard though.

To start using PHP with Apache (and MySQL) in a blink of an eye —under windows— try WAMP.

share|improve this answer
add comment

If you are doing ASP.NET and C#. I would advise to stick with Windows. The main reason I see would be Visual Studio. You could also run it in a virtual machine if you want.

Althrough I never used it or wrote any line of C#, I know Novell says in big letters on its website it supports very well ASP.NET and Microsoft solutions.

There are some very big companies using Microsoft technologies on UNIX / Linux.

Don't use Adobe technologies (like Flex). They are costy, not portable, limited to 1.5 architecture, proprietary, ...

But aside from Microsoft and Adobe, for all other languages and especially as you're interested in Open Source, you will find Linux to be much better for development. (At least that's what I think, YMMV)

Your development environment will also be much closer if not the same than the production one and this is a big advantage.

You will get the best command line related tools available, which is heavily used in modern frameworks like Ruby on Rails, django, symfony, CakePHP, etc.

If you're planning to write Java code, you can have most of the tools, e.g. IntelliJ IDEA, NetBeans, Eclipse.

Finally, server software is so easy to install with package management (for example on Debian or Ubuntu). "apt-get install apache2 postgresql-8.4 php5 ..." and you get your LAMP, LAPP, you name it environment without opening any configuration file.)

For everyday / average user tasks, you will find OpenOffice / LibreOffice (now in Ubuntu but it's the same thing without the Oracle logo), Firefox, Thunderbird (I can give you hints how to use it in a MS Exchange environment). They're all open source, complete and convenient. I find them more user-friendly than MS Office and Outlook.

So yes, go the open source / free software road. You won't regret it and will probably never look back.

(However in my daily work, I use Debian with a Windows 7 virtual machine because, even when writing Java, you need to test it out on Windows, especially Internet Explorer that behave very differently from all the other browsers... Safari, Firefox, Opera, Chrome)

share|improve this answer
add comment

i can give you some of the idea

1- Language - Ruby but you can choose others also

2- Mono Support - Not required if using Ruby

3- IDE - For ruby there are some good IDE avaliable

4- Web Framework - Ruby on Rails

share|improve this answer
    
-1 This response might as well just say "ruby or others". Can you add a bit of depth? –  Morgan Herlocker May 16 '11 at 21:10
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.