Hey guys, I've always wanted to get you in the "kitchen" of Gantry 5 so you can see the whole idea behind it, to see what it was in its early days and what its future development plans are.
By getting involved in the Gantry 5 project I had the chance to meet the Rockettheme team, to talk with them and learn many new things! Today I have the pleasure to meet you with Djamil Legato - a Lead Gantry 5 and Grav developer :)
Tell us a bit more about yourself, your background, your workspace and Djamil Legato as a whole.
I remember having my first encounter with a computer when I was 9-10 years old and I was immediately fascinated by it. In Italy, where I am from, computers (especially personal computers) weren't that common at the time.
I remember subscribing to PC Magazine which every month was coming with a floppy disk. It was so great. I learned about Linux and other programming languages as well as the Internet and the chat but I really couldn't try any of that because I didn't have a PC.
Eventually I found a place that was doing computer classes and it was at the basement of a computer games store. Think of it as if it was GameStop, except it was the only store in the whole town.
It was only at 11 years old that I was given my very own personal computer and that opened a whole new universe to me. It was also one of my best memory in life. :)
Linux is what really showed me how much control you actually have over the computer. I started to realize that with some imagination and logic, I could get the PC do the things I wanted it to do. It sounds silly now but I believe that's exactly the moment when I basically decided what I wanted to do going forward.
When I started using the Internet and especially when I started chatting with mIRC, there was this scripting language integrated into the client that allowed you to create themes and plugins. Really like Slack is today but you had a lot more control over the client.
I became so fascinated and obsessed by that scripting language and my interest for programming language just kept growing and growing.
All of this while going to school and doing some sporadic work here and there.
7 years ago my wife and I moved from Italy to the USA and this has been my workspace for a while now (It's probably going to be changing soon though!)
What does a typical day look like for you?
My daily routine is quite boring. I wake up in the morning and the first thing I do, right after I open my eyes, is to grab my phone and start catching up on emails, messages, notifications and all that. I do this right away because nowadays catching up on the day before takes so much time that I just don't want to waste it in the morning.
Once I geared up and I'm all washed up and dressed up I go make myself an espresso and feed my cat, Pixel. After that I am all ready to go and start my day which consists in going in my office and start working. I take breaks throughout the day as well as, of course, a lunch break. I keep going until my wife gets home from work then I just spend some time with her and we both relax watching some TV.
Told you it was boring! On weekends I try to spend more time with my wife and stay away from work but it's not as easy, I just love what I do and often when I'm bored I get entertained by just working.
Tell us a bit more about Rockettheme. What is it like to be part of one of the biggest companies in our industry? What are your tasks and responsibilities there? Tell us a bit more about the team.
This is not just me, really the whole team is working that way, everyone has their own roles but nobody is afraid of dealing with things outside their own scope.
You are a Lead Gantry 5 Developer. Tell us a bit more about the project as a whole. How did you decide to re-write the framework from the ground up? What were your ideas and priorities when doing the architecture and choosing the technologies?
Gantry Framework itself is quite old, the first release we ever did was many years ago and it was only for Joomla 1.5 (can you believe that?!).
Back then the team was really struggling getting theme development going in a smooth way. Most of the time was spent setting up a base template, from scratch, just to get going. Repeating the same steps over and over again, every month, consuming a lot of time to the detriment of the templates themselves. You also have to remember how back in those days we had to deal with IE6. Fixing a template for IE6 could easily take 1 to 2 weeks alone.
This is kind of how we then sat down, discussed and finally decided how beneficial would have been to have a theme framework that could set up the ground work for us immediately. It could then allow us to have things working in a consistent way and with a better user interface for the end-user to customize the template. Welcome Gantry Framework. There really weren't many template frameworks at the time so this was all new for everybody and we continuously improved and changed the framework while preserving backward compatibility.
This has been going on for 3 years, a lot of evolution happened in Gantry, many suggestions, many bug fixes, many UI improvements but one thing we always maintained: backward compatibility. At around that same time, browsers were getting a lot better, IE6 was pretty much dead, CSS3 and HTML5 were all over the place and Joomla and Wordpress evolved too.
We knew Gantry needed to be updated. Unfortunately the backward compatibility we always made sure to preserve started to become a burden. We had now access to a lot of new great technologies and most of them we couldn't even think about without losing backward compatibility.
So we sat down again and discussed. This time it was different, we had a lot of experience on our hands and a lot of feedbacks from the users. The ideas to make Gantry better couldn't stop coming out, one after another there were just so many great ideas for making the framework better.
It didn't take long to realize it was just time to abandon our old code and restart fresh, completely.
I really want to emphasize the fact that even if we restarted from scratch, the Gantry concept didn't change. We still wanted a template framework, we still wanted to make it easier to create templates and we still wanted to make it user friendly. What we didn't want anymore was the years and years of accumulated code base and logic that was meant for a different time. We wanted fresh, modern, fast and up-to-date code. Welcome Gantry 5!
Right at the same time Andy was starting Grav and Matias was helping out with that. That's when we noticed how many concepts in Grav made total sense in Gantry as well. Since that was working extremely well in Grav, we decided to adopt in Gantry as well: Twig, YAML and no database.
The Layout Manager in Gantry 5 is your creation. You re-wrote it several times before it became what it is today. Tell us a bit more about it, about its original idea and evolution.
Yes, you got it. Layout Manager is something that has seen many revisits since it's first proof of concept and probably will still see many more as I'm not 100% happy with it.
I still remember at the very first internal meeting we had, how I was trying to explain my vision for a Layout Manager in Gantry. I had in my head this idea of making the whole layout much smarter than what we had so far. I wanted to have the end-user being able to drag things around in a sane way, being able to add and resize columns without the restriction of a 12 grid. I wanted the end-user to be able to drag in blocks of code and configure them right from there (what we now know as Particles).
This was hard to explain initially because there really wasn't anything like this at the time, just some crazy ideas. So I started creating a proof of concept, it was a single HTML page with a fully working Layout Manager. It was insane what you could do, it was way more flexible than what it is today. So much so that we all agreed that it was just too much. Although the capabilities were immense, it was quite hard to reason about.
Originally you could create sections from scratch, move them up and down, add them to the right or left side of another section, you could turn a block into a section by just dragging it outside. It was quite insane! There were just too many hot spots for things to get dropped into, the code base was really complex and hard to maintain, a huge amount of exceptions. Overall it was working but it was just feeling too fragile and too overwhelming.
After plenty of passes, changes, rewrites and limitation, we eventually all liked what I got and Layout Manager was born. We knew that the Layout Manager alone would have made Gantry a lot more modern and user friendly than what it used to be. Nothing of this would have been possible if we didn't rewrite everything from scratch.
But like I said, I still see myself rewriting this some day, I would like to use ReactJS or VueJS to properly maintain the State of the Layout Manager. I would like to be able to add a few of the features that I originally had, back into place. Something I've been thinking about and that I would like to get to at some point.
The Gantry Framework has always been one of the most popular Joomla frameworks. Do you think that Gantry 5 might become one of the most popular WordPress frameworks as well?
It's really hard to tell. Gantry Framework in Wordpress is recognized and adopted by many but the community for WordPress is very different than it is for Joomla. In WordPress there are a lot more options to choose from and the competition is quite high. Nowadays Page Builders are also trending a lot but this has never been Gantry philosophy. It might change in the future but it's definitely not our priority at the moment.
I also think that because Gantry always started for Joomla first and then expanded to the other platforms, kind of made the other platforms skip Gantry as an option altogether.
Although with Gantry 5 we haven't picked a platform of choice. Gantry 5 has been built from the ground up as a standalone Framework. On top of this base we then implemented Joomla support, WordPress support and finally Grav support. This is very different than what we did with Gantry 4, where we built the framework on top of Joomla and then ported it over to other platforms.
Tell us a bit more about Gantry's future and roadmap. What can we expect next, what do you think about making the Particles installable and launching an official Particle Marketplace? Basically, what are your ambitions and how far do you think Gantry 5 can go?
We have so many plans for Gantry and so little time! Let's see, there's quite a lot we know we want to implement. First and foremost, we really want to address the multi language limitation that comes with the Particles and Atoms. Some ground working has been made but what we envision is a dedicated admin section where managing languages for each particle instance and Outline is much easier.
We definitely want to address the export/import, again for this a lot of ground working has been made already but we do need a good interface and the Particles need to be reorganized a bit.
Right now the Particles Twig and YAML files all reside in the same
particles folder. This has worked well so far but we do need to reorganize them so that each particle has its own container. Once this is done it will be easier to have dedicated assets specific to the Particle which in turn will make the export/import a lot better.
All of the above will also be great for when we will have an official Marketplace for Particles and Atoms. You guys did a good job implementing your own Marketplace and I know people really like that. It would be really nice if we could manage to have a centralized Marketplace where anyone can put their work at the community disposition. The Marketplace has been on our agenda since pretty much the concept of Particles was born, we just never really got into implementing anything yet as we mainly focused on bringing in all the platforms we wanted first.
I personally have a lot of things I would like to revamp myself. Like I said above, the Layout Manager is one of them, but also the whole admin UI and UX could do with a refresh.
Some fields could do with some improvements. The font field could be expanded to use more sources other than just Google Fonts, the text field could become a WYSIWYG and so on.
This is all off the top of my head which is now spinning!
You are also a Lead Developer in the Grav CMS project. Tell us a bit more about it as well. Where is Grav at moment and what are your plans and ambitions for it?
To be honest I was a bit late to the party with Grav. When Andy started developing Grav, my main focus was fully dedicated to Gantry, Matias then jumped on board with Grav and then back to Gantry again. We then basically worked a bit on Gantry and a bit on Grav. In a way Grav and Gantry were getting developed at the same time.
So when I first approached Grav, most of the architecture was already in place. What I really wanted back then was a package manager and I really wanted it to be fully working before launching. So GPM was one of the first thing I did in Grav.
Grav has come a long way since it's first release, I still remember our meetings when Grav was slowly taking shape in Andy's mind. We had a lot of discussions on what today's issues were with the CMS world and what we could do to make something better.
Today Grav is seeing a lot of people understanding why Grav exists in the first place. The idea of a flat-file CMS that is fast and easy to use, that can be taken anywhere by just zipping a folder and unzipping it somewhere else, that can be completely configured by just editing files, that doesn't require any knowledge about DB, is what makes it really appealing for a lot of people.
We have a lot of ambitions for Grav, we have plans for a Grav 2.0 and one of the main things we want to address is a RESTful API built-in into Grav. We are working on an Admin Pro plugin with a lot of great features that have been requested.
Anything else you’d like to share?
I just want to highlight the fact that both Gantry and Grav are Open Source projects. What this mean is that the projects can be freely used and changed while behind them there are developers that work on making sure issues gets fixed and features get implemented. Often people tend to forget this and sometimes we have to deal with people frustrated and outraged because some issues aren't yet fixed or some features aren't yet implemented.
Open source means that anyone can contribute to the project and any change that gets added to the code will be available to the rest of the community.
Thank you very much for this interview Djamil! I'm sure it will be very interesting for all our readers and for all Rockettheme, Gantry and Grav fans out there :)