An Incremental Approach to Content Management Using Git
thoughtworks.com
thoughtworks.com
I don't know who is behind that org, and whether all the technology they reference is completely valid, but the point is that a CMS that is made up of parts is far easier to deal with in the long run than a monolithic entity.
We're already seeing this decoupling happen a lot in practice with static site generators, but there is a long way to go (static sites are rather limited).
It works with most technologies (we have kits in JS, Ruby, PHP, Java, Scala, Python, ...), and we did release a static website generator based on a JS engine which we called baked.js.
Check us out if you're interested in tech-flexible, design-flexible content management where content is nicely versioned.
https://github.com/fiatjaf/fiatjaf.github.io
It is tangled with the website files, because it runs on pure Javascript, at the browser. And, yes, it only works on GitHub pages because when you click "Publish" it renders the content and commits to GitHub. Later I will make it more presentable, but for now it is working.
The goal is to make a tool that can publish any kind of data you want in almost any kind of format you want. It works with hierarchical documents (which are used for the paths of the URLs) with `kinds` (a markdown article, a table of data, a chart, a list of children documents -- for a list of blog posts, for example). To customize you just have to modify/add templates.
All the working code resides at `/edit` while the published pages themselves reside on the top directory. To create/update/delete documents just go to `/edit`:
It will be interesting to see what happens if they add a lot of images and videos and git starts choking.
The main benefit of adding a RDBMS in this scenario would be being able to run indexed queries using SQL. The text content itself wouldn't benefit much, of course, and would be better off with something like SOLR for search. But there will probably be dates and other loose metadata that is ideal for a RDBMS. If the content in the filesystem ends up with associated metadata in a RDBMS, they may wish they had just put everything in the RDBMS to keep it simple.
http://www.youtube.com/watch?v=asLUTiJJqdE
They refrain from committing to a database server early on so they create an interface to storage and start saving data in files. He contrasts putting the database in the center of design vs. putting the application logic in the center of design.
Then he goes on to talk about hexagonal architecture. A very good talk if you haven't seen it.
Spot on.