Livecode Content Management System
ambassador at fourthworld.com
Sun Dec 3 04:26:15 EST 2017
I was talking about this with a couple programmer friends recently. It
seems almost a right of passage these days for devs to start making a
custom CMS. Some even finish them. :) All of them learn useful
things. One of my friends learned to really appreciate Jekyll. The
other splits his time between Django and WordPress. Neither uses their
LiveCodeJournal.com is completely driven by a not-yet-full-featured CMS
made with LC, all the way down to the data store. And as Robert
Brenstein kindly noted, between my humble WebMerge product and some of
the more recent work I've done building web authoring tools for clients,
I've had lots of time to explore the corners of making a custom CMS in
Right now I'm studying Drupal.
Why would someone who enjoys LC as much as I do and who's already done
so much foundational work set it aside to use an off-the-shelf (OTS) system?
There are many good things that can be done with LC as a CMS. And I'm
not entirely sure I'm completely done with that sort of thing. Maybe
this conversation will turn me around. But for now let me outline my
own journey with regard to custom vs OTS CMS. It may not apply to your
needs, but it's how I got here.
Like anyone else, I started with a list of Pros and Cons (some of this
may seem Drupal-focused, but only because that's what I'm learning right
now; it really applies to just about any good OTS CMS).
Pros for Custom CMS:
- It works exactly how I want it to (usability).
- It has exactly the features I want, and nothing more (lean systems
are more performant, and with fewer moving parts often more secure).
- A standalone admin app further mitigates risk (GMTA Andre <g>).
- It's fun (good to have a hobby).
It's usually easy for me to come up with a list of reasons to indulge in
some fun programming, but that's all I came up with in terms of things
unique to a custom CMS. Once I decided to be honest with myself, the
downsides flowed like ink from Kerouac's pen.
Cons against Custom CMS:
- No matter how much I complain about the learning curve of CMSes,
building one from scratch will take far more time. Realistically,
at least an order of magnitude. Some features, two orders.
- When I need some extra feature in an OTS CMS, I add it in one click.
When I need a feature in a custom CMS, I have to architect it, and
design it, and test it, and then hope it works well with all the other
parts, and hope it'll be flexible enough to handle other parts I
haven't written but will inevitably need down the road.
- Drupal has been used to make 1.2 million sites. That's a lot of field
testing. I have fewer sites. A lot fewer. Two, actually. If I work
hard for months I might be able to turn my custom CMS into something
others can use. That could bring the number of sites up to maybe 12.
- Drupal has had more than 900 contributors. If I do an excellent job
delivering a great, polished CMS with good docs, release it as GPL,
and manage it through Github, I might some day see as many as a
- With a custom CMS, to use it on a client site I'm basically saying,
"I have an unusual toolkit that may or may not work on your server,
and if it does you'll have to work with me forever because I'm
the only one who knows how it works". If I use an OTS CMS I'm
saying, "Any of more than a million developers can help you at
any time." I prefer to keep clients because they like my work,
not because they have no choice.
- Drupal development pays well. Learning it expands my range of
service offerings. A custom CMS is just another LC project,
in which I'm the only client.
- CSS really is fiddly and takes a lot of work to get everything
right. With a custom CMS I'm fiddling and testing on multiple
platforms and multiple device types. With an OTS CMS I just
use what's already there and it works.
- Account management is a non-trivial scope. Wordpress has two
basic user types: authenticated users who work on the site,
and unauthenticated visitors. Drupal adds a third that's
particularly useful for some of the sites I have down the road,
an authenticated visitor, making forums and other social
media much easier to implement. In a custom CMS I'm working
all that out on my own, all the way down to tedious details
like password reset.
- I prefer server-side HTML rendering, but will still need
an API for both the admin tool and another aggregation/pubsub
tools/bots I'll need later on. With a custom CMS I'll have
to study good REST design (though I have found some excellent
articles recently), and write the APIs, which will likely
mean writing a Sinatra/Spark-like framework for them first.
With an OTS CMS I just click a checkbox to turn it on
and then start using it.
- If I'm lucky enough to have a site that becomes popular, with
PHP-based CMSes I have options to move up to FastCGI or even
an Apache module if needed. With LC I'm limited to CGI only.
- I'm sure as heck not going to also write my own commenting
system. The spam filter alone is more than I want to bite off,
and then there's the whole editing UI, account management,
reporting, alerting, etc. In a custom CMS I'd be using Disqus,
which is easy but it means that data lives elsewhere and I will
never have any control over it. With Drupal I can keep
commenting internal like everything else, manage it how I like,
and integrate user content with other features in flexible ways.
- Defining project-specific roles, editorial workflows, versioning,
and the other things needed for group authoring still needs to be
set up in Drupal, but using built-in tools that make most of those
just a few clicks. You can imagine how much work that is to design
and build from scratch in a custom CMS.
- Good theming systems are not easy to design or to build.
- Same with templating languages.
- As much as a standalone appeals to me for admin and even authoring,
I have to say I've come to enjoy being able to work on my Drupal
site from anywhere, on any device, without having to first install
another app on it. Drupal is a joy to work with even on my phone.
- Drupal (and WP and other well-maintained systems) has an entire
security team. I'm just me. And I wear a lot of hats.
- The ten thousand other things I haven't yet encountered but
inevitably will if I were to continue rolling my own CMS.
And perhaps most important of all:
- I need working web sites more urgently than I need yet
As a gadgeteer, this was not an easy decision to make. And perhaps if
my schedule changes I may get back to custom CMSes. It *is* fun. But
for now, and for the things I'm working on, Drupal is an especially good
fit, and it's difficult for me to justify the expense of reproducing
Drupal from scratch on my own.
Fourth World Systems
Alex Tweedly wrote:
> I'm looking for (initial) interest, previous experience, comments, etc.
> Every few [ = 4 to 8] months for the last few [= 2 to 3] years, I've
> been either building a new website for someone, or making significant
> changes/enhancements to an existing one. Almost every time, unless the
> changes are very small, I've decided that I really *should* convert it
> to use a 'proper' CMS - e.g. Wordpress.
> And I've tried - but every time I've foundered on not being able to get
> the site to be what I want, or realizing (believing?) that to do what I
> want requires real development skills within WP - and therefore too much
> of a learning curve and/or too much PHP. Or, I've decided that to make
> it a bearable experience I need to use multiple add-ons (plugins,
> themes, etc.) and then found that the plugins I spent hours
> investigating and choosing were incompatible. Or were just not well
> enough documented.
> [ I won't tell you how often I've found a (video) tutorial, wasted an
> entire hour or more watching it - then realized that it was for an
> out-of-date version of the plugin, or an old version of Wordpress, and
> that all the helpful screenshots showed me how to modify settings /
> actions that didn't exist, or had no obvious equivalent, in the current
> versions. ]
> Twice, having run into brick walls with Wordpress, I've tried other CMSs
> (Concrete5 and ??Dolphin??) with similar results - poor / out-of-date
> docs have left me stranded - 80% of the way towards doing what I wanted
> and unable to get any further.
> So in every case until now, I've given up, made tweaks / extensions to
> my own "home-grown" web site tool(s), and - so far - completed my
> enhancements in less time than I had wasted trying the "real" CMS.
> I put that down to:
> - the power of Livecode
> - the power of revIgniter (thank you ! again, Ralf)
> - my impatience in trying to learn new tools
> But now I have a new, bigger opportunity / challenge - I've been asked
> to build a web site (actually two unrelated web sites) which are bigger
> and more complex, and for which I absolutely do not want to become the
> de facto on-going (content) maintainer.
> So, I've decided to build LCMS - a Livecode Content Management System.
> It will be (very loosely) based on what I think are the useful ideas in
> Wordpress (but without any tendency towards blogs). It will be
> relatively simple.
> It won't be:
> - smooth, slick and all-powerful like WP
> - able to support (initially, and for some time) real independent
> development of themes, plugins, auto-loading and updating, etc. etc.
> (yada, yada, yada ...) - that might be done in a few [= 2 to 20 years]
> It will be :
> - based on Livecode (and extensible in LC)
> - (I hope) simple and easy (for a LC developer) to understand, use and
> - complete with at least one complete theme (based on Botstrap)
> - (at some point) open source, on github, etc. under MIT liceense
> - documented in some old-fashioned way (i.e. written, searchable,
> skimmable tutorials - few or no Youtube videos to waste your time)
> OK - enough of the advertising pitch :-)
> Here are the requests for input ....
> 1. has anyone tried this before ? and did you succeed ? or why did you
> stop ? any foreseeable problems to contend with ?
> 2. am I just tilting at windmills and I should just go back to studying
> WP and its plugins ?
> 3. the current prototype is based on (or rather 'is written over'
> I have very conflicting opinions of revIgniter
> + it's wonderful, it has a huge quantity of things it "just does"
> (in a well documented, well tested, etc. way) so that I don't need to
> think or learn about them, etc. - I love it.
> - (a) it is intimately tied to LC server, with heavy dependency on
> 'include' so it's impossible to (as I would want to do) test 99% of my
> code in the IDE, with debugging etc. help.
> - (b) I *really* dislike the "rigLoadView" scheme - it forces (or
> seems to force) far too much co-mingling of code and content within the
> view files, and has no clear way to use "themes"
> The current version of LCMS simply ignores the 'View' (and 'Model') part
> of revIgniter, and generates all its output based on ''pages' and
> 'themes' (and 'menus') - but it sill benefits from all the other parts
> of revIgniter).
> do you think it would be worth the (considerable) effort needed to
> remove the dependency on rvIgniter in the hope of benefiting from the
> reduced complexity, hopefully lower overhead, easier debugging a higher
> percentage within the Ide, etc. ?
> Thanks for any suggestions, input, etc.
More information about the Use-livecode