DEV Community

Cover image for A good code thief
Batuhan Ipci
Batuhan Ipci

Posted on • Updated on

A good code thief

While developing palpatine, I found myself browsing through the internet and getting inspired by how other static site generators (SSG) tackled my problems (i.e. supporting md files, stylesheets, exception handling). During this process, it was obvious to me that JavaScript dominated the field of static site generators, as almost all the options I looked at, were Javascript-based. Some of the interesting ones I found were: Docusaurus, Gatsby, Jekyll and Eleventy. They all have their unique features, competing with all other SSGs, and are constantly being maintained by the community in GitHub.
ย 
Docusaurus has a showcase page where you can see how other serious projects are using their tool, such as Jest website built with Docusaurus, it is inspiring when you see their pages professionally done. So I initially read their documentation on how to get started, very straightforward, and within minutes I was able to set up my docusaurus site! Key features to note are: easy to use, beautiful themes, precise documentation and customizable.
ย 

Follow up on palpatine

Across all the JavaScript-based SSGs, palpatine is developed from the ground up using C++ and CMake as the build system. As the developer and maintainer of palpatine my main concern is to make it lightning fast compared to others. Currently, palpatine1.5 can generate a static site in less than 1 second. I've also made sure that it is easy to use, with a simple command line interface. The documentation is also precise and easy to follow. However, it is lacking one of the core features, supporting markdown files fully. I've been working on this feature for the past few days and I found a header-only Markdown parser library maddy. But it seems that it has been more than a year since the last commit was made to the library. I'm not sure if it is still being maintained. CMake was quite upset about how outdated it was.
ย 
cmake-warning

Thus, I was not able to use as a git submodule with CMake like I have used for other libraries. I instead cloned maddy and used only the particular include directory within the palpatine. This was successful supporting some markdown features but failed in several aspects (i.e. supporting tables, crossed texts like text, specifying language for code-blocks ). I have created issues on palpatine to resolve these problems, but I believe most of them are library related. Currently, you can see the latest progress on the sample deployment of palpatine.

Top comments (0)