Skip to content

Latest commit

 

History

History
114 lines (83 loc) · 6.64 KB

building-notes.md

File metadata and controls

114 lines (83 loc) · 6.64 KB

Multihost/Multisite Markdown Hub for Frdlweb CMS

NIY: Place content files for example.com into userdata/sites/example.com as in the example code. Changed: ° Use Webfan Webhosting API instead ° Introduced runtime "@Scopes":

  • @transport - Transport and Transaction Contexts (via API/WEB)
  • @tmp - Avoid any persistances in runtime if possible.
  • @session - Avoid any longtime persistances in runtime if possible, although persist states in a time-limited session (user-session or other client-session).
  • @shared - The FRDL_WORKSPACE directory shareable by all sysusers/webhosts apps.
  • @global - The /.frdl Workspace-Directory is placed/running in the machine users home directory.
  • @www - The /.frdl Workspace-Directory is placed/running in the public web accessible DOCUMENT_ROOT folder.
  • @cwd - The /.frdl Workspace-Directory is placed/running in the current working directory.
  • ?string - Specify a custom directory (e.g. a Modules folder) The availability of some scopes may depend on the PHP open_basedir settings.

Building Flavors and Configurations

° Enduser Webmaster Developer
Audience - Who can use Webfat? A Enduser of an Webfat instance with WebfatHub, or someone using Webfat App/Browser. A Webmaster can run Webfat on his own host or webhosting, he can use and configurate his instance without handling any source code. This is the recommended Flavor* for the beginning so far. The Developer want to alter the source code and write his own module and implementations.
Building Flavor Webmaster [DEFAULT] Developer
Webmaster and Developer can select one of two kinds of "Building Flavor" the instance should prefer. This must be done in the .envfile or in .webfan.env or in .webfat.env. This option influences if you are Webmaster or Developer!!! The Enduser cannot set environment variables. Get the best Code without to be a programmer using the No Code Paradigma This option influences how Webfat compiles the application! If this enviroment variable is not set, it will be set to this value! Develop and compile the core and your custom modules on your own machine using Runtime Compilation This option influences how Webfat compiles the application! You have to set this manually!
env Environment Variable "FRDL_BUILD_FLAVOR" FRDL_BUILD_FLAVOR = '1.3.6.1.4.1.37553.8.1.8.1.1089085' FRDL_BUILD_FLAVOR = '1.3.6.1.4.1.37553.8.1.8.1.575874'

Features Paradigma

Webfat will provide some special specs. implementations.

Runtime compilation

spec: 1.3.6.1.4.1.37553.8.1.8.1.575874

ID: weid:1-8-1-CCCI-5

/ISO/Identified-Organization/6/1/4/1/Frdlweb/weid/1/8/1/NoVersion

Instead of installing a packaged version, we compile a composition of components on a per instance base. The installation may not be portable to another machine.

Frdlweb CTA Storage

spec: 1.3.6.1.4.1.37553.8.1.8.1.16606

ID: weid:1-8-1-CTA-1

Package: frdl/cta

Save data/files based on a content hash. Same data will only be saved once, saving disk space.

XHash

- Hashing algo is based on the checksum and content size (2keys)

spec: 1.3.6.1.4.1.37553.8.1.8.1.16606.1.56234465

ID: weid:1-8-1-CTA-1-XHASH-3

Package: frdl/cta

To reduce the possibility of collisions we store the hash along with the content-size.

- The CTA is payload is chunked by chunks of the same size

spec: 1.3.6.1.4.1.37553.8.1.8.1.16606.1.27200801029

ID: weid:1-8-1-CTA-1-CHUNKED-4

Package: frdl/cta

Files/content is saved into chunks of the same size/length.

Central Codebase - Client

spec: 1.3.6.1.4.1.37553.8.1.8.1.984.17868.761724857

ID: weid:1-8-1-RC-DSC-CLIENT-0

Package frdl/remote-psr4

Load code from an API "on the fly" when needed.

No Code - Config only

spec: 1.3.6.1.4.1.37553.8.1.8.1.1089085

ID: weid:1-8-1-NCCD-3

Compliant to User Data Manifesto 2.0 and considering security issues, we store ONLY DATA on the userlevel (e.g. html, xml, json, md, ...) NOT bound to any implementation code. Compliant to Config-Only-API (?) and compliant to User Data Manifesto 2.0 and considering security issues, we allow/request/expect any modification on the instance level (e.g. theme, sitesettings, plugins and modules) ONLY BY API/INTERFACE. The instance level is meant to be any "installation" or instance of the NCCD Software (CMS, API, ...), this is where we do NOT DO HAVE ANY CODE ISSUES: This is deligated to the scope of the SaaS-Codebase-Provider and could be done via local shares or remote shares of source code.

Twelve Factor Application

spec: 1.3.6.1.4.1.37553.8.1.8.1.83642115915

ID: weid:1-8-1-12FACTOR-7

If however possible, Webfat follows the Twelve Factor Application Development Paradigma.

  • I. Codebase One codebase tracked in revision control, many deploys
  • II. Dependencies Explicitly declare and isolate dependencies
  • III. Config Store config in the environment
  • IV. Backing services Treat backing services as attached resources
  • V. Build, release, run Strictly separate build and run stages
  • VI. Processes Execute the app as one or more stateless processes
  • VII. Port binding Export services via port binding
  • VIII. Concurrency Scale out via the process model
  • IX. Disposability Maximize robustness with fast startup and graceful shutdown
  • X. Dev/prod parity Keep development, staging, and production as similar as possible
  • XI. Logs Treat logs as event streams
  • XII. Admin processes Run admin/management tasks as one-off processes