🌱 Seedling thought

28 of 365, Static Site Generation, why I wrote Tapestry

planted on in: 365 day writing project and 365DayProject.
~380 words, about a 2 min read.

This is day twenty-eight of my attempt to write something, anything, every day for 365 days in a row; currently 7.67% complete with a six-day streak.


I am the author of the PHP Static Site Generator: Tapestry, at its time of creation there were only two other PHP based static site generators; Sculpin and Jigsaw, both of which I can see are still in active development.

This website was originally powered by WordPress; however when my dedicated server went down taking that version of the website with it I decided to redevelop PhotoGabble using Sculpin instead.

That went well for a while except I came across issues with the way Sculpin generated pages that stopped me from doing something. I say something because I no longer remember the reason why but, I do remember not being able to understand the Sculpin codebase well enough to fix my issue in a PR. No, instead I did what all software developers do, I developed my own software!

Sculpin uses the Twig template engine and Jigsaw uses the Laravel Blade engine; I love simplicity and so chose to go with PHP Plates which because PHP is essentially a template engine in its own right, provides a Twig inspired thin layer of helpers while remaining 100% PHP.

The last version of Tapestry was v1.0.12 released in January of 2018; five years ago... this project had massive potential, it still does. I began a v2 refactoring of Tapestry that was last touched in August 2018 however because I started using Netlify to deploy PhotoGabble I switched from Tapestry to 11ty as my static site engine and at this point refactoring the website to use Tapestry would probably be as big as job as rewriting Tapestry itself.


I have always had the thought that Tapestry is only temporarily shelved, originally it was because I had been made redundant, and then because a second baby came along and then, and then.

The project itself has a pretty solid set of unit tests and the documentation makes for a good specification. Maybe one day i'll bring it out of hibernation, maybe once I get the rebuild of The Kabal Invasion finished i'll return to it. Maybe.


Page History

This page was first added to the repository on August 7, 2023 in commit 68b4cf13 and has since been amended twice. View the source on GitHub.

  1. refactor(#304): move files into src folder
  2. publish: 29 of 365, PHP isn’t that bad
  3. publish: 28 of 365, Static Site Generation, why I wrote Tapestry