LearnDeveloping a better CMS

Drew Wilson
writes on August 13, 2008

For sometime now I’ve dreamed of creating useful software for my fellow designers and developers. Recently I’ve spent my time turning that dream into a reality. I’m not an expert or a billionaire, just an average guy wanting to share my experience with you in hopes you can take something valuable away from it. Enjoy.

Dissecting The CMS

The Problem

Somehow the three letters — C-M-S — when put together bring about completely opposite feelings in people. Some adore them and some abhor them. I’ve always been somewhere in between.

One of the main reasons I was never sold on any Content Management System was that last word: System. As a designer I don’t like having to hack up my beautiful design to try and get it to work with –fill_in_the_blank– CMS. It is the rigidness in the idea of a “system” that never seemed to work with me.

The Solution

Enter the CMT (Content Management Tool). Three years ago when all of my clients started needing “dynamic” websites that they could update themselves, I was forced to spend all my free time writing my CMT. It worked great, extremely hacky, hardly any features, but great. As my client list grew, so did the amount of hacks and feature additions for my CMT. Over the course of those two and a half years I had re-designed the interface twice. Eventually I realized, “Hey I really have something here.” And in January of 2008 I started re-designing and re-developing my CMT from scratch. All code thrown out the window, and built from the bottom up. Today it is know as: Firerift.

Firerift is in my answer to the CMS problem. I took the way I normally develop a site, from Photoshop all the way to deployment, and built something that compliments the process. Not something that constrains me to work within a certain “pre-designed” system. Let’s take a deeper look at the way I feel a CMS works best (especially for all of you designers and developers who share my thoughts on this CMS problem).

For this next part I am going to need you to forget about what the typical CMS does, because Firerift works differently. You see, Firerift is a Template Independent CMS. That means you design and/or develop how you want, and then plug Firerift into the portions of the site where you want it to manage that content. Firerift will scour your code looking for any Firerift Code Snippets and convert them into the corresponding function.

For example, the following is a simple blog page using Firerift:

<html>
<head>
	<title>My Site</title>
</head>
<body>
	<h1>Welcome to My Site</h1>
	<p>I hope you enjoy my Blog</p>
	{{blog}}
</body>
</html>

Firerift will find that “{{blog}}” reference and convert it into a full featured blog that is 100% managed from within the Firerift admin. Now this example is very simplified, there would be more parameters added to the “{{blog}}” (like which blog to pull down). But for simplicity sake, this is pretty much all it takes.

So you can see the flexibility that Firerift offers, you designate what gets to be managed in the admin. This lets you design and code however you want, there are no limits or template restrictions. Also, you have access to the XHTML structure of every function (blog, galleries, etc.) from within the admin. Allowing you to output the data in any fashion. Alternatively you can create “Pages“, allowing you to manage the whole site inside the admin, rather than just portions. It is this “anti-system” that enabled me to easily build truly custom websites for my clients.

Welcome to the wonderful world of Content Management without template restrictions.

Expendability

A big problem I think CMS’s are prone to is “feature bloat”. You look up in the menu and there are ten links, and each links has 454 sub links (a mild exaggeration). One way I think this can be solved is by creating a CMS “Core” that is powerful and offers only a handful of great features, but also give the core the ability to be extended. This eliminates feature bloat out of the box and gives users a powerful but simple interface. Then if you decide you need more functionality, you can install extensions or plug-ins. This gives you the ability to determine the complexity of your CMS.

Firerift enables any developer (really … any developer at all) to create plug-ins or extensions for Firerift. Developers can then package up and post these plug-ins or extensions on the Firerift website to share with the community. Thus making Firerift a CMN (Content Management Network – watch out I’ve got a lot of these acronyms). What does an extension do in Firerift? It literally extends the functionality of the software itself. Meaning, you can add features to Firerift.

I can’t say all this and act like I came up with the idea, because I didn’t. Many people before me have used this great idea, and I have to give a shout out to Shaun Inman. What he has done with Mint perfectly demonstrates this.

Design

Ease of use is huge if you are going to be spending a lot of time in a particular application. Also, let’s not forget about the fact that some small business owner is the one who will be updating his website everyday. Good, intuitive design is a must if you are going to be handing the reigns of a CMS over to your (technically UN-inclined) client. That was a top priority on the latest re-design of the Firerift admin. By keeping the design similar from page to page, using panels for information sets, and by using clean and clear design the end-user will feel comfortable and know where he/she is at all times.

Wrapping It Up

A Template Independent CMS is the best CMS in my opinion. Firerift was developed as a solution to my problem, making it a very useful piece of software for me. I understand that Firerift may not be for every project, because some people prefer the “system” architecture. But for those who develop like I do, I hope Firerift will be as big of an asset to you as it has been for me.

The Business Side of Things

Going solo and creating a new web app is always fun and exciting. You are the boss, so you decide how things work, what goes where, and when things need to get done. Exciting, challenging and fun. Then the preposterous idea of selling your creation to others who may find it useful pops in your mind. Your brain immediately takes you to a magical land where you have an infinite amount of money, a 400,000 sq. ft. home, and you never need to work again because your creation generates “passive” income. Suddenly you snap back into reality with even more determination to make your project the greatest app ever put into code.

Now to clarify, I am not all about money or anything. In fact I love where I am in life and I know for a fact money will never bring happiness. But that&rsqou;s not to say that at some point we don’t all have a passing thought like the one above!

