After a few months of absence due to legal expertise, we migrated the (wonderful) arsouyes website to a new CMS and, at the same time, pay back the technical debt accumulated on the old one.
Since the awakening of the site in 2017, we were using our own static CMS: Pandoc to compile markdown into
html, make to orchestrate the compilation, gitlab for continuous deployment and docker to isolate stages. We even integrated a link check step and everything worked great.
As we could imagine, after a few years, we reached the limits of the system... maintaining all the indexes by hand is already not very fun but having to wait 15 to 20 minutes to put a commit in production (90% of which to check links) is not what we can call "efficient".
Of course, we could have found solutions to fix refund this technical debt and fix these problems but after having thought about it, and especially after these last months of work which prevented us from publishing here, we had to face the truth in the face:
Our time is limited, we must devote it to the most important things.
Since publishing a CMS is not one of our priorities, we have chosen to take an "off the shelf" one. After testing a few CMS to see which one would best suit our needs, we took those three weeks of Easter school vacation to do the migration (and a bit of the following week).
We switched to “grav” CMS to which we added some plugins and patches, which allows us to generate category pages and even tags.
Choosing a CMS off the shelf is as difficult as choosing ham in a supermarket. No matter what criteria you have, there are always several products that will match it without any one taking the lead...
For the arsouyes website, we wanted free and serious software using markdown files in directories that correspond to the structure of the website (to migrate more easily). Easy integration with git (and branches) and, in case of an admin interface, LDAPs would be nice.
Last criterion: that we can install it on our own servers. Even if it is more restrictive than a solution that does everything, we prefer to remain in control of the personal data collected by our site (none). You are here with us and not with them.
We are sure that many other software could do it very well but we have set our sights on grav, a free CMS in PHP, using files for its "database", A template engine (twig) to produce the pages that can be installed on its servers.
As always, there are plenty of plugins available but we only had to install 4 to meet our needs:
- [mathjax] (https://github.com/sommerregen/grav-plugin-mathjax) for math equations,
- [highlight] (https://github.com/getgrav/grav-plugin-highlight) for syntax highlighting,
- [image-caption] (https://github.com/trilbymedia/grav-plugin-image-captions) for the captions of the images,
- [antispam] (https://github.com/skinofthesoul/grav-plugin-antispam) to obfuscate email addresses.
We originally used login-ldap to login through our Active Directory accounts and git-sync to synchronize site files with our gitlab. They worked great, but since we weren't using the admin interface, we removed it, and those plugins followed.
For CI/CD, we decided to version the whole site; content and CMS. For each branch, we can very easily deploy and maintain autonomous environments. Production is deployed to the host with rsync (and a symbolic link allows us to atomically change versions).
Besides these purely technical aspects, we also took the opportunity to clean up and improve the site itself. Among other small things:
- The categories which are now generated automatically, we took the opportunity to clean them up a bit,
- The tags, a new feature, which allow you to be more precise but without any hierarchical organization.
While we were there, we also created a page for our trainings where we hope to be able to provide you with content and another for our interventions because it's always nice to participate in events and press articles.
On the style side, we were pretty happy with the previous one, but since purple has become fashionable for all sites that want to be a little “technological”, we have come back to something more blue.
And after ?
Overall, the migration is complete and we will (finally) be able to devote ourselves to the production of the content but we still have a few details to settle; force TLS (done), improve RSS (done) and other small details.