Developer resources
- Qworum specification: The target audience for this specification are the developers of Qworum applications and services.
- JavaScript library documentation: Web pages use this ES6 module for accessing the advanced Qworum capabilities of web browsers.
- JavaScript library source code (GitHub).
- Application template (GitHub). A simple versioned multi-language template for Qworum-based web applications/APIs.
- The Object-Semantic Mapping framework (GitHub). OSM is similar to ORM, except that it is for semantic RDF data. This framework is completely standards-based and independent from Qworum, but Qworum may leverage it for some of the planned services that are on our roadmap.
- Application template #2 (GitHub). For applications that use semantic RDF data instead of JSON. A great starting point for knowledge management projects wishing to leverage Semantic Web technologies. Uses OSM in addition to Qworum's native RDF capabilities.
- Visual Studio Code extension on Visual Studio Marketplace: Provides XML code snippets for writing static Qworum scripts.
- JavaScript library documentation on Geminispace:
For developers who prefer to stay in the terminal for browsing content, a Geminispace site is available at gemini://qworum-jdoc.ddns.net/ (URL subject to change). Recommended browser for the terminal: amfora. And there is also a Web-based browser (SmolNet Portal) and a GUI-based browser (Lagrange). - Email support.
- Google group: Visit this group for feature requests, bug reports and general discussion.
Downloads
Developing with Qworum
Qworum services must not add new entries to browser tab histories. To ensure this, Qworum applications must be launched by clicking on a link in another tab, such as this one.
This constraint is needed because being able to use the browser's forward/backward buttons can cause the Qworum session state to go out of sync with the UI that the end-user sees. As a developer, you have the option of leaving your non-Qworum application unchanged and providing a separate Qworum API for calling third-party services and being called by them. Alternatively, you can transform your Web application into a Qworum application and, even better, develop a Qworum application from scratch. Transforming any Web application into a valid Qworum application is a simple matter of making sure that the application does not add new entries to the browser's tab history. At this point your application will have become a valid Qworum API consisting of one endpoint. You can then factor out parts of your monolithic application into separate endpoints. Through refactoring you will then be able to build complex user flows by orchestrating these endpoints. Refactoring also will allow you to make parts of your user flows available to third-party applications.Transforming web applications into Qworum services
Easy-to-use JavaScript library for developers
In order to use Qworum, web pages need a special JavaScript library that gives access to the Qworum capabilities of browsers. This library is freely available on a JavaScript CDN. Here is how this works:
// Add an article to a shopping cart.
import { QworumScript, Qworum } from 'https://esm.sh/gh/doga/qworum-for-web-pages@1.7.0/mod.mjs';
const
Script = QworumScript.Script.build,
Sequence = QworumScript.Sequence.build,
Call = QworumScript.Call.build,
Goto = QworumScript.Goto.build,
Json = QworumScript.Json.build,
article = {
"id" : "8b1d5802",
"title": "Classic ankle boots",
"price": {"EUR": 29.99}
},
script = Script(
Sequence(
Call(
['@', 'shopping cart'], 'https://shopping-cart.example/add-article/',
{name : 'article', value: Json({article})}
),
Goto('index.html')
)
),
button = document.getElementById('add-to-cart-button');
button.addEventListener('click', async () => {
await Qworum.eval(script);
});
Local development
The Qworum browser extension is enabled for local development by default. The web origins that are enabled for local development are:
http://localhost:8080
,http://27.0.0.1:8080
(the TCP port 8080 is often used in the Java world)http://localhost:3000
,http://27.0.0.1:3000
(port 3000 is often used in Deno or Node.js projects)http://localhost:5500
,http://27.0.0.1:5500
(5500 is the default port for VS Code's Live Server extension)http://localhost:5501
,http://27.0.0.1:5501
(alternative Live Server port)http://localhost:5502
,http://27.0.0.1:5502
(alternative Live Server port)