Monday, June 21, 2010

What I've been doing for the past year...making a CMS.

Over the past year, I have, ever so slowly, been dropping off the radar of my usual stomping grounds. Basically, I've spent the past year positioning myself in the industry to stay relevant and gear up for the next decade of software development.

Where is the software industry headed? Simply put, we are headed to a very mobile realm. What exactly that will look like is anyone's guess. What fascinates and intrigues me is always-on Internet in the palm of my hand. THAT, to me, is mobile. The problem we currently face in the mobile arena is that no one is making a device I want to program for. I willingly program in two languages: C/C++ and PHP. Since no one makes a multitouch device that I can write plain ol' C/C++ for (yet), I'm left with PHP.

To that end, I've started down a rather interesting path: This past year, I wrote my own Content Management System (CMS). For the past few years I've experimented with all sorts of lame-brained product ideas (some more successful than others). This new CMS, however, is the game-changer I've been hunting for. I'm at the top of my game when I get to do things that are new and exciting that I'm actually interested in.

Without further ado, here is the website for a new open source product called Barebones CMS:

http://barebonecms.com/

Barebones CMS was born from talking and listening to people in the web design and development industry. I generalized each complaint, grouped them together with my own personal pet peeves in web development, and organized my thoughts on what a CMS should look like. I only wanted to write this software product one time, never requiring a major rewrite. The time spent upfront gleaning information was absolutely invaluable.

There was a secondary goal during this process: I was also waiting for enough stable third-party components to come into existence such that my life would be made easier. Barebones CMS relies on several bleeding edge components to get the job done. Three to four years ago, Barebones CMS would have been impossible. Only last year did the final pieces fall into place. There are some pretty obscure components involved.

One of the key goals that became apparent during my listening phase was that equal treatment needed to be given to programmers and web designers. I like to hand-code my websites as do many other people I know. This brought me to the realization that Barebones CMS needs to cater to three different and unique groups of people: Programmers, web designers, and content editors. Microsoft caters and shows love to developers, developers, developers, developers. That formula works really well for them. So, Barebones CMS caters to each group with a unique default widget: Programmers get the Code Widget, web designers get the Layout Widget, and content editors get the Content Widget. Each widget is incredibly unique and accomplishes the tasks of each group's needs.

I quickly realized that I was developing this product for a team environment. Each person has different talents they bring to the table and has different needs as a result. However, each person needs to be able to interact well with the other team members and I ended up deciding I wanted to make Barebones CMS a supporting tool in that team environment rather than creating my own team environment. What I mean is that instead of forcing developers to take a specific approach to developing a website, I made almost every feature of the Barebones CMS completely optional. This leaves the door wide open to developing a site in an infinite number of ways. Teams will feel right at home in Barebones CMS because they don't have to change how they do things if they don't want to.

I also wanted the core features of the product to not get in the way of creating and maintaining a website. For example, I've discovered the frustration of caching systems that tend to get in the way of developing a website. I made it a very specific goal to never have the caching system get in the way or any other system for that matter.

Finally, I spent almost three months carefully documenting each aspect of the Barebones CMS - attempting to make the documentation easy to understand for everyone. During the documentation process, I found numerous annoyances in the product itself that I fixed. When all was said and done, I had gone through 21 release candidates before releasing Barebones CMS 1.0. That is not a typo. Twenty-one release candidates. Most of the issues were annoyances - a few of the fixes resulted in new bugs that got squashed shortly after they were introduced.

If I had to summarize Barebones CMS and compare it against some other professional product, it would be this:

- Barebones CMS is Dreamweaver in your web browser.

However, I prefer not to make such comparisons. Please don't quote me on that :)

How does Barebones CMS relate to the future mobile development? Well, Barebones CMS is a website creation and editing tool inside a browser. With Barebones CMS, it is entirely possible to develop an entire website on a mobile device. Not that you would necessarily want to do that on a mobile device. It is possible though. And possibilities are the drive behind innovation and are what push us forward. The reality though is that mobile platforms have a long way to go yet.

Barebones CMS is a serious, professional, and ambitious project. It is professionally developed and produced, is heavily tested, everyone who has followed my efforts on this project absolutely loves it, and it meets and exceeds what I expect from a CMS. I personally find it an absolute joy to use. Plus I get to eat ice cream and homemade pie tomorrow at a celebration launch party for the Barebones CMS. I'm completely psyched about that. (I still have to make the pies though.)

There are so many more things I could say about Barebones CMS but, since I spent a year on this project, the least you can do is visit the Barebones CMS website. There is a ton of introductory material I haven't even covered here. I really just wanted this post to be a rationale on why I vanished for a year. If you look at my posts over the past year, you can see Barebones CMS in those posts. Anyway, go visit the Barebones CMS website.

One last thing: Barebones CMS is just a tool. My hope is that you will add Barebones CMS to your collection of tools for creating websites and that you will always use the right tool for the job.

No comments:

Post a Comment