Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Agencies should adopt open source, not disclosed source, development, release, and maintenance policies #121
Open source does not simply mean government software for which the underlying code has been published. In the industry, that's called disclosed source. Instead, open source is about growing communities around shared challenges. Pursuing that higher goal has several implications:
Agencies must abstract business logic. There's an insane anti-pattern in government that suggests that all software should be so purpose built, all application logic so hard coded into the program itself, that changes to policy require multi-million dollar investments in the software, software that by virtue of being so application specific, is of no value to anyone other than the agency. Even if published, that's not open source.
Instead, software should be modular by design and flexible from the start, with deployment-specific variable and other business logic abstracted to databases or other configuration variables. Put in practice, where there's a common problem, there should be the possibility of a common platform, not the inevitability of two divergent applications, either of which may or may not be published. That benefits no one, the agency included. Again, open source is not about published code. It's more a design philosophy.
Open source is not a verb. Successful open source projects are open source from day two (if not day one), are not so purpose built as to render them useless outside the agency, and do not participate in the open source community solely to garner good will or short-term microeconomic efficiencies. Instead, great open source projects are open source, because they know their software is better as a result.
Specifically, I'd like to propose that any time the policy requires that an agency "release" software, that the agency be required to "release, maintain, and encourage community contributions".
Whether internal to government or with the public, only by adopting more open development methodologies, and seeking to grow communities around shared challenges can the promises of open source be truly realized, both by the public sector, and by the private sector.