Ambitious? OH YES
September 4, 2008 1:13 PM   Subscribe

Due to my nitpicks with Drupal, Joomla, etc, I want to learn to program a custom web content management system. I have very little programming experience, so where do I go from here?

Oh man isn't it annoying when some newbie says "I WANT TO PROGRAM" and expects you to point him to some magical book that will tell him exactly what to do... Well yes it is and here I am asking exactly that!

So what do I do now? What language do I need to learn? What other stuff? I guess what I'm looking for is a complete guide from idea to implementation with my limited skill set (a little php and other traditional site building skills)

I realize that a ground-up coding project is probably a little ambitious for a novice, so maybe a good, simple open source project to modify?

I dunno, you folks are the experts. Let's hear them ideas, hive mind!
posted by Willie0248 to Computers & Internet (13 answers total) 7 users marked this as a favorite
 
I want to learn to program a custom web content management system.

I realize that a ground-up coding project is probably a little ambitious for a novice, so maybe a good, simple open source project to modify.

Which is it?
posted by bricoleur at 1:21 PM on September 4, 2008


Response by poster: Both or either, depending on which you experienced folk think would be a better idea for me. I am open to suggestion! :)

I would imagine the same principles apply to each, and either way I need to learn the language in which a prefab is written.
posted by Willie0248 at 1:25 PM on September 4, 2008


I learned on Zope and Plone, which are both written in Python, and found them both fairly easy to modify.
posted by dolface at 1:28 PM on September 4, 2008


Best answer: If you can't currently bend Drupal to your will, it seems unlikely to me you'll easily be able to learn to build your own CMS. Learning enough PHP to customise Drupal, which is exactly what you're asking for - an open source CMS - seems like a vastly more logical approach.

Having said that, if you really want to roll your own, I would suggest Django and this book. (Get the print edition.) Django is nice because it automatically builds the admin interface for you as you build front end functionality. This makes for very efficient builds.
posted by DarlingBri at 1:30 PM on September 4, 2008


Response by poster: Ah, that lookds like something I would like! Is Drupal coded entirely in php, or will I need to learn some other tenchomancery?

And that Django stuff looks pretty much like an ideal long-term self-teaching project for me! I guess I need to figure out python before diving into that, though.
posted by Willie0248 at 1:43 PM on September 4, 2008


Best answer: I hope this doesn't stray into the realm of off-topic, but I went through the same process about six years ago when I started dealing with websites that required more complex content management systems. I looked around for a few weeks, doing research, and came to the conclusion that it would be a better idea to spend my time building my own custom system than researching and learning about and customizing an existing system.

This was a mistake.

I still manage several of the sites I built during that time, and they are much more difficult to manage and to keep up to date. I am not talking about the interfaces. The interfaces are great because they were all custom built. I mean keeping up with security issues, managing feature creep, and dealing with structural changes, and managing scalability are all much more difficult than these same tasks in Drupal and Joomla.

The problem is two fold: One, the greatest strength of a custom design often becomes a weakness as a site grows: A custom solution trades simplicity for flexibility. It only has to work in one place. It only gets tested in one configuration.

Two, you have no community support. No one else is developing new modules that you can use or even just use for inspiration. No one else is discovering security problems. (This cuts both ways. Yes, no one will know the specific security problems with your custom solution, but any security issue related to the web server environment or scripting language will leave you vulnerable while big projects will catch and fix the problems.)

Building your own is not a bad project. You will learn a lot, and that knowledge will be useful as you take on bigger projects. But don't run an big project on a custom CMS without serious thought. Yes, there are times when it will be appropriate, but the costs are very high in the long term, so you need benefits to match.

There is also the half way solution, using a framework like rails, code igniter, or cake. This gives you a lot of the advantages of both custom and premade systems. However it also comes with a lot of the disadvantages of both.
posted by Nothing at 1:55 PM on September 4, 2008 [2 favorites]


Drupal is totally php yes. If I were you I'd do as Darlingbri says, learn to adapt Drupal or Joomla etc to your needs rather than inventing the wheel.

You'll want to know php and also MySql probably. A bit of javascript never hurt no one either, and it's cool these days aparently.
posted by twistedonion at 1:55 PM on September 4, 2008


Drupal is written entirely in php, and there are many good tutorials on developing custom modules.
posted by Nothing at 1:56 PM on September 4, 2008


As an alternative to the aforementioned CMS suites mentioned, I must (once again) highly recommend Textpattern. On the projects I've used it on, it's allowed me to customize my sites exactly the way I want. I know that's not really a direct answer to your question but it's something to consider if you decide to hold off on learning a programming language.

Thoroughly learning a scripting language (especially your first) is not an easy task, especially if you're not predisposed to such things (I don't consider myself to be, and it took me a loooooong time to get to a spot with PHP that I considered to be "low intermediate"). However, this is offset by the very rewarding experience of designing your scripts from the ground-up, as well as being able to understand problems in others' scripts and fix them. Just know that there's some great projects around that would probably fit your needs (such as Textpattern) that are managed by people who are usually very concerned with matters such as security and scalability (which, in my experience, is not usually forthcoming in the beginning PHP coder). If you wish to use such an undertaking as a way to learn a scripting language, I say go for it, and good luck. I'd give PHP a go as it's very "forgiving" in syntax and there's an abundance of very good books on learning it. And I'd highly recommend picking up a book or two rather than using online tutorials; it helped me out greatly, at any rate.

I don't know a whole lot about it yet, but I'd also take a look at Appjet, as it seems to be a service that enables easy web app creation for beginning programmers.
posted by kryptondog at 2:38 PM on September 4, 2008


Have you ever considered taking some programming courses at your local community college? Seriously, they will teach you how to code, it's their job.
posted by judge.mentok.the.mindtaker at 3:21 PM on September 4, 2008


I've been in the process of building my own CMS for three years now. It is now a point of pride, and I will finish it, dammit. But if I hadn't invested some serious time into it, and didn't have a few bets riding on it, I would scrap the whole damn thing.

Yes, it's been hugely frustrating, largely because, like you, I started with little-to-no programming experience.
posted by eclectist at 3:50 PM on September 4, 2008


I built my own CMS with knowledge gained mostly from this book. I use WordPress now. The small annoyances with the (very few) things I can't customize without a lot of trouble are nothing compared to the giant annoyance that is maintaining your own novice-programmed CMS. You should find the open source CMS closest to what you want and customize it. As a bonus, you will probably learn better programming practices this way.
posted by fidelity at 4:18 PM on September 4, 2008


This is going to come off a bit snotty, but: you do know that there are a like a gajillion CMS's out there, right? I'd imagine that you might have better luck looking for a CMS that has a feature set more in line with what you're looking for, instead of reinventing the wheel.

CMS Matrix has a nice tool that lets you compare the features of up to ten different CMS's at a time. And they have hundreds listed.

Oh: if, like me, you found Drupal maddening to customize and even more maddening to find decent online support for, check out CMS Made Simple. Dopey name, but it's quite elegant, does quite a bit, and has a decent-sized community. And you don't have to wade through the documentation nightmare that is drupal.org. It's not geared towards community-based sites, though, so if that's what you're going for, it's probably not your best choice.
posted by DLWM at 4:55 PM on September 4, 2008


« Older Apple iMac G5 bootup problem   |   Does my tile limit my paint options? Newer »
This thread is closed to new comments.