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.
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 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.
Here’s what you’ll see with an initial Grav installation:
To create content, go to the /user/pages/ folder.
The homepage is controlled inside the /01.home/ folder.
To create a new page, you duplicate that home folder. In my case, I duplicated the folder to /02.about/.
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.
One useful touch for beginners is that Grav automatically creates menu links when you add links:
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.
I tried the store, which is powered by Snipcart. It looked great, but the cart kept spinning during the checkout process.
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.
Open the templates folder and this is what you’ll see:
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:
There are 9 plugins currently available on the Grav site.
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:
- 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:
- 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.
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.