Pheix public β-release suggestions
23, november 2020
Overview
As the private β-release has shown, Pheix at current implementation has generic render time problem. If we're rendering content on server-side with Template::Mustache we're wasting ~ 3 seconds. Basic improvements:
- FastCGI;
- Careful object management — now we have the single template with variables (title, content, etc), well if we render common variables at first start and then use own reactive render at runtime we will got more speed; also we need to create all static objects (such as
Pheix::Utils
) at first start; - Client-side content rendering — use Riot JavaScript components library for rendering content with JS on client, it's based on REST API and in future will lead Pheix to true headless CMS.
What's functionality will be at β-release
- FastCGI;
- Improved object management (global objects, run-time objects, nested pools);
- Headless backend: get content via REST API;
- Separate compression layer
Pheix::Model::Database::Compression
(details, w/oCompress::Bzip2
integration); - Embedded ultra fast content tags render based on Raku grammars;
- Fast clientside content templating with [Riot JavaScript components library] and REST API;
- Fully functional Presentation Layer on new backend engine;
- Addons itegration with embedded routing;
Pheix::Addons::Weblog
with basic functionality — #108.
Breaking changes
- Due to FastCGI: no prints anymore, we're living in FastCGI paradigm;
- Due to clientside templating: another template variable format, no content render at backend;
- Due to headless backend: content is delivered via REST API (Ajax) from backend JSON API gateway;
- New addons installation paradigm, so no logical compatibility with P5 Pheix — addons are independent Raku modules, they could be installed via
zef
; - The CMS configuration (what addons are used) should be stored at
config.json
.
Dates
There are a lot of principal changes, so the dates could vary at all. Nevertheless, we're starting with breakpoint at 30 December 2020.
Perspectives & further steps
Use Riot JavaScript components library for rendering content with JS on client, it's based on REST API and in future will lead Pheix to true headless CMS.
In this case we would implement a pool of administration layer REST APIs and connect P5 Pheix. This will be the great tandem: Raku on backplane and Perl5 as frontline agent.
This can be considered within Release Candidate 1 roadmap.
β-release issues trace
Pheix::Addons::Weblog
— #108;- Addons installation — #106;
- Addons routing — #107;
- Separate compression layer to
Pheix::Model::Database::Compression
— #86 (closed); - Night mode to default design skin — #101 (closed);
- Unit tests for
Pheix::Model::Route
— #103 (closed); - Additional unit tests for
Pheix::View::Pages
— #104 (closed); - Migration to FastCGI — #88 (closed), unit tests — #96 (closed);
- Skipping Goerli network tests on install via
zef
— #100 (closed); - Remove skip at JSON tests for Goerli network — #97 (closed);
- META6.json — #99 (closed);
- Fix warnings at blockchain compression test — #98 (closed);
- XML templating engine — #94 (closed);
- API debug page entirely from JavaScript — #92 (closed);
- Fix failures at
Pheix::View::Pages
test — #91 (closed).
Credits