Day 1 Review of the Grav CMS

grav

A clear trend has emerged in the last year: developers are building simpler platforms.

Around 10 years ago, platforms such as Joomla, Drupal and WordPress all emerged.

Now several groups of developers are betting that the time is right for radically simpler alternatives. 10 months ago we covered the launch of Ghost. Last month we covered the launch of Pagekit.

This week, we’re talking about the launch of Grav from Rockettheme.

What is Grav?

Grav is a file-based CMS. That means Grav doesn’t use a database at all. Content and all configuration options are stored in files.

According to the Grav team, their focus is on speed and simplicity, rather than an abundance of built-in features.

For technology, Grav uses several of the external technology that powers Drupal 8:

  • Twig for templating
  • Markdown for content creation
  • YAML for configuration
  • Doctrine Cache for performance

The whole project is under the MIT license and is free to download. Presumably commercial extensions will be coming shortly and, as this is the project of a theme company, commercial themes certainly will also.

Note: Please keep in mind that what follows is a Day 1 Review. Grav is only currently a beta release. And, regardless of whether the codebase is good or bad, there’s still 101 other things that we can’t judge yet, but will influence whether the project will be worth following or not.

Installation

Installation is as simple as placing the files on a compatible server.

Download the files from http://getgrav.org and extract the package. This is what you’ll see:

  • bin: Primarily for developers, this contains the Grav CLI application.
  • cache: As with most platforms, this stores temporarily cached files.
  • images: This acts like an image cache folder. Grav has an image manipulation library whose output is stored here.
  • logs: Error logs.
  • system: The core Grav files.
  • user: This is where all your site’s content and data is stored.
  • vendor: 3rd party scripts.
media_1408459027330.png

Here’s what you’ll see with an initial Grav installation:

media_1408459013903.png

Content

To create content, go to the /user/pages/ folder.

The homepage is controlled inside the /01.home/ folder.

media_1408459238901.png

To create a new page, you duplicate that home folder. In my case, I duplicated the folder to /02.about/.

media_1408459302200.png

Inside the folder is a file called default.md. I think you can create different file names in order to use different templates. For example, if your theme allowed it, you could have a blog.md or a portfolio.md and use different layouts depending on the file name you chose.

Here’s what the default.md file looks like. Everything is written in markdown. The Grav docs claim, “Markdown is a joy to use!” I strongly disagree. You can mark me down as a markdown sceptic.

Based on my teaching experience, I think markdown eliminates the majority of possible users. For most people markdown syntax is too abstract and too hard to remember. Ghost has also chosen markdown, but does make it easier with a preview screen that helps make the process less abstract.

media_1408459898348.png

One useful touch for beginners is that Grav automatically creates menu links when you add links:

media_1408459915673.png

Skeletons

A nice idea from the Grav team are the “Skeletons” available on their site. These are like Drupal distributions: pre-packaged versions for particular purposes.

media_1408459977808.png

I tried the store, which is powered by Snipcart. It looked great, but the cart kept spinning during the checkout process.

media_1408460154365.png

Themes

Here’s an overview of the default structure for Grav themes. Two parts of the theme are particularly important to note.

  • blueprints.yaml: This is the main configuration file for the theme.
  • /templates/: This folder contains all the layout files for the theme.
media_1408462245030.png

Open the templates folder and this is what you’ll see:

media_1408462789763.png

Grav themes are powered by Twig, which is also the theme engine used in Drupal 8. Here’s our longer introduction to Twig.

Here’s how the Twig template code reads inside the default Grav theme:

media_1408462324813.png

Plugins

There are 9 plugins currently available on the Grav site.

media_1408463209830.png

Installation of these plugins isn’t plug-and-play. It reminded me a little bit of Drupal 6.

I started with the Breadcrumbs plugin and here’s what I did:

  • Download and extract the Breadcrumbs files
  • Rename the Breadcrumbs from /grav-plugin-breadcrumbs-1.0.1/ to /breadcrumbs/
  • Upload it to the /grav/user/plugins/ folder
  • Read the README file to find out what to do next.

