CribJS
Developed to bring the free software idea to the web, CribJS is a pure serverless HTML5 Sandbox.
Running in your browser, it works offline without extension and without server. You can add new applications, modify them, extend them and share as you will. You can also Edit CribJS within CribJS, it is self editable.
CribJS is split in two elements: CribJS Bootloader and CribJS Editor. And is available at this address: https://cribjs.nexedi.net
CribJS Bootloader
A Small JavaScript bootloader (currently being integrated in ERP5's erp5_cribjs_bootloader business template), that utilizes the browser serviceworker API and jIO to load the CribJS Editor in the browser storage. The Service Worker will then serve this data from the storage instead of fetching them.
CribJS Editor
CribJS Editor provides website management and edition under the name of applications. It connects to Crib Enabled Sites throught the Crib Enable Connector. It can list the list of pages on the website, can edit them and add new one. It allows users to configure the way of viewing a specific website that supports CribJS. Each website is a different domains that CribJS Editor represents as Apps. As long as you have the Zip of a Web Site or Web App, you can easily add it in CribJS and edit it thanks to that. By default CribJS deploys Application in the wildcard domain https://*.cribjs.nexedi.net allowing to have infinite versions and website (within the limits of storage allowed by your browser).
Based on the principles of the free web and its origins of connecting raw pieces of information, a user should have the freedom to view content in whichever way he or she desires. CribJS will allow to do this by enabling to customize CribJS-supporting websites. CribJS was created by Cédric Le Ninivin at Nexedi and is part of their free software stack.
Why use CribJS?
Idealism - the web was and is about connecting and exchanging information through HTTP(S). Text Transfer. If one wants to stay close to these origins, viewing a web page with additional scripting and style enforcing a certain view on the actual content feels like a book's pages being reshuffled according to the publishers preference. Or a graph of information being moderated by an application deciding what is best for you to see. And what not. Form follows Function - but function likely wasn't meant to be a JavaScript function and server-side algorithm enforcing a layout aimed at maximizing profit generating parameters from page views to time on page.
Alas. Back to the basic and CribJS-supporting ("cribjable") websites providing content and their view of it separately while giving users the freedom to modify and edit the latter to their personal preference - be it for idealistic or at least aesthetic reasons.
Example
Edit a copy of this site in CribJS
Getting Started
Source Code
The source code can be found in the aforementioned officejs repository in the web page module.
Requirements
- Serviceworker API Support (Caniuse)
- RenderJS - HTML5 component framework
- jIO - JavaScript Input/Output
Installing CribJS
Follow the steps outlined in how to setup a website using CribJS for creating a static website which is fully editable in your browser and can save/fetch changes from an external storage of your choice (like webDav).
Latest Releases
CribJS is still in its infancy and has not yet reached a state warranting having a tag and release.
Documentation
Tips and Tricks
- To remove your modifications manually, use the
chrome://serviceworker-internals
Tests
Automated test results are published on www.erp5.com.
FAQ
Can I use CribJS on every website?
No. Only pages with the CribJS logo "monkeywrench" allow to switch a page into what is termed "dev mode" where you can edit and save source files. It also requires most of the rendering to be done on the browser, so server-side rendered HTML pages are therefore difficult to tweak aside from the visuals (changed via the provided CSS files).
Can I use CribJS on every browser?
No, because CribJS uses the serviceworker API, which is not available on all browsers (see caniuse Serviceworkers).
What's the purpose of CribJS then?
The web has evolved from it's original idea of linking pieces of information. Todays website add a lot of visual value add (or clutter) as well as a certain view on the content, which a viewer not necessarily should be forced to follow. With CribJS a viewer is free to tweak the design of a site and alter the way it is viewed to his liking. A theoretical freedom of course requiring a certain degree of programming know-how.
Licence
CribJS is Free Software, licensed under the terms of the GNU GPL v3 (or later). For details, please see Nexedi licensing.