Most projects use some kind of content management system to create and edit content for our applications. In this post I want to share some ideas on a Subversion and Webdav based content management system. Please read on after the break!
There are a lot of projects written in java with some frontend technology like JSF, Flex or AJAX. Most of these web-applications need some sort of storage mechanism for content. Dynamic content generated by users or admins or even some static content that needs to get managed in a central place. Most projects upload this content to a database and write their own frontend management tool upon it. Think about a user uploading their personal picture, or email-templates that need to be managed by administrators, even simple texts that are displayed on the website. All that content needs to be managed without bothering the programmers every time they want to change a sentence on the website or in a email.
CMS
Luckily their are lots of (opensource) content management systems (CMS in short) available out there. There are two kinds of CMS systems, one is targeting document management and the other is targeting web-content management. What we want is to manage documents, not to create websites using a CMS.
Alfresco
A CMS we are using often for our projects is Alfresco. Alfresco is a very popular opensource java CMS, but like all software it is not perfect. It has a lot of functionality in it, it is large, slow, eats lots of resources and the interface sucks. When thinking about it, of the 1000+ features Alfresco offers we only use about 3:
- Secured by login
- Ability to upload, download and edit files.
- Auto versioning when editing files
There has to be a better way right? What DO our customers need?
- It has to be secured by a login
- They need some way of accessing the files and it has to be versioned
- We have to be able to access the files from our java code.
Another problem using a CMS could be synchronization over multiple servers, think about a test server, acceptance server and production server. When there are files changed on the production server, we want to have these files synchronized to the other servers. Same goes for the test server. When we created new features and upload new files to the test server, there has to be some point in time where we need to synchronize these files to the production server. This can be a pain in the ass.
Subversion
Something we all use is SVN. We use it to commit our programming code to a safe location. SVN automatically creates versions of every commit we do, which makes it really safe. Why aren't we using the same technique as a base of our CMS? It is exacly what the customer needs right? The ability to upload, download and edit files in a versioned matter. Some side effects you get from using SVN is that there are lots of great tools available to export, import and merge files between multiple repositories or servers!
Webdav
The only thing missing from SVN is a nice simple user interface for our customers to work with. Webdav is an interface to some shared folder over the internet. When using Webdav it is just like you have a network disk in your windows, the only difference is it works over internet. It would be really easy for our customers if we just offered them a Webdav folder where they can edit all the files we use in our web application. If we could expose SVN through Webdav then the files would be auto versioned too! Luckily SVN offers this exact feature.
Java
The last thing we need to do is to access the files from our java programming code. There are some opensource pure java SVN api's u can use to access the repository and retrieve/write files from it. Another way to go is to access the Webdav folder using java.
The combination of SVN and Webdav offers our customers all the functionality they need, but why aren't there any CMS systems based on these techniques? Are there some major problems i'm missing here? Maybe i'm just not searching well enough, otherwise maybe we should start a project like this..
Please share your experiences, thoughs and ideas!
Subscribe to:
Post Comments (Atom)

1 comments:
Well, the user interface consists of editing files, instead of editing just text. I think that's the main problem with this theory. How do you organize and structure the data? We have to come up with some kind of convention probably. The most basic CMS data storage is key:value pairs. But most users probably also want to do some styling maybe?
I don't think webdav is enough, I think we also would need to make some kind of (simply) gui on top of it. But other than that I think it is worth a POC :D
Post a Comment