However, I couldn’t get that Breadcrumbs plugin to work. I did have more luck testing the Sitemap plugin, although I’d have been lost without the Readme file.

I suspect this process will get easier after an admin panel has been built.

Here’s what a basic plugin looks like under-the-hood. The configuration is in the blueprints.yaml file:

media_1408463926657.png

Strengths

  • Clear business model: Unlike Pagekit, the business model for Grav is very clear. Rocketheme plan to sell plugins and themes.
  • Documentation: They’ve done a great job with the docs for this initial launch: http://learn.getgrav.org
  • Roadmap: They’ve done a great job of outlining what’s next: http://getgrav.org/blog/grav-roadmap. I love some of the items on this roadmap.
  • Fast: Even with no caching turned on, Grav loaded very, very quickly. The Grave team do recommend added extra caching layers. You can tell they’ve focused heavily on speed. Every page has a small time and size counter:
media_1408464215675.png

Weaknesses

  • Markdown: I think that developers tend to greatly over-estimate how easy Markdown is to learn. Ghost has made a similar mistake.
  • Missing key features: There’s no admin panel: one is being developed, but at the moment everything in Grav must be done via the file system. There are also no user roles and no multi-lingual support.
  • Plugin and theme installation: Grav is still a long way from having plug-and-play features. The installation process is clunky and involves quite a few steps. Without an admin panel, for example, there can’t be an app store as with Pagekit.

Final Thoughts

I like Grav a lot. But, it does have a long way to go.

Grav is currently a usable system for developers, but all the usability challenges for users still need to be overcome. There’s no admin panel and alternative to markdown. In that sense, it suffers from the same problems as many other flat file systems.

However, it’s worth looking again at the roadmap, which includes some really attractive features:

  • Dev, Staging & Production Environments
  • Built-in Backup & Restore
  • Forms Plugin
  • Full User/Roles ACL
  • Automatic Updates

That’s a very attractive list of features. However, they note this for the Admin Panel: “it is turning out to be more involved than we originally thought.” I’m sure the same will be true for those other features too.

It’s taken Ghost nearly a year to get to version 0.5. It may well take Grav at least that long to add these features.

This launch is the first step in a long road for Grav, but I like the road they’ve chosen.

Author

  • Steve Burge

    Steve is the founder of OSTraining. Originally from the UK, he now lives in Sarasota in the USA. Steve's work straddles the line between teaching and web development.

    View all posts
0 0 votes
Article Rating
Subscribe
Notify of
guest

17 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Nathan Todd
Nathan Todd
10 years ago

Cool stuff

rhukster
rhukster
10 years ago

Thanks for the well rounded review! We’re already hard at work on 0.9.0 beta release that contains some major upgrades and enhancements. These will make Grav even more flexible than the first 0.8.0 beta.
Version 0.9.0 will contain a brand-new dependency injection container (powered by pimple), a Symfony-based event dispatcher for plugins, PHP stream wrappers to improve resource location, a new asset manager with pipeline support for unifying, minifying CSS and JS assets, plus many more smaller but handy advancements.
We’re also working on a number of new plugins based on suggestions from our small but fast-growing community! One of those is an installer CLI app to ease the process of installing and updating plugins and themes, as well as Grav itself.
The Admin panel is something we started early on, but put to the side for now. It is a pure Grav plugin, but is quite complicated because it has to handle form processing and interact with many parts of the Grav infrastructure. As Grav was constantly being updated and refactored to improve the core, it meant the Admin panel was constantly trying to catch up with these changes. We decided to wait until we had all our major work done on the core itself, and then turn our attention back to the admin panel.
Our initial thoughts on this panel, is that Grav will come with a basic panel that allows for content creation and editing. A more full-featured panel will follow with a much wider variety of functionality. This full-featured admin will most likely be a commercial offering.
Regarding markdown, we strong believe in it, that’s why it’s baked into Grav. The current trend in writing apps is focused, distraction-free, and simple syntax markup. This is what markdown is all about. We have had real-world experience where a non-technical person has come from a traditional world of web content creation, and found the real joy and benefits from writing in markdown.
Anyway, development is moving very rapidly, and that is part of the beauty of Grav. Because at it’s heart, its so focused, its not as complicated as other systems, so refactoring it, and improving it is much more manageable and realistic. We’re excited by the reception Grav has received in the less than one week its been available to the public, and we’re focusing now on improving it as much of possible before the 1.0 release.
If anyone has thoughts or a desire to help improve Grav, please help us out on GitHub, or just jump on our #grav freenode irc channel and let us know what you think. Cheers!

