I hatched as a software developer in a proprietary world dominated by large corporations with closed source software - it wasn't questioned. As my career grew, the Internet became more and more of a presence and I was exposed to more and more open source software.
Looking back at most of the libraries, I am not talking about application level code, and utilities we wrote for my employers, there is very little of it that was directly a competitive advantage, and even less intrinsically represented what you would consider intellectual property. More and more of those libraries, frameworks and utilities have open source equivalents. It is now common for myself and developers I work with to first look for existing libraries before embarking on implementing such code.
That much has already changed. Many of those libraries might have withered as open source for lack of maintenance, and my employers wouldn't have suffered if they did. If they flourished or at least attracted submissions, then those employers would have benefited - which is happening at my current employer.
Now, looking at what is ahead of us I am starting to think that for a large portion of the libraries and frameworks that we will write, we should be creating them from with the assumption that they'll be made open source. That for libraries, utilities and frameworks this should be the base case, rather than the assumption that they'll be closed and that you'll have to then work to make them open - which it turns out is often much more work after the fact (getting approval, performing the reviews and cleanup).
With the base case being open-source, I think there would be benefits:
- Developers, knowing that the code will be visible by peers and prospective future employers will likely be more disciplined about documentation, testing and design, thus making the code itself better. Just knowing that the world will be able to see your code will likely change the corners you're willing to cut. This should benefit the organization sponsoring the development.
- Individual developers will have larger bodies of libraries and re-usable code to leverage in all of their projects, though this is a benefit to the individual developer more than the sponsoring organizations
- Organizations would more effectively spread out the costs of development, this is a core premise of open source to begin with, though if open was the base case, it would be significantly more widespread
- It currently attracts a certain kind of developer to the organization
- It does not guarantee, but it provides the ability for prospective developers to enter the interviewing process being already familiar with the tools and source code the company is actually using
It feels like this is a trend, at least at the library and framework level - not at the application level in my opinion. This is a varied community, what is your opinion?