When you think about open source software you probably think about some applications made by some students in their free time. Because open source, there is no money in that, right?
Some larger open source systems like the Mozilla Foundation clearly show that the system can work on a commercial scale as well. Mozilla is an open source browser; everyone can use the source code to make his own browser. And nevertheless the software is free and everyone can get their hands on the code, in 2010, it earned a revenue of $123.2 million. It might be surprising that most of this revenue is provided by Google which by the way also owns a browser called Chrome. The answer is simple, not only is their Chrome browser partly based on Firefox , in return for the money, the Google search engine is included in Firefox, not unimportant for a browser which has quite a market share. Several Linux distributions, based on the open source Linux-kernel, use a different system where instead of selling their software they sell the support, training, and integration services that helps customers in using the open-source software.
But it’s not all commercial. Some open-source software projects have no business model behind it. It just exists through a large community of contributors to the project. And it might be questionable what drives them because at first sight those contributors get nothing in return. The answer is simple, they will meet a lot of great like minded people who may end up connecting them with interesting paying work and of course, giving something back to the open source gives them also that mushy good feeling.
The source code of a program are the written lines of code in a specific programming language. After this code is compiled into something that your computer can understand, like an executable, the source code is not visible. However, if developers chose to make their source code public, the program is open source. If they chose to do not, it is closed source.
Source code that is open source doesn’t mean you can do whatever with the code. It’s still property of the developer and in most cases it is licensed in a way that says how you can use or change the code. For example some licenses require that any software created using the source code also needs to be released as open source, with full credit to the original developers, so improvements can go back to the community.
Using open source appeals users for different reasons: low or no cost, access to source code they can change themselves, a large community that ensures quick fixes for any new issues that surface and it is perfect clear what the programs does behind the scenes, not unimportant towards privacy concerns.
Large corporations like Microsoft or Apple are known for keeping most their code to themselves and don’t allow others to see, use, or improve upon it. Of course, the closed-source choice often makes sense from a business standpoint.
So large companies have the intention to keep all of their software closed source. Are open source programs not profitable for companies? If they are not created by companies, who invest their valuable time in writing them?
Terry Blanchard wrote an interesting post about why cross-platform products are doomed to fail. Blanchard mentioned drawbacks of cross-platform products like being slow, not efficient with the CPU or that they don’t take advantage of native OS features.
“Why are these cross-platform products so bad? Do users even know if a product is using a cross-platform development environment? Yup, they sure do. Users, even if they’re not geeks or developers like me, can smell a cross-development turd.”
You can read Blanchard doesn’t like cross-development at all. So how do you explain that VideoLAN, a cross-platform media player (built using Qt), is the most preferred media player according to different polls . VideoLan is so popular because it is small, fast, cross-platform and reliable. What did we miss here?
Blanchard made the difference between native applications and cross-platform applications. What he meant with cross-platform applications are non-native applications. Non-native applications need some interpreter software to run the software, this interpreter software is most of the times cross-platform and this makes the non-native applications also cross-platform. Examples of non-native applications are Java applications, but also web applications fall into this category.
Conclusion, you can’t just lump all cross-platform applications together. It’s not because most non-native applications are cross-platform that all cross-platform applications are non-native applications.
If you follow the link at the bottom you’ll find an article where they give a top ten of Java IDE’s. Although this is limited to one language, this article is still quite interesting because it goes into detail about the good and bad qualities of the different IDE’s. It also mentions whether the IDE is open source and free-to-use. Some of the abilities are found often in the top IDE’s.
The possibility to enlarge the coding field to encompass the entire screen is very appreciated by developers. This mode gives the user more focus and a better overview of the code he is working on. Also the ability to change the layout of the different parts of the editor, such as the project view and the menubar, are very well liked.
When it comes to more practical abilities, auto completion of expressions is almost a basic feature. Also block text editing is often found. So to be able to comment out or indent an entire block of text.
From this article it also seems that open source and free availability of the editor are not such a great concern. While it is true that the two highest rated are both free to use and open source, the third and fourth are not free and have a proprietary license and the fifth while being free to use, also has a proprietary license.
According to a recent poll, cross-platform development is not a top priority. At least that is the conclusion from Den Delimarsky, blogger at dzone.com. Nevertheless, more than 50% finds it important and considering this poll was taken at a website with a mostly .NET user base, this could be even higher. Until recently the .NET Framework was not cross-platform, and even now it’s only possible by a derived framework. So you can imagine the result of this survey aren’t completely reliable, but even so, you can conclude there is interest in Cross-platform development.
That isn’t an easy question. Looking trough some forums it also seems a personal choice. When you start programming you don’t need gimmicks like code completion or refactoring features. You don’t want an IDE with a high learning curve, you just want an IDE that gives you maximum productivity on that moment. In that regard, even Notepad would make a great IDE (despite that it’s technically not an IDE). On the other side, from a full-blown IDE we expect all those gimmicks. But there is not something like the best IDE. Like mentioned before, it’s a personal choice. It for example depends on your platform and on the programming language you will use. Nevertheless, multi-language IDE’s and cross-platform IDE’s seems to have an advantage. Remarkable, the fact that an IDE is open source or not doesn’t seem to care most of the people, in most cases it isn’t even mentioned. Does it make a difference to users whether a program is open source or not? After all, only the fact Qt Creator is open source makes this thesis even possible. It gives us a topic to explore, what is the whole deal behind open source?
Every developer has a favourite platform, let your developer work on his a favourite platform and you will get a happy developer. It’s one of several advantages of using a cross platform development environment. But developing application on different platforms, for different platforms may introduce some problems.
It can lead to the “Works For Me”-Syndrome. A developer assumes it will work on other platforms if it works on his platform. And as there are applications who can be compiled for multiple platforms without changing one line of code, in most cases some things need to be changed and tested. This means you need the resources to be able to test it on all of these platforms. Which cost money and time.
Also if you have the intention to release you program on only one platform you probably find a better platform platform dependent IDE than a platform independent one. This takes us to a next topic, what makes a good IDE?