Wednesday 14 January 2015

The Open Source Community

Do you know what the community of open source is? It's a term that really doesn't mean anything in particular. Is it a term that you have ever heard before? It probably should not be a term you have heard. However, it is a term that people should understand.

OK, now that sound like total nonsense, doesn't it? What on earth am I talking about? Well, the community of open source is a useful concept, even if it doesn't really refer to anything in particular.

Open source software is software that has two characteristics. First, the source code is available for the end user to look at, review, and change. Second, there is a process for users to submit changes back to the main branch of software. There are other common traits, but these two are common to all open source software. There are other open source implementations, such as hardware, research, and so on, but software is what gets the most attention because of the closed nature of compiled code, and the ease of sharing the source code.

The nature of open source naturally gives rise to communities. This can be suppressed, and does occasionally happen when the project is managed by a company and developed for profit, but it is tremendously valuable. The community is a loose grouping of developers, users, and designers, many of which fit into all of those roles.

So why is this beneficial? This is helpful for several reasons. First, developers do not find bugs. Users find bugs, and try to communicate then to the developers. When the user is also the developer, then they can figure out the bug more easily. Second, there are more developers potentially available to fix the problems. Third, it speeds up the development cycle by encouraging the developers to work on a specific issue until it is finished. They also need to finish it so that the remainder of the project can move forward. Fourth, more developers seeing the code means best practices are more likely to be followed. Fifth, that number also means that problems are more likely to be seen.

There are also, however, issues with some projects. Because it is owned by the community, some projects do not have full time developers, and the project may not move forward as quickly as it might. Second, open source communities have trouble attracting designers to keep the design cohesive. This can also easily in too many options and settings that cannot be easily found. Third, there can be a lack of somebody responsible for the whole project.

There is also another interesting aspect of open source software. Changes that are only being used privately, such as locally used software do not need to be available to the community. Software that is only used internally at the office can be modified without any issues. Of course, if you do, there is the risk of becoming incompatible, but it is easy and allowed. Software that is sold or used in products used by external users (clients and customers) often requires that the changes and full code of the open source software be made available, though not always.

So why would developers contribute to an open source project? Well, it improves their skills by practising and being exposed to other code. It gives them tools that they can improve if something goes wrong. Also, it's good to belong to a community. Anyone is welcome, and everyone can participate. Act! Belong! Contribute!