When I decided to change my name and got this cool new domain, I couldn't leave it empty. I decided to start new personal blog here. I used to write my thoughts and tutorials to escope.cz which is build with Joomla!
Few weeks ago I was introduced to Pagekt CMS developed by Yootheme team. It's great simple CMS build on latest PHP libraries. Firstly, I decided to give it a try and build simple blog website with it. When I wrote my first article, I wasn't completely satisfied with it. It made me wonder what other fresh CMS are out there.
And I found Grav CMS developed by Rockettheme team. Grav isn't classic opensource PHP CMS like Joomla, Drupal or WordPress. It doesn't use database to store data. It uses just file system. This may seem like step backwards, but it has few great advantages.
1. Grav doesn't need installation
If you've have ever installed database based CMS, you know it is quite horrifying. At least for first time you don't know what to fill to 'Host' field, you are not sure where to get database name and so on. Grav doesn't have this step. In fact, it doesn't have any step of installation process at all. It is just ready to use when you upload Grav's files to the server.
2. Markdown syntax for writing articles
Markdown is plain-text formatting syntax. It is known mainly at developers community. For example GitHub use it for documentation and readme texts. From my point of view it has 2 main advantages.
2.1 Markdown is safe
From developer point of view, it isn't quite easy task to recognize and strip harmful code from HTML. With markdown, it is simple. Markdown is just text. By stripping all HTML tags will not break the result. Markdown text is then dynamically converted to HTML and displayed in the browser.
2.2 Markdown is simple
Markdown syntax is simple and intuitive compared to HTML syntax. It doesn't provide such complexity as HTML, but for articles Markdown provides all needed formatting like
- italic text
- even images.
I know that normal people (not developers) are afraid to use Markdown. I know it from experience. "We have WYSIWYG editor" they say. I don't know how you can use it. I've never wrote an article without fixing some HTML bug it makes.
There is no reason to be afraid. Developers will force people to learn Markdown anyway. This is my prediction. Not only Grav use it, but Pagekit has option to use Markdown as well and I can see it in more and more services.
3. Versioning is easy
Database versioning is incredible hard. If you've ever try to find a solution to deploy database changes from development version of some information system to production, you understand what I'm talking about. And there is no tool which would just work. On the other hand, it is easy to version files. The most popular versioning tool for files these days is Git.
That is also one of reasons why I gave Grav a chance, because I can configure automatic deployment. Now, I can write an article in my text editor and it is published in the same second I execute the command 'git push'.
For those not familiar with git, here is short explanation of what happens in that second. New version of my article (or any other file) is pushed to my remote git repository (BitBucket.com), so it's backuped. BitBucket fires post-receive hook to my server (johnlinhart.com) and the server downloads changes from remote git repository. Those changes are instantly displayed. Git makes it possible to run rollback or to cooperate on one web in team.
4. Rapid development
Each week there is new version of Grav with bug fixes and new features. Rockettheme's developers are releasing lots of plugins as well. It's little sad that it doesn't have some user friendly tool for updates, but I'm sure it's coming soon.
Grav uses Symfony2 as main PHP framework and Twig as templating system. It is possible to use basically any library you like, because of the Composer. I'm Looking forward to develop some Grav plugin. I forgot to mention that there is detailed documentation.
5. Grav is fast
Databases are optimized to be fast, but it is still bottleneck of information system speed. Such information systems uses cache to increase speed. There are more cache tools, but from my experience, mostly used cache is file system based.
If I say it in other words, you have database based system, but because it is slow, you turn a cache on. That means you don't use database anymore, but files. So why don't use file based system in the first place?