In August last year we reviewed Grav, a new CMS from Andy Miller and the RocketTheme team.
Andy's done great work over the years. RocketTheme needs no introduction: it was the first and best Joomla template club. It was inspirational for all the Joomla template clubs that followed and even WordPress sites such as WooThemes.
However, Grav is a relatively unknown project. Six months after its launch, I decided to check in with Andy and Grav. I asked Andy about Grav, what it is and what his plans are for the software.
Welcome, Andy. Can you introduce Grav to us?
The short version is that Grav is a brand new open source flat-file CMS developed with modern techniques and technologies. Grav was born from a general frustration with the existing open source solutions while looking for simple, fast and flexible CMS platforms.
The modern Web we see today is quite different from the landscape of just a few years ago. Clean design, direct targeted content, simple one-page landing pages, minimalist blogs that focus on photography and content - these are what people are looking for in modern websites.
Traditional all-encompassing CMS platforms capable of solving a wide variety of problems are often overkill for these simple solutions. I feel that people don’t want to put the time into learning a complex platform when a simpler solution would do the job better and quicker.
This is where Grav comes in. I wanted to create a simple file-based CMS solution for simplicity which was really fast, even on bog-standard web hosting accounts. Also, it needed to be fun to develop on, simple to use, and powerful enough so that it was easy to extend and customize. Being file-based, Grav is instantly compatible with versioning systems such as Git, and can provide a great collaborative solution when paired with GitHub or Bitbucket.
You can really get a taste for how flexible Grav is when you look at the getgrav.org site that includes a one-page style landing page and a blog, and compare that with the learn.getgrav.org documentation site. These are all built using Grav, with a minimum amount of customization.
Grav really is a a very simple CMS. You create content or data in a simple folder structure and Grav automatically picks these up and makes them available to interact with. We then are able to manipulate that data via plugins and display that content with themes.
What technologies does Grav use?
Fundamentally, Grav uses markdown files for content, YAML-based configuration, and Twig for rendering that content as HTML.
Markdown is a hugely popular text markup language that is quickly learned and is human readable compared to HTML. It has been around for a long time, but with the increased popularity of GitHub, Ghost, and other popular projects, it is quickly become the preferred format for content creators. Of course, Grav does not limit you to Markdown. You can just as easily use HTML in your content, or a combination of Markdown and HTML. It’s very flexible.
YAML is to configuration what markdown is to markup. It’s basically a human-readable structured data format. It is less complex and ungainly than XML or JSON, but provides similar capabilities. It allows you to provide powerful configuration settings without learning a whole lot of stuff.
Twig is the most popular PHP templating language and for a good reason. It was developed by Fabien Potencier, the author of the popular Symfony Framework. It provides a log of powerful functionality while still being fast and secure.
We definitely didn’t want to reinvent the wheel with Grav and we take advantage of many other packages via Composer. Composer is the defacto PHP package manager and it enables projects to integrate and share a wide variety of high-quality open source libraries and frameworks.
There are many fantastic projects that we leverage in Grav because these projects are already established, tested, and have active communities of their own to ensure they continue to improve.
The core technologies Grav uses are:
- Twig Templating - for powerful control of the user interface
- Symfony YAML - for simple configuration
- Parsedown - for fast Markdown and Markdown Extra support
- Doctrine Cache - layer for performance
- Pimple Dependency Injection Container - for extensibility and maintainability
- Symfony Event Dispacher - for plugin event handling
- Symfony Console - for CLI interface
- Gregwar Image Library - for dynamic image manipulation
- Monolog - for powerful logging capabilities
There are various other minor libraries we use also, but each is carefully curated to be the “best-of-breed” projects available.
Grav also has powerful CLI (Command Line Interface) that enables you to easily perform common tasks. It also has a unique GPM (Grav Package Manager) installer system to allow simple browsing, installation and updating of plugins and themes. Grav itself can of course be updated via the GPM, and this means Grav is simple to keep up to date with all the latest additions, features, and fixes.
What kind of users are you targeting with Grav?
Currently, Grav is in the late stages of a beta phase which really means that we are still actively developing new functionality, improving and refactoring code, and bug fixing issues that get reported.
Because of this, the majority of the early adopters have been developers and designers who are looking at Grav for their own sites, or for client projects in the near future. We also have users who are using Grav for documentation, student resources, blogs, resumes, product pages, landing pages, shopping carts, pretty much everything really. Less technical people are also using Grav and are having great success with it because it’s really quite a simple platform with strong documentation, where creating content only requires a Markdown editor.
When we have the admin plugin available, I think Grav will have much broader appeal to regular non-technical users who would traditionally use WordPress or Joomla, but may find those platforms a bit daunting due to their relative complexity. The Grav admin has been built to be as simple as possible while still providing the functionality needed to use your site on a day-to-day basis.
Here's a preview of the Grav admin:
What can we expect from Grav by the time it reaches 1.0?
The admin plugin is really the most important feature we want to have before we officially release a 1.0 version. The admin plugin will be entirely optional as everything can configured and content created without it. However, we understand that this is an important feature if Grav is ever going to be a viable solution to provide to end-users. Forms and basic ACL support are really part-and-parcel with the Admin plugin and will also be part of 1.0.
Another feature that is mostly there already and will be fully finished in 1.0 is the multi-site capability. This will allow you to run multiple sites from one Grav instance and lays the groundwork for multilanguage support which will probably come in version 1.1.
We will continue to add appropriate functionality to the core, but we intend to keep Grav itself quite focused on doing what it does best, and ensuring that plugins can provide any additional functionality needed. Already, we have nearly 30 plugins and 14 themes available. That’s not bad for not even 6 months of availability.
With Grav are you taking over the world, or scratching your own itch?
There are no plans for world domination. I strongly believe that you should always use the appropriate tool for the job, and often that job requires a tool like Grav. There are many flat-file CMS platforms out there, but none really existed that provide the complete package of speed, ease of use, and flexibility that we think is needed for solving modern web design problems.
Sure, we were “scratching our own itch” when we started Grav, but it quickly morphed into something much more than that. When I started telling people about what Grav could do, I think they got as excited about it as I was about developing it.
It only took a few months to go from a blank project to the initial beta release, and it seems people are loving it. I think that when you start using Grav, you will be pleasantly surprised with how much it can do, and how easy it is to create with it.
What will CMS’s and websites will look like in 10 years?
10 years is a huge amount of time to speculate on when it comes to the web. It’s hard enough to know what’s going to happen in the next year or 2, yet alone 10!
If I think back 10 years I was still a part of the Mambo development team, and Joomla 1.0 was about to be born. The web was still a relatively simple affair 10 years ago, and things have gotten much more complicated as the web has grown and become more diverse. I can barely imagine what the Internet will hold for us in 10 years time, never mind CMS platforms and websites!
In the short term however, I think that there will be a continued move towards more focused solutions rather than a single platform that can do everything. People’s attention spans are getting ever shorter, and the web is evolving to cater to this. Sites are becoming smaller, simpler, and faster.
We are already seeing this with the increased popularity of simpler blogging solutions such as Tumblr in recent years, and now new-comers such as Ghost. People are also turning away from heavier, slower platforms and going back to static sites with the help of generators such as Jekyll, Octopress and Pelican.
When interactivity and dynamic capabilities are needed, fast-modern-hybrid solutions, such as Grav, that utilize proven technologies and provide much of the functionality of traditional CMS platforms, will continue to gain users. I think many people involved in the CMS ecosystem are seeing this trend, and it will only continue in the foreseeable future.