We use Java as the primary language for the server-side code and JavaScript for the client-side code. Other languages can be invoked from these two main languages.
UTF-8 is the official webAppOS data exchange encoding. If some module uses a different encoding internally (e.g., JVM uses modified UTF-16), it has to be able to read and write UTF-8 strings as well.
We try to use the JSON format whenever possible. The main reasons in favor of JSON are:
it is easy to use;
it is compatible with JavaScript;
it is compatible with No-SQL databases (and is used in the webAppOS registry).
All web calls should be designed in such a way that we could invoke them asynchronously.
All APIs (including useful internal APIs) should be open and documented. Documentation should include examples how to invoke the APIs.
If an web app or a web service is not HTTP-based, the corresponding URLs must point to documentation how to access that web app or service (see URLs provided by webAppOS).
All web apps and services should not use HTTP cookies. They should rely on tokens (e.g., webAppOS ws_token) instead. However, as an exception, cookies can be stored by scopes drivers (see Scopes), since certain authentication methods may require cookies.
All web apps and services should provide a web page with documentation explaining how to use and/or configure that app or service. The documentation should be accessible via the "doc" URL path of the corresponding app or service, e.g.,
http://example.org/apps/login/doc