Dwoo PHP template engine
A modern, flexible, Smarty-compatible template engine maintained across PHP5 and PHP7.
- Role
- Maintainer
- Period
- 2014 — 2019

Maintained a Smarty-compatible engine across two major PHP versions, keeping back-compat for live downstream apps.
Refactored the plugin architecture so extensions could ship as Composer packages rather than dropped-in files.
Brought the test suite up to date with PHPUnit and re-enabled CI on every push to main.
Triaged and merged community PRs that kept the project relevant for legacy stacks well beyond Smarty 2's twilight.
Why I picked it up
When I inherited Dwoo, it was a beloved-but-stalled corner of the PHP world: a Smarty-compatible templating engine that a long tail of small businesses still depended on for content sites, intranets, and email rendering. Smarty itself was moving, the wider PHP world was moving even faster, and Dwoo was stuck on a PHP5-era assumption stack — class autoloading conventions that didn't fit modern Composer projects, test scaffolding that no longer ran cleanly, and a plugin layout that required dropping files into specific paths.
It seemed worth the time. Not glamorous work, but the kind of maintenance that lets real projects keep running.
What changed under the hood
The first job was making the engine PHP7-clean without breaking PHP5 sites that hadn't migrated yet. That meant reading every reflection-heavy code path, fixing the bits that relied on quirks the new engine had tightened, and adding test coverage for the corners that had previously been "just lucky."
The second job was the plugin system. The original Dwoo expected plugins to live under specific folders, named in specific ways, discovered at runtime. That worked in 2008. By 2015 it was a foreign concept to anyone who'd come up on Composer. I rebuilt the loader so a plugin could be a normal Composer package, registered explicitly, and discovered without filesystem magic. Existing plugin authors didn't have to change anything; new ones got the modern path.
The third job was CI and tests: PHPUnit upgrades, a working Travis (and later GitHub Actions) pipeline, and a test matrix that ran against every supported PHP version. Once it was green, regressions actually surfaced.
Outcomes
- Two more years of clean releases with no breaking changes for downstream apps.
- A handful of community contributors who could now ship plugins via Composer.
- A working test suite that gave any future maintainer a chance.
Why I eventually stepped back
By 2019 the wider templating story in PHP had shifted decisively to Twig + Blade, and Dwoo's user base had naturally tapered. I left the project in good shape — green builds, clean install, plugin packages on Packagist — and turned my time toward newer work. The repository remains archived but installable for the long-tail sites that still need it.
Want something like this?
Available for freelance and contract work. The fastest way to start a conversation is email.