I just read an interesting column by Jon Udell (of InfoWorld) entitled
Open source and global development, that talks about how Free/Libre and Open Source Software (FLOSS) are eclipsing traditional development strategies.
This blog explores the role of Open Source and Free Software in the corporate environment.
The "Core versus Context" argument is a potent one, and it really makes you think about what is important to your work. Whether it is on the level of an individual working on a small project, or at the enterprise level on large-scale development, decisions are all too frequently made without considering the "core".
Imagine a small software company, called VideoSoft, building an integrated business management system for video stores. It handles rentals, accounts, sales, and ordering. The "core" of the project can be defined as "that which directly addresses the problem domain", ie. keeping track of videos, managing cash registers, and so on. The "context" is anything that is required to implement the system, but does not actually provide domain-specific functionality.
The system will need to store its data, produce reports, run queries, and so on. But VideoSoft is not in the business of writing database software, so they will simply use a 3rd party solution (such as the excellent MySQL and PostgreSQL, both of which are free and open source). By leveraging this 3rd party software, they can focus on the core of the problem domain. Database software is context. Similarly, it does not make sense for VideoSoft to write their own GUI toolkit. They can simply use an existing toolkit, such as GTK or wxWindows, both of which are cross-platform and free/open. So it is clear that by leveraging all these wonderful libraries and toolkits, VideoSoft can make an even better product by focusing on the core, and leaving the context to be provided by 3rd party solutions. And if they need new features, improvements, bug fixes, and so on, they have access to the source code if they need it.
The Apache web server, the most popular web server on the planet, is a shining success story of Open Source software. The full history of the Apache project is very interesting, however its genesis, like so many other FLOSS projects, was to scratch an itch.
It began with some users of the original NCSA httpd server, patching it and improving it. These users were developers and admins from a variety of different companies. Few (if any) of the companies were in the "web server" business, so it was not a "core" concern. Having a solid web server was context for their business, as it provided a platform for serving business content to customers. They could have easily purchased one of the many commercial web servers, however this would have put them at the mercy of the provider's strategic decisions. Apart from paying for the licensing, they would also be paying for support, marketing, corporate luncheons, and covering all the expenses of the provider. They would likely have little say on features, be forced to wait for bug fixes, and most likely be kept in the dark about security problems. (Sound familiar to anyone?)
No one of these companies could afford to build a web server alone. But by individuals from many different companies contributing time and effort, a locus of energy far greater than the sum of its parts, was brought to bear on the problem of building the best web server. And so people came together and built a product, because they needed it. The companies involved (with no reason to compete in this area) stand to benefit enormously, and the fact that everyone else gets to benefit from sharing the code and the product can only generate good karma for those involved.
Since companies compete at their core, they have every good reason to collaborate on their context. So getting involved in an Open/Free software project actually makes good business sense. The company amortises the cost of their involvement, has strategic influence over product features, has access to the source for bug and security fixes, can add their own features as required, can engage 3rd party support as required, and so on. Developers can be involved in the community of users and developers, who have every reason to help each other - instead of calling a 1-800 support hotline, only to be asked for your credit card details. And as Udell's article mentions, the transparency of devleopment in the open directly contributes to the high quality and elevated productivity of such projects.
So next time you are working on a big software project, think about the core, and choose Free/Open software for your context. There is a wealth of software out there, and by leveraging it, you not only help yourself but everyone else in the process. It makes sense!

Leave a comment