Vsebina
Introduction
Web browser based operating system, for developing rich HTML5 client-side applications.
Web application server for storing and serving rich HTML5 client-side applications and data.
Based on object programming and JavaScript. Loose ancient crap (yes unix, you). Browser does a lot of stuff very well already.
Linux shell and Gtk suck. It is better to use web as a framework.
Provide infrastructure to do difficult things easily.
Not having full support for the entire spectrum of options currently available in the existing technology, let alone advancements and improvement, will hamper adoption.
Ideas:
- easy to use Javascript object persistence that just works
- URLs instead of file paths! (metadata about URLs can be nicely stored in RDF!)
- persistent objects are uniquely identified with URLs. (like http://page_address#object_dom_id or something)
- handle synchronizing of of data between same object instanced in different browsers on different hosts.
- each web page (URL) on a server is a workspace, which can contain javascript applets. Applets are javascript objects (classes), which get (re)instantiated automatically, when workspace is reloaded.
- a set of standard subclassable UI objects for creating applications
- use some kind of RDF model for storage; protocol for talking to a web server in RDF/JSON; see also: MyRDF
Some references
- Squeak
- UIKit
- OSX Dashboard
- Visual basic
- OS/2 Workplace Shell
Use cases
- WDBI next generation
- Web-based UNIX GUI frontend
- file manager
- various system control panels: users; webserver; fileserver
- HTML Puppet Theatre
- Sticky notes
- Wiki improvement project
- Project management: file and clipboard sharing over the web
- Translation application
Applets
- text command console ☠
- object inspector ☠
- css editor (which can save changes!) ☠☠
- sticky notes ☠
- web browser (with sticky notes you can attach to pages) ☠☠
- universal text editor (rich and plain text!) ☠☠☠
- table/record viewer; skins+templates; data editing; data binding; see also: excel ☠☠☠
- image+graphics viewer/editor ☠☠
- object browser (with search!), list+icon view - like file manager, but more general, for javascript objects etc... ☠☠
- chat between users visiting the page ☠
- process node network display (things) ☠☠☠
Loginout
- user_register(username,email,password)
- user_login(username,password)
- user_logout()
- user_change_password(old_password,new_password)
- user_reset_password(new_password) // need mail cookie
- user_enable_account() // needs mail cookie
- user_forgot_username(email)
- user_forgot_password(email)
- user_delete_account(sure?)
Functional parts
- javascript libraries on other client stuff
- RDF data store
- content server (simple one included, one should be able to use 3rd party CMS, MediaWiki or drupal for example)
- file server (for handling uploading and serving big files, etc...)
Dogmas
- OS is the new hardware
- one click installs
- app running = url opening
v1
- login logout
- Install and uninstall stuff
- entities: users, apps, documents (bookmarks, files)
standard view controllers
- object inspector
- text editor (rich and poor)
- console
apps
- dev (editor + resource manager)
- shell - list of installed stuff
- editor (word v 10 vrsticah :)
- control panel
Model
- obj = base object
- shell = initial object (shell, object browser)
- app = base object for apps
- note = a simple persistent text field
- run = a very simple application runner
- chat = a simple, but nice chat (not ported yet)
<graphviz> digraph a {
rankdir = LR node [shape="box"] object view controller model mapper moc view window app shell applet
edge [arrowhead="empty"] model -> object; view -> object; controller -> object; window -> view; moc -> controller;
app -> controller mapper -> controller; shell -> app;
edge [arrowhead="vee"] moc -> model; view -> DOMelement object -> mapper mapper -> moc app -> window
}
</graphviz>