Solving the Problems of Open Source

Posted: 12/26/2007 1:17:00 PM
The Open Source movement is one of the greatest in the technology arena, but its problems limit the potential to share functionality and information management with a broader community.
Open Source has a huge install base of software, operating systems, databases, JavaScript libraries, graphics and more, but enhancing those Open Source products is beyond the capabilities of the majority of its customers. The biggest problem with Open Source -- is the source.

At Qrimp, we use Open Source products in our software. We use Icons from YellowIcon, JavaScript from in the Yahoo UI Library and AjaxRequest, we love FireFox, and we've even used SharpDevelop once or twice, so we recognize the benefits Open Source brings to all of us, but the product, that is, the Open Source, has a limited audience.

What the audience wants is not Open Source. The audience wants features, products, and software. Most users of Open Source software couldn't care less about the Source Code and even if they did, which I do, they don't have the time or the experience to enhance it. How many of those who use Firefox have ever written a line of code for it? How many of those who use Open Office dive into fix a bug or improve the usability? We haven't. We just don't have time. It's too difficult.

The reason it is too difficult is that there are simply too many ways to write source code. There are Open Source products in PHP, Java, Python, .NET, C++, Ruby, JavaScript... there are too many to mention. The source code for those projects is kept in CVS, Source Safe, BitKeeper, Subversion... How many more? And platforms? Windows, Linux, Mac... How can anyone keep track of it all?

We need to get on the same page. All of these projects, at least the projects focused on web applications all use a standard set of technologies: HTML, JavaScript, CSS, and at the lowest level SQL. These four components are required for nearly any web-based system and developers have to know them whether they are building systems in Java, Perl, PHP, or .NET. For the most part, developers have to know these 4 core technologies to build any successful web system. These 4 technologies are the lowest common denominator of web development -- regardless of platform, development environment, programming language, or browser.

If we can limit the level of experience needed to enhance and distribute Open Source software to this lowest common denominator, we can greatly increase not only the audience of potential customers, but also the field of developers and users who can contribute ideas, enhancements, and labor to the movement.

Democracy and choice are good. We should all be allowed to develop in the language of our choice. Some of us speak multiple languages and some of us program in multiple languages. The diversity leads to a rich and engaging world and is awesome, but it might not be so productive. It takes time to translate from one language to another. It takes time to understand someone else's code, install development environments, make changes, recompile, and integrate your code with the core. If we were all to contribute to every piece of open source that benefits our lives, our computers would be bogged down with compilers, source code repositories, and databases and our brains would be full of algorithms, syntaxes, and constructs from countless programming languages. It's just too much. We are slowing ourselves down.

The way to fix the problems of Open Source is to enable the enhancement of Open Source projects without requiring those who wish to contribute to understand the source. We can't expect everyone to learn the language the product was developed in and we can't expect everyone to understand the code itself. Code is complex.

One of the worst jobs developers are thrown into is supporting someone else's code. Imagine a writer being asked to finish someone else's book or an entrepreneur finishing someone else's company. It's boring, monotonous and nearly impossible to get passionate about it. We need our own projects, we need the ability to develop our own solutions, all we need is a common language to communicate with everyone else who might be able to help us or be helped by the projects so dear to us and everyone who uses them.