After the “high” of developing your own web app wears off and you are stuck in front of your computer writing the (what seems like) 1 millionth line of code for the fourth time over, the question hits you, “How am I, –your_name_here-, going to distribute, support, market, and sell this app all by myself?” The task can seem daunting, and here is how I went about it.

The Product

I started creating Firerift, a template independent CMS, about 3 years ago with no initial intention of releasing it to the public. I only used it for my client’s websites. As things progressed I decided I wanted to release it to the public. “But how?” I thought. “The code is too hacky. What if someone looks under the hood? How can I provide support for users? How am I supposed to legally protect my app? What kind of lawyer knows anything about the web industry? How do I market this to my target market?” All these questions and more were on the front of my mind.

The Connections

One thing I knew for sure, I needed to get some help developing this app so it can be rock solid and expanded upon in the future. I am not the greatest developer, I was not even using a framework for Firerift when I started out. I was just using the “Drew Wilson Framework” (which basically involves a lot of embedded MYSQL). I knew this was not as solid as something Google would do for example, and I wanted it to be. Luckily I know a genius developer fluent in pretty much any language, not limited to just web languages. Basically if I could have anyone in the world write Firerift with me, it would be him. He already had a great job, and I didn’t have any money to pay him. But I knew it would be well worth it to have his expertise. So I went looking for some money.

The Money

“How much should I get?” I had no idea. But I knew that I did not want to get into serious debt over this. After all, I have an amazing wife and not so amazing mortgage to take care of. I knew that any advertising at all would be the dumbest waste of money. My target market is web developers. They are on the web 24/7 and you don’t need an ad on TechCrunch to get their traffic. There are plenty of other free alternatives. Design Gallery sites, ask others to blog about it, etc.

I knew I would be doing part-time freelance work on the side while doing Firerift at the same time. So I figured I needed the amount my developer would charge plus 2 months of full living expenses. Why only two months? Because before I would take the money I would get as much done in my spare time as possible, while still freelancing part-time. This really helped a ton. I built the Firerift public website, wrote some documentation, did all the final design for and basic XHTML/CSS, everything I knew I could do on my own and didn’t need extra money for. That way I could take out a smaller loan. Then I started the final development phase with my developer for the next 2 months. It worked out great. Oh there were bumps, and not everything went as planned, but that is just fine when creating your first app. It should be a learning experience. I now know a ton more than before, and have a very solid idea of how to approach my next app.

The bottom line when taking out a loan or borrowing money is: make sure you are comfortable. There is always going to be an element of risk (that’s what makes us entrepreneurs), but be smart about it. Ask advice from every successful business person you have a relationship with. And when selecting a developer/designer/whatever make sure it is someone you trust and is better than you at whatever you are hiring them for. Hire up, not down.

The Legal Issues

During those 2 months I had to get the business side of things built up. One of the items I went for first was licensing. Art Neill and his team of lawyers at New Media Rights were awesome at helping me get the licensing issues all worked out for Firerift. They specialize in the tech and media industry, so it was a perfect fit. I was lucky enough to meet them at the San Diego BarCamp. BarCamp is a great way to meet other web industry peeps.

One important tip is to ask. Ask other people in the industry you respect what they have done. It can be very helpful to get knowledge from people who have already experienced the trials of developing a business.

Support

I want Firerift to be easy to use for developers of all skill levels. One of the most frustrating things for me when I started out developing was the lack of documentation or the unfriendly way the documentation was written on various apps or software. If I had it my way, there would have been someone there to walk me through step by step.

Enter the “screencast”. An awesome way to help developers of all levels understand and better use your software. I will be creating literally as many ScreenCasts as I can for Firerift, to help make using and customizing Firerift as simple as possible. It can be very time consuming, but worth it I think in the end. The best ScreenCast software out there is ScreenFlow, hands down.

All Said & Done

So by creating Firerift I have solved my CMS woes, and hopefully yours as well. All this being said, soon I would like to declare Independence Day for all of my fellow designers and developers. Because soon Firerift will be available available at: www.firerift.com

0 Responses to “Developing a better CMS”

  1. Hmm… This seems pretty interesting. A friend of mine never really likes the cms… I’ve never had a problem with it.

  2. I really like the basic idea. Nevertheless, I don’t like how much advertising is going around.

  3. Thank you for sharing is awesome information… was quite helpful

  4. Can someone tell me what is ground breaking about their system?

  5. donnaklopez on April 12, 2009 at 7:13 am said:

    Why do the solar companies need to go to all of that effort to raise the money? When new fossil fuel plants are built, they’re frequently the subjects of substantial public financing, and a state or federal bond issue— Karls Mortgage Calculator even at costs in the hundreds of millions of dollars

  6. I like the direction what you give on this post, thanks.

  7. The beginning of this article was great… However, it turned into a major advertisement at the end…
    Outsiders opinion is all…

  8. The beginning of this article was great… However, it turned into a major advertisement at the end…Outsiders opinion is all…

  9. thank u for information

  10. Great post. I'm thinking about developping an app too and this article was very useful. Thanks for sharing.

  11. Great post. I'm thinking about developping an app too and this article was very useful. Thanks for sharing.

  12. Coming fall 2008??? Where is it?

  13. I cant wait. Thank you for a great site and ideas!

  14. Any update on when Firerift will be available for download? Sounds like what I've been looking for.

  15. Any update on when Firerift will be available for download? Sounds like what I've been looking for.

Leave a Reply

You must be logged in to post a comment.

Learn to code with Treehouse

Start your 7 day free trial today and get access to hundreds of video courses in web development, design and business!

Learn more