--- title: Site Generators title_extention: Top open source Tools tagline: Top open source Tools #date: 2023-01-01 #last_modified: 2023-01-01 categories: [ Jekyll ] tags: [ Generators ] image: path: /assets/image/modules/attics/machine-generator-1920x1280.jpg width: 1920 height: 1280 alt: Site Generators group: Featured series: Featured #tts: false fab_menu_id: open_toc comments: false regenerate: false resources: [ lightbox ] resource_options: - attic: padding_top: 630 slides: - url: /assets/image/modules/attics/machine-generator-1920x1280.jpg alt: Photo by Isis Françal on Unsplash badge: type: unsplash author: Isis França href: //unsplash.com/@isisfra --- // Page Initializer // ============================================================================= // Enable the Liquid Preprocessor :page-liquid: // Set (local) page attributes here // ----------------------------------------------------------------------------- // :page--attr: // Place an excerpt at the most top position // ----------------------------------------------------------------------------- [role="dropcap"] This article highlights the top Open Source projects providing static site generators, so-called SSGs, in many different programming languages. You will find Jekyll one of them. A SSG is a software tool that assists in creating websites by generating static HTML, CSS, and JavaScript files. Unlike dynamic websites that generate content on the server side in response to each request of a user, static sites pre-generate the content upfront it is served to users. excerpt__end // Load Liquid procedures // ----------------------------------------------------------------------------- {% capture load_attributes %}themes/{{site.template.name}}/procedures/global/attributes_loader.proc{%endcapture%} // Load page attributes // ----------------------------------------------------------------------------- {% include {{load_attributes}} scope="all" %} // Page content // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mdi:clock-time-five-outline[24px, md-gray mr-2 mt-4] *3 Minutes* to read // Include sub-documents (if any) // ----------------------------------------------------------------------------- [role="mt-5"] == Dynamic Webs A typical website driven by a CMS works by building each and every page *dynamically*. That means fetching the content from a database to pass them over to a an middleware engine to load the content, add the required structure information, for example CSS styles, and Javascript components if needed. This means every page is assembled *on demand*. .Accessing Scheme for a CMS lightbox::kickstart-wiad--dynamic-web-access[800, {data-kickstart-wiad--dynamic-web-access}] callout::1["Web Browser"] callout::2["Web Server"] callout::3["Rendering Engine (e.g. PHP-based)"] callout::4["Database (e.g. MySQL, Postgres)"] callout::5["Static content (Images, Videos, JS- and CSS files) and Caches", ml-2 mb-3] [role="mt-5"] == Are CMS required? For many websites, dynamic page generation is entirely unnecessary and adds unwanted risks in terms of complexity, performance losses, and security issues. After all, the content of most websites changes, when the content authors make changes. Why the hell should a web page always be assembled on demand if there are no changes? [NOTE] ==== To be fair, most CMS are providing caching systems for web pages to prevent unnecessary creation processes. It is not easy to implement such a caching strategy, and in the very end, it adds the next level of complexity. ==== A static site generator takes a different approach and generates all the pages of the website *upfront*. That does not necessarily mean that a static website is always built from scratch. Modern generators support a so-called incremental build. When there are changes detected to the content, only selected pages are rebuild. .Accessing Scheme for a Static Web lightbox::kickstart-wiad--static-web-access[800, {data-kickstart-wiad--static-web-access}] callout::1["Web Browser"] callout::2["Web Server"] callout::3["Server-side rendered (prepared) static content", ml-2 mb-3] [role="mt-5"] == Static Webs Overall, statically build web pages having no moving parts in the deployed website. This results in browser-side caching only, the performance goes up, and static sites are far more secure because they *build* already and cannot be modified. To find out what Open Source SSG are available today and their ranking in terms of popularity, go for Jamstack. You'll find a comprehensive list of static site generators used today. [role="mb-4"] Check the most popular site generators available at the {url-jamstack--generators}[Jamstack, {browser-window--new}] site. .Top Ratings at Jamstack of October 2022 image::/assets/image/posts/featured/jamstack-generators.jpg["SSGs at Jamstack"]