Robert Speer Web Development: Symfony, PHP, Wordpress, Business Analysis

Apostrophe: An outstanding Symfony CMS with no backend

Update: November 30, 2012 a.KindEndeavor.com is a growing directory of Apostrophe CMS professionals like developers, designers, Testers, & Strategy folks.

Update: January 7 2012 – @dandyMedia did a companion post reviewing the Diem CMS.

Update: December 16 2011 – The demo links no longer work for this post it was pretty old anyway.

Update: this review refers to the 1.0 version, as of Jan 2010 the new 1.5 version is available: http://window.punkave.com/2011/01/18/apostrophe-1-5-released/

Why do I care and where is the  demo:

Live demo

Link: http://bit.ly/An_live_demo
Username: admin
Password: demo
* login info is prepopulated in the login form so you can just press the login button
** The database and media are  reset at the top each hour.

Why you care

How is this going to make me money?

Apostrophe is the easiest to use content management system (CMS) available to the open source community. An easy CMS means that content managers are more likely to use it, which means consumers will get better information and be more likely to follow the sites profit funnel.

For web solutions providers Apostrophe is a CMS solution that bypasses the commodity hell of WordPress, Drupal, and Joomla by providing a unique value differentiation. Apostrophe also has the advantage of being built on an enterprise grade web framework used by sites like Delicious, Dailymotion, Yahoo! Answers, and Yahoo! Bookmarks. Symfony provides a consistent structure that encourages collaboration, and the large community of developers already familiar with Symfony mean help is available.

So what makes Apostrophe so special?

Contextual content management is what. Traditional content management systems have a backend admin interface that users log into to maintain the site. The editing interface has nothing to do with the interface the content will be viewed on. Admin interfaces are also full of features that don’t make a lot of sense to someone not working with web technology every day. Contextual content management mitigates these issues by allowing content to be edited in the same place the content is consumed.  To manage menus content editors simply drag and drop menu items where they need to go.  Content editors can add and edit content in multiple formats: rich text with a WYSIWYG, plain text, RSS feed, image, slideshow, button, video, pdf, or raw html. These content formats are called slots and are highly configurable in the templates during development. Apostrophe allows developers to control where slots are available as well as modify there behavior. Developers can add options for users to choose from, for example the dev team can specify image sizes of small, medium, and large that content editors can choose from when they add an image slot. Media files are managed through a built in media repository with categories, tagging, filtering by type, and text search. A unique feature of all the Apostrophe admin interfaces is that they use the same stylesheet as the rest of the site so they are visually integrated with the rest of the site.

What if someone makes a mistake?

Apostrophe comes with content version control baked into contextual editing interface. At the top of each content area, Area is Apostrophe jargon, is a History button. Click that and a dialog comes up showing who did what, and when, as well as allowing content editors to click on a revision to quickly review it. To revert to that version simply click the new “Save As Current Revision”.  I’ve build content version control, and the user interface has been a problem for me, I never had the budget to do one right, but Apostrophe nails it for free.

How are multiple languages supported?

Apostrophe uses Symfony’s Multi-Lingual architecture. To add or edit a translation a developer needs to add a language switcher to tell Symfony what language is being requested. Then the content editor can switch languages and make the translation just like if the site were a single language. A key benefit of contextual content management is that the translator can see how the size of the translation is effecting the page’s layout.

What about user management?

The very popular sfDoctrineGuardPlugin is utilized to provide user management features like: login, logout, a user CRUD, groups, and permissions. The sfDoctrineGuardPlugin is well tested, widely used and actively maintained. Apostrophe does a very nice job of integrating the plugin into the CMS and it automaticly adopts the design of the rest of the site.

What kind of problems can I expect?

Installation is a little complicated, an experienced Symfony developer will come in handy here. Apostrophe suggests using svnforeigncopy to clone their sandbox project, but I could never get it to work. I suspect that Git might be a better version control system for this application.

I had trouble with the server requirements, specifically missing Netpbm for image manipulation caused the media repository to hang in my WAMP setup. This could have been handled better, but Netpbm just had to be turned off.  At the suggestion of the Apostrophe authors I got a $20/mo VPS from ServerGrove and all my (server) problems went away.

Having the admin interface integrated into the frontend means that it’s sometimes in the way. This is easily solved by adjusting the CSS to position the admin buttons.

Another issue with having the admin interfaces embedded in the page is the requirement for additional wrapping <div> tags. This will look like divitis, and make your CSS rules more complicated.

I ran into a couple bugs that I attribute to the CMS being fairly new. I’ve noticed the that the project is updated fairly frequently so I expect the stability to increase quickly.

Lastly, I’m a little concerned that my clients are going to ask me for ways to edit meta tags, like title, description, & keywords. I’ve seen no easy way of accomplishing this, however it seems like a easy feature so I suspect it to be added in the near future. If a client needs it I’m sure I could make this happen without too much effort.

So what do I do when I run into a problem?

The PunkAve crew that authored Apostrophe are very helpful on the Google Group. I usually got responses in under an hour. Before asking for help make sure to go through the Manual, Wiki, Trac bug list, and search the existing Google Group messages.

Closing thoughts.

Apostrophe is my new favorite CMS, well actually it’s the only CMS I would choose to use. I really do not enjoy working with WordPress & Drupal, and Apostrophe is an outstanding alternative. I’m very excited about the new Apostrophe plugins for a blog and a form builder. I’m actually looking for excuses to use them, maybe robertspeer.com is due for a rebuild. A little bird told me about some exciting developments in the Apostrophe world, follow @apostrophenow to be the first to know.

About the author:

Hello, I’m Robert Speer a web professional experienced in leading the development of large web applications. Currently I’m working on a property marketing web application that I plan on integrating Apostrophe into. I’m also accepting project work to fund my bootstrapping efforts, contact me for more information.

My Links:

If you found this review valuable please click here to vote it up on DZone

Be Sociable, Share!
  • Thanks for the great review Robert!

    In this long list of positive things I was a little sad to see that you were never successful with svnforeigncopy. My fault I think for not spelling out examples in detail.

    For the record, this is all I had to do after downloading svnforeigncopy and copying it into my personal ~/bin folder (or someplace else in your PATH). These steps even include creating a local repository, although you can use beanstalk or any other remote svn repository just as easily. Two commands are used, svnadmin (standard with svn) and svnforeigncopy:

    svnadmin create /Users/boutell/myrepo

    svnforeigncopy http://svn.apostrophenow.org/sandboxes/asandbox/branches/1.3 file:////Users/boutell/myrepo/demosite Sites/demosite

    Those arguments are the path you’re copying from, the path you’re copying to, and the local checkout folder where you’ll work with the end result (also used as a scratchpad during the copy operation).

    You’ll be prompted to commit to svn a couple of times, and the checkout of symfony in lib/vendor means it’ll take a little while to do the final ‘update’ that brings down the related plugins and Symfony itself. But it’s all done for you with one command.

    Hope this is helpful – wouldn’t want to see you suffering without a live connection to our stable branch!

  • Actually I think my issues with svnforeigncopy were server permission related.

    I’m pretty familiar with symfony so the manual install was not that big a deal for me.

    Also I’m sorry I made you sad.

  • Did you try Diem? Which one is the best in your view?

    • I have not tried Diem yet, I’m am looking forward to it though, it looks great.

  • Robert: don’t worry, you made me happy overall (:

  • Do you know when will the blog and form builder plugins will be up and running? The links you’ve provided have no info on it.

    Thanks for the great article!

    • I do not, I’m looking forward to them as well. I tried out the blog plugin in it’s unfinished state and it was still pretty rough. I suspect it will be announced on the google group when it’s ready.

      If you’re feeling like playing with unfinished code you can check it out from the symfony svn repo. However based off input from Tom Boutell check out the trunk version, although this may have changed in the week or so since I tried it.

      Thanks for the feedback

  • I’ve used Apostrophenow since it was sfContextCMS, and I’ve played around with Diem a few times.

    Diem certainly has lots of initial wow factors, but I find Apostrophenow is better (at the moment) for several reasons:

    - Easier to create custom layout. I just couldn’t figure out how to use my own custom layout with Diem. Apo comes with default ones that can be copied and modified.

    - Easier to integrate custom actions. I have no idea how to do this in diem. I did struggle a bit on this with Apo at first, but the documentation was there.

    - Slot history. Not sure but I think Diem does not support any edit history. If you make mistake, then that’s it, can’t undo.

    - Closer to Symfony. Diem feels like a layer on top of Symfony.

    Having said that, Diem is a VERY promising project and will check it again later.

    By the way, svnforeigncopy way is great! It’s real fast to setup new project, so it’s worth spending time to learn it.

    • I’ve played with both, and I think it really just depends on the application which one might work better.

      One thing to clear up is Diem does have version control, just wanted to make sure there wasn’t any misinformation there.

      Based on my experience, I can see apostrophe very handy in a more “light-weight” web app. If you’re putting together a brochure site, apostrophe is pretty slick and VERY easy for an end user to administrate.

      I’ll admit, Diem took more time for me to wrap my head around, but once I did, it is WAY more powerful. You can put in custom layouts, etc., but you probably need some experience with the framework and should be a solid symfony developer. In addition, if you’re going to create any sort of “hybrid” app that needs both data manipulation and CMS functionality, this is where Diem would definitely be the right choice.

      Personally, now that I’ve used Diem, I use it on all but the most simple projects. Apostrophe can get you there for most simple sites, but Diem is packed with features and backend tools that are worth taking the time to learn (imo of course).

      Can’t go wrong with either if you know Symfony well because you can always extend what’s “missing” out of the box to customize your app regardless of which CMS/CMF you choose.

  • robert, would you mind sharing your layout.php for the demo site? im having some difficulties leaving out the subnav for pages that dont have subpages …

  • Aaron, your description of “handy in a more light-weight web app” is a common misconception. As the designers and developers of Apostrophe, we use it on all of our client work and that includes some large and complex sites.

    By the way, we recently released Apostrophe 1.5 so it is worth checking that out:
    http://window.punkave.com/2011/01/18/apostrophe-1-5-released/

  • Language support is in fact awful due to its underdevelopment. I had to spend much time to translate every part of it. In many templates phrases that should be translated are not surrounded by translation function. Besides, Apostrophe is a great piece of software!

  • Adam, we accept patches to improve translation coverage. Please attach your patch to a ticket on trac.apostrophenow.org. Thanks!

  • How would you compare Apostrophe to Concrete5 (as they share more than similiraties) ?
    In the buzz land, Apostrophe seems to have already ran while Concrete5 is well known and still under the spotlights.

    Except this and to my mind, Concrete5 is much user friendly, maybe Apostrophe could make improvements in the gui area, this is important when almost everything is the front end.

    • I don’t know yet. Concrete5 is on my list to try out, I’ve only heard good things.

      This post is a couple years old now (wow) and apostrophe’s made many improvements since then and is nearing completion on version 2.

      I’ll shoot you an email in a bit, I’d really like to hear more about your experiences with concrete 5