Open Systems vs. Open Source
I often get asked about my philosophy on technology, and over the years my simple answer has always—confidently—been: “Open source!” According to the all-knowing font of wisdom (ahem, Wikipedia), Open Source is defined as: “practices in production and development that promote access to the end product's source materials.”
This definition certainly holds true. But more recently, as we've been privileged to create websites and systems for a huge variety of clients, I've realized that we need broader terminology for our development philosophy.
Now my answer is: “I believe in Open Systems.”
I would define Open Systems as products that feature:
- Open Source technologies. All foundational technologies—like application frameworks—are open source whenever possible.
- Web Standards. The software is comprised of publicly vetted, web-standards-based technologies.
- Integration. Software is architected towards integration—not lock-in—whenever possible
- Transparent data. Data is exposed to technologists and non-technologists as much as security and budgets allow
- 100% customer-accessible code base
- 100% customer-owned data
Why is this important? Take the example of templating a website: In a Content Management System (CMS), templating looks at how the markup (HTML/CSS) combines with the deeper functionality of the CMS. In some cases, templating an open source CMS can be cumbersome, with specific nuances that are quite proprietary. Often, it's challenging to do anything unique or different with the content and information stored in the CMS, without the significant technical debt of creating new templates.
A fantastic example of an open system for templating is the open source project, Symphony. Symphony's content model is based on a standards-based data model of XML, and templating is also standards-based through XSL. Considering the non-proprietary way data is accessible and interoperable, I sometimes wonder whether other best-of-breed Open Source tools have lost the heart of Open Systems through the cumbersome and non-standard templating models.
Domain7 designer/developer, Stephen Bau is a leading contributor within the Symphony community. He is currently working on a project entitled xpathr to show how a standards-based approach to templating enables collaboration with teams, using best practices of software development. xpathr gives teams the ability to collaborate with code repositories in Git and co-solve development problems in the managed XML data store and the respective XSL template transform.
So where does that leave Domain7? I know we'll continue to carefully scrutinize the Open Source tools we recommend, based on the open nature of their architecture. My hope is that the communities that govern Open Source projects embrace a standards and the Open System approach and that we'll see content and client liberation through these tools.