Ode to Open Source

I am definitely a proponent of open source / free software and other things. I don’t mind paying a fair price for things that I like and that benefit me: It’s one way for me to speak my preferences to the creators, and it provides them a livelihood and incentive to continue. However, in a way, for both developers and society, open source is all we truly have, available to all to use and evolve. I think this is similarly true for non-code things as it is for code, and the same reasons and advantages can apply, even if the tools aren’t developed to the same degree.

The web industry is filled with open source and free sharing of ideas, methods, and practices. I use open source projects and freely shared knowledge every day to do my job, to solve problems, to improve my work, and to have a starting point that includes work that has already been done and improved upon by others. This job would be a lot harder without open source and shared knowledge, and the results, the countless websites across the world, would be far worse without it.

Open Source Provides

For Developers

  • Code Store
    Developers have a canonical place to store their code. Single developers gain advantages, but teams do even more. Services like GitHub, Google Code, etc provide a widely accessible location to store code, though a similar thing can be done on any server or filesystem. VCS tools make grabbing and working on the code much easier.
  • Speech
    Developers can speak through code what they think is useful and how they think it should be implemented. In a more general sense, they can speak about their practices and methods.
  • Collaboration
    VCS tools and services make it easy for multiple developers to work on a project. This can be extended to developers who were not originally part of the project but who make use of it and want to see it improved. Ticket systems and pull requests provide ways for both users and developers to help with the project.
  • Sharing
    Other developers can read a projects code for ideas for their own code. If they use a project and think it should be done differently or want features that the original maintainers don’t want or want to create their own project that is similar, they can fork the project or take portions of it for their own. Best practices are shared. Ideas are shared. Algorithms are shared.
  • Utility
    Projects can make use of other utility projects to help achieve their goals without having to rewrite things that have already been written by others and that aren’t core to the project. Build tools and common libraries and frameworks help greatly speed up projects. We would not be where we were today if every developer had to write their own languages, compilers, and on up, because it would take forever to build anything and there would be far fewer players willing to go through all the hassle. Even if each proprietary offering had their own completely disconnected set of tools, there would be less movement of the same applications and ideas between them.

For the Owners

  • Exposure
    The word ‘free’ is a big attractor to consumers. There is a much lower barrier to entry when you don’t have to pay. Many companies are using a business model wherein the initial entry point is free and then support, advanced features, add ons, etc cost money. In the development community, it is important, too. Free is required for other open source projects, and is important for small developers. It helps a lot to make the project ubiquitous.
  • Development Time
    Popular projects will get a lot of free development from other developers that otherwise would cost the owning company a lot of money. The developers can be a lot more diverse than the company’s own development team and sit outside the company’s culture, making them able to bring new ideas and techniques into the project and allowing them to be untethered from constraints of the company.

For Users and Society

  • Price / Access
    Most open source software is offered for free or with a free version. Anybody can use it, regardless of the amount of money they have and the value they get from it. A poor person who only has enough to obtain a computer can get an operating system and most any software they want for free. A company doesn’t have as difficult a decision on whether or not a tool is really necessary or whether to try an alternative tool if it doesn’t cost money. Proprietary software is only available through a gatekeeper that isn’t there for open software.
  • Potentially Unlimited Lifespan
    If Microsoft or Apple dissolved or stopped developing and selling their operating systems, we would not only lose their operating systems but the entire ecosystems surrounding them. If they were open source, another developer could pick up their code and continue their life. This would require developer interest, but if there is user interest, there will likely be developer interest. Projects that aren’t openly available can disappear, bringing their ecosystem with them. Users and society lose a tool and part of their process and the time they invested in it.
  • Features and Support
    Proprietary projects are limited to the features and supported platforms that the owning person or organization are willing to provide. To some degree, this will follow users’ desires and money, but this doesn’t always happen in practice. With open source, another developer or organization can fork a project and make changes, or contribute their own time to the original project if it is only time / money that is preventing implementation by the owner(s). In a more general sense, for society, there is an easier and potentially faster path for the evolution of the products / software available to it.

Conclusion

I think that open projects are all we truly have because they are detached from their authors, we have open access to them, and anyone can take them and continue them and modify them. They are more directly a part of society and the evolution of what society has available. To some degree, there has always been sharing of ideas and techniques, but I’m glad that the concept and tools are being advanced. The non-software industries have improved in this area and I would like to see them move closer to the degree of what’s available in the software industry.