Public β-release suggestions
Credits
These details are shared at: https://narkhov.pro/pheix-public-beta-release-suggestions.html.
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 or (our early implementation HTML::Template) we're wasting ~ 3 seconds.
We have tried the next improvements:
- FastCGI (successful — we're spending a lot of time only for first start now);
-
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.
What we have to improve:
Great idea is to use Riot JavaScript components library for rendering content. It should based on REST API and in future will lead Pheix to true headless CMS.
What's functionality will be there
- FastCGI;
- Improved object management (global objects, run-time objects, nested pools);
- Headless backend: get content via REST API;
- Separate compression layer to Pheix::Model::Database::Blockchain (details);
- Embedded ultra fast content tags render based on Raku grammars;
- Fast clientside content templating with JavaScript and REST API;
-
Deprecate captcha generation with ImageMagick and migrate to reCAPTCHA; -
Deprecate November CGI library and write own module with hanlers for POST/GET requests; - Run fully functional Presentation Layer of https://pheix.org on new backend engine;
- #87 (comment 451317852)
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;
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
Great idea is to use Riot JavaScript components library for rendering content. It should based on REST API and in future will lead Pheix to true headless CMS.
In this case we will implement a pool of administration layer REST APIs and connect Perl5 Pheix. This will be the great tandem: Raku on backplane and Perl5 as frontline agent.