Skip to content
GitLab
    • GitLab: the DevOps platform
    • Explore GitLab
    • Install GitLab
    • How GitLab compares
    • Get started
    • GitLab docs
    • GitLab Learn
  • Pricing
  • Talk to an expert
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
    Projects Groups Topics Snippets
  • Register
  • Sign in
  • core-perl6 core-perl6
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
    • Locked files
  • Issues 15
    • Issues 15
    • List
    • Boards
    • Service Desk
    • Milestones
    • Requirements
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • pheix-poolpheix-pool
  • core-perl6core-perl6
  • Issues
  • #87
Closed
Open
Issue created Sep 13, 2020 by Konstantin Narkhov@pheixOwner

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:

  1. FastCGI (successful — we're spending a lot of time only for first start now);
  2. 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

  1. FastCGI;
  2. Improved object management (global objects, run-time objects, nested pools);
  3. Headless backend: get content via REST API;
  4. Separate compression layer to Pheix::Model::Database::Blockchain (details);
  5. Embedded ultra fast content tags render based on Raku grammars;
  6. Fast clientside content templating with JavaScript and REST API;
  7. Deprecate captcha generation with ImageMagick and migrate to reCAPTCHA;
  8. Deprecate November CGI library and write own module with hanlers for POST/GET requests;
  9. Run fully functional Presentation Layer of https://pheix.org on new backend engine;
  10. #87 (comment 451317852)

Breaking changes

  1. Due to FastCGI: no prints anymore, we're living in FastCGI paradigm;
  2. Due to clientside templating: another template variable format, no content render at backend;
  3. 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.

Edited Nov 23, 2020 by Konstantin Narkhov
Assignee
Assign to
Time tracking