Bob Rockefeller
Bob Rockefeller
10 years ago

Are you guys planning to do a follow-up review? If this is a day 1 review, will there be a day 7, or some ongoing updates?
Sometimes what you see at first are not the same things that are important later.

steve
steve
10 years ago

Hi Bob,
Yes, if the software does well.
We did a Day 1 review of Ghost, then we’ve written about them every month since: [url=http://ostraining.com/blog/ghost]http://ostraining.com/blog/…[/url]

Dan Knauss
Dan Knauss
10 years ago

Someone’s got to call out the 500lb. gorilla in the room: are two of the best, established Joomla and WordPress theme shops pivoting away from those platforms?
@steve, How does Grav compare/differ from Statamic? They sound very similar. Another interesting comparison would be to look at their speed and usability compared to WordPress running Twig (there’s a plugin) and caching everything in essentially a flat file system. (More plugins for that.)
On Markdown, I don’t think it’s a developer thing. I think it’s a writer thing that a lot of designers and developers appreciate if they are writers, love clean text and typography, etc. Markdown also has a broader appeal in other industries as well as academe where a lot of people learn complex markup for math and science writing. (Often you have to write, edit, and do the layout for your publisher nowadays.) The common user doesn’t have these technical needs and isn’t part of these cultures or trades where nobody would be surprised or intimidated by Markdown. They don’t have the experience or knowledge to see the value in it. They would rather have WYSIWYG rather than deal with any “code” — the “don’t make me think” attitude. That’s totally understandable and will definitely be a barrier to uptake of Grav if their goal is to reach a broad audience right away. Maybe their strategy is to follow the path of MovableType, TextPattern, and WordPress and establish a niche with a more “elite” user first.

steve
steve
10 years ago
Reply to  Dan Knauss

Good questions, Dan
For pivoting away, I’ve talked with some developers who definitely are sick of the CMS codebases started in 2003 / 2004 / 2005. It’s worth looking at those feelings alongside changes like “Headless Drupal” too: [url=https://www.ostraining.com/blog/drupal/what-is-headless-drupal/]https://www.ostraining.com/…[/url] One common response we’ve had there is, “does mean the rest of Drupal will soon be dropped too?” The developers seems to be getting antsy, but the users … we’ll see.
For business plans, I’ll leave that up to Rocketheme and YooTheme to answer.
Statamic? Good question. I’ve not used it much, but I should give it a go. To be honest, I still like this about most flat file sites: [url=https://www.ostraining.com/blog/general/2014-static-websites/]https://www.ostraining.com/…[/url] They have little mindshare, so we don’t cover them much.
Markup? Good points. It definitely appeals to people with a particular mindset.

Dan Knauss
Dan Knauss
10 years ago
Reply to  steve

Have any developers shared their thoughts in detail about working with these older platforms? I’ve seen some of that expressed about WP and Drupal, but not so much with Joomla. My understanding is that the development of a separate Joomla platform/framework project is largely intended to provide a more flexible base (in terms of its license and technical aspects) that is not tied to the CMS yet still supportive of it. Drupal seems to have taken a similar path, but for WP it has only been a suggestion floated and more in the direction of multiple distributions. If a developer’s commercial market relies on that market being very large — e.g. extension and template sales — this creates a big disincentive to make radical changes to the core codebase. The sense of being held back in this way may frustrate developers who want to do new things without legacy code concerns, but their interest in a newer, leaner core only has commercial value if they have a niche of select clients who want this too. That seems like the major tensions and interests that may be at work, but I’m really just guessing.

steve
steve
10 years ago
Reply to  Dan Knauss

Yes, the tensions can get pretty great when projects get big.
I think one thing that helps Drupal and WordPress reduce those stresses is that there is unquestioned ownership of the project.
At the end of the day, Drupal is Dries’ project and his vision (huge BC breaks, developers come first) will win out.
WordPress is Matt’s project and his vision (no BC breaks, end-users come first) will win out.
People working with those projects generally need to agree with that vision, tolerate it, or move on.

rhukster
rhukster
10 years ago
Reply to  Dan Knauss

Dan, I wrote up some of the reasons why we developed Grav in the first place in our initial blog post: [url=http://getgrav.org/blog/grav-beta-released]http://getgrav.org/blog/gra…[/url]
Regarding flat CMSes in general, yes there are many, and as the blog post mentioned, we didn’t originally plan on creating our own, we were looking for one we could build templates and themes on that would be a suitable option for the group of our community that wanted a smaller, faster, less-complex solution.
Over the course of looking for a flat CMS solution though, we tried out lots of platforms, and some of them are very good. Statamic and Kirby in particular are both excellent in their own ways. However both of these are commercial, each have their own shortcomings too, and we also wanted an open source solution.
Regarding Markdown, Steve and I have had several twitter chats on the subject 🙂 It is definitely not as trivial as a WYSIWG for end users. However there are many benefits, and for web development it’s an ideal solution. Now convincing end-users of these benefits may not be a simple task but for now, we’re focusing on the developer or web-savvy types to be using Grav, and hopefully helping to improve it. We do plan on having a nice and simple attractive Markdown editor in the upcoming admin panel, and we could potentially have a WYSIWYG editor option also. Grav works 100% with pure HTML content as well as Markdown.

Dan Knauss
Dan Knauss
10 years ago
Reply to  rhukster

Thanks for the explanation; I had not seen that blog post.

TedCurran
TedCurran
9 years ago
Reply to  rhukster

I think that many more mainstream users would be interested in Markdown if there was a halfway point between a GUI and text, something like WYSIRMD (What you see is really markdown). I (as an academic and non-dev) learned markdown using MarkdownPad on Windows, which has the familiar button bar (bold, italic, etc) along the top, but those buttons produce markdown in your text, and you can see the HTML preview on the right. This is great for beginners because they can stay productive with the tools that they know, but they can see clearly what is happening in the text and what that does to the finished product.
As it stands, most Markdown editors are clearly aimed at devs and don’t have that gentle supported learning curve that non-techies require.

rhukster
rhukster
10 years ago

BTW we know have a forum for Grav available at [url=http://getgrav.org/forum]http://getgrav.org/forum[/url]

rhukster
rhukster
10 years ago
Reply to  rhukster

Also we just released 0.9.2 with many bug fixes, improvements and a few new features.
[url=http://www.getgrav.org/changelog]http://www.getgrav.org/chan…[/url]

John Kelleher
John Kelleher
9 years ago

Gotta say I’ve begun using Grav in recent months and despite the shortcomings you’ve mentioned (fair comment), it shows great promise and is maturing nicely. I’ve used Drupal, Joomla, DotNetNuke, WordPress, Kirby, Statamic & Jekyll (inc flavours) – would have to say Grav tops that competition. For greater flexibility (given it uses mySQL), I’d say Processwire CMS is better (and is more developed). Both are blessed with excellent support (Ryan Cramer at Processwire and Andy Miller at Grav) which makes a huge difference particularly when a project is now as refined (and possibly should never be) as (say) WordPress.
So from my experience, even if a newbie blogger, you would do well to look past the likes of WordPress and take more control over content and style, then Grav is well-placed to meet your needs.

jimheil
7 years ago

Can you create a course on Grav? I am anxious to learn it.

jimheil
3 years ago
Reply to  James Heil

Better documentation on Twig would make the platform easier to learn. I think this platform has huge potential, but you have to have a programming background to fill in the blanks. I can’t figure it all out with the resources available.

Syed
Syed
3 years ago

Seriously not recommended for people with ADHD. its like learning a new thing althoughter. it would be great if someone just converts the WP to flatfile. i wish to move to flatfile for my blog, but it seems other options are just way too complicated and meant for someone who could learn something for a week and then go use it

17
0
Would love your thoughts, please comment.x
()
x