Monday 5 December 2016

Open Source Musings



Developers have a long history of sharing the fruits of their labours with each other, as software development became a commercial activity and not just for hobbyists this concept of sharing was eroded.
In the later 90's several organisations were founded to promote the concept of open source software to not only share code but to commit to developing it in the open for everyone to see and contribute too.
Open source is now a core part of the software development ecosystem with everybody from backroom coders to large enterprises consuming it and contributing to it.
So is using open source now a no-brainer, a moral obligation? As with most things it depends, there are benefits and disadvantages.
Free at the Point of Need
The most obvious benefit to open source is that it is generally free to consume. Aside from the obvious, this removal of a barrier to entry can foster increased innovation and enable the faster development of new ideas.
However its important to remember that free doesn't mean unlicensed, whether it be MIT, LGPL or BSD the majority of open source projects will come with licensing requirements before they can be used and its important to pay attention as to whether or not this fits with the project your working on.
The absence of a license is also not necessarily a good thing as it means a lack of an agreement between you and the writer of the code over acceptable use.
Finally being free means you have to adjust your expectations on some of the services you might expect when dealing with proprietary software, once of which is support.
While many major open source projects have a thriving community if your project becomes over reliant on a small open source library it may not be reasonable to expect round the clock support, you have to be prepared to take responsibility and dive into the code base yourself.
Flexibility to Break
A major benefit of open source is the freedom it allows to take something that is close to what you need and adapt it or add that killer piece of functionality that you think would really increase its usefulness.
The ability to see under the hood can provide inspiration to see many different ways something could be improved as well as enabling you see the solution to that bug that has been causing you a headache.
However in software development where there is change there is always the potential for instability and the threat of complication being introduced.
When assessing an open source project take the time to look into the community behind it and look to see how the project has evolved.
Does the project have a history of uncontrolled change causing instability or is there clear leadership within the community to steer the ship in the right direction?
An open source project is more than just the bits and bytes of the code itself its about the community of people who drive this code base, if the project becomes important to you these people will be as much your colleagues as anyone within your own organisation.
A Change of Perspective
In a traditional commercial approach to software development the code itself is a means to an end, part of an overall package being sold to the end users who require the features it implements.
In an open source project this view point changes, the code becomes very much centre stage, when your users are developers it brings a different mindset.
Developers are details people, they are more likely to concentrate efforts on an optimisation or an improvement in quality.
Developers are also generally opinionated people who have a well defined perspective on how they apply their craft.
Whereas the commercial development of a software based product is likely to be governed by the drive for new features for end users, the development of an open source project is much more focused on the needs and wants of the developers that intend to use the publicly available code base.
This change of focus doesn't necessarily have to be labelled good or bad it is simply different and what attracts many to open source projects. As with any venture that is collaborative it means that not everything will go in the direction you want it to.
Open source has many advantages and its introduction into the software development ecosystem is to be welcomed but the choice to use it should be taken based on more than just the fact that the code being made available can fix your problem.
It should also be based on an intention to engage with the community that supports it and to realise that although the software is free it comes with certain responsibilities to play a role within that community.
The collaborative nature of software engineers is admirable and we are fortunate that sharing the code that represents our currency can be made so straight forward but whenever you embark on a new journey it is advisable to look before you leap.

No comments:

Post a Comment