Recently I have been thinking more about open-source software, and I think I have come to realize something new. Possibly it is just new to me, but nevertheless, something that hadn’t occurred to me before. That realization is that open-source software, because it can be free of commercial considerations, aligns with software craftsmanship.
I consider myself a pragmatist when it comes to commercial considerations. It is an important part of professional software development to deliver on time and to budget, to weigh the cost against the benefit, yet these crude economic metrics conflict with the motivation of the craftsman to perfect and refine their work. That is where the opensource developer can excel. Without the pressure of commercial considerations, experiments and refactors can be tried and abandoned at will, with efforts abandoned or restarted as the author, or authors, determine is best for the codebase.
Once upon a time, not so long ago, I had an open-source contribution that garnered 100K+ downloads. One big lesson I learned from that was a successful release comes with support requests and backward compatibility considerations that you don’t have before it is being used. Constraints yes, and a good type of pressure, encouragement to improve. I was able to make changes that improved the internal quality* of the code and release new features with relative ease, in spite of the constraints.
Martin Fowler*, in his 2015 Oscon keynote makes the distinction between external and internal quality toward the end of the 15-minute presentation. I’d encourage you to watch it if you can spare the time. You can find the link to the video and more information on software architecture from Martin’s site here.