Skip to main content

ADR-0001: Choosing the framework for the new secureCodeBox Website

Status:ACCEPTED
Date:2019-08-21
Author(s):Daniel Patanin daniel.patanin@iteratec.com, Jannick Hollenbach jannick.hollenbach@iteratec.com

Context

There are tons of different frameworks for building websites out there. We must choose the most fitting one for our use, fulfilling our mandatory requirements:

• Common programming language, if applicable easy to learn • Overall easy to use and start-up, also locally • Tutorials, examples and a good documentation • Bonus points for great and many easy to use templates and plugins • Needs continuous support and contribution • Must be able to be deployed as GitHub pages

We will choose from the following popular/trending:

Research

These frameworks do all fulfill the requirements to the extent that I estimate them as wellsuited. First, I researched the listed features on the respective sites or quickly googled after it specifically and found instantly the requested feature. I followed up with a general overview of how old the frameworks, how popular they are and for example pages build with them. Afterwards I searched for comparison blogs and posts, mostly to examine their comments. Most of these „pro-cons “-posts are inaccurate and very superficial, but luckily because of that the comment sections hold interesting discussions and comparisons from overall features and usability to specific issues and problems of each framework and which framework fits what use-cases in general. After this research I’ve come to a majority of similar experience sharing and discussions. These described the distribution of these frameworks as follows (roughly summarized):

Gridsome is like Gatsby just for VueJS. Gatsby is blazing fast after building the pages but requires a little bit more understanding of JavaScript and React and may not be as easy to get behind if you’ve never built a site with a static site generator before. Hugo is fast in building and based on Golang. But as a newbie to that language you’ll find yourself using the documentation very much, unless you learn this language to a curtain depth. Jekyll is simple in templating and very good for quickly starting a small blog site but based on ruby and therefore requires ruby dependencies.

Decision

So, it seems that Hugo is a pretty good choice for sites with many, many…. like many pages. Jekyll seems to fit for a quick build. Gatsby and Gridsome require a bit more time to learn but have their advantages in speed and growth of the site. And whether you choose Gridsome over Gatsby relies on whether you want to use VueJS or not.

Finally we’ve decided to use Gatsby. Some of the main reasons is it’s fast performance, the extensive documentation and tutorials and also the language, since Hugo (the other framework we considered mainly) is based on Golang, and as for my part as a developer I feel completely comfortable and prefer working with JSX. Overall it comes down to preferences mostly, since we’re not going to build a giant Website, nor are we planning on implementing “crazy” Features.

Consequences

For the integration of our multi-repository documentation we’ll use Antora if working this out with Gatsby is going to be more difficult than integrating Antora. We’re aware that using Gatsby requires a bit more maintenance and has the drawback, that if anybody else will maintain or work on the website, this person will need to at least understand the basics of React and GraphQL.