HyperVos uses Vobjects to construct web pages (or other any XML documents -- but it has various special features for HTML) to serve via HTTP.
See HyperVosIdeas for brainstorming/todo See HyperVosDoc for documentation
Websites and other HTTP- and XML-based services can be managed using VOS by way of the "HyperVOS" project. This lets you use VOS as a powerful and flexible content management system for a website, link a VOS-based application with web services or other systems which use XML and HTTP to communicate, or add a web based user interface to a program that uses VOS.
Hypervos is a different kind of web site management system than many others. Instead of storing page data in HTML files, or as entries in a relational database, HTML/XML DOM elements and content data are represented as live Vobjects. While data may be stored to a filesystem or database as a backup, and output documents may be cached for performance, the fundamental building block of Hypervos are Vobjects representing page elements or content that can be reused, modified on the fly, easily reorganized, distributed on one or many servers (even diskless servers), and dynamically managed and reorganized by server plugins or remote scripts/agents.
Hypervos Vobjects can represent any XML or XML-like elements including standard HTML web pages, RSS feeds, data exported by a web service, XML data to be retrieved by an AJAX web page, or more.
The core concept of VOS as a network of interlinked objects is particularly useful for managing hypertext, web sites and web services.
- Manage HTML and other XML documents by manipulating hierarchical DOM objects
- Partition document content into hierarchical chunks of any size
- Easily share content and/or structure between documents
- Authentication, access control and revision control for collaborative editing
- Distribute objects across a local network or the Internet
- Easily move objects or link them into new contexts
Write custom Vobject extensions (Components/MetaObjects) to do special processing or obtain data, or use a chain of Vobjects to do processing and filtering and to seperate HTML presentation from data storage, design, and implementation.
Various VOS tools and utilities also come in handy:
- Use SQL database or the filesystem to store all objects
- Integrate with other VOS application, and use standard VOS tools
- Templates based on Vobject relations are easy to make and change with standard VOS tools and procedures.
- Get Vobject descriptions as RDF XML documents
- Use Rendezvous (MDNS-SD/Zeroconf) service publishing for easy intranet deployment and access
Plus, VOS is a portable and open platform.
The interreality.org site was built and is managed using HyperVOS. To work on the site each editor first authenticates with an "identity". These identities are members of an identity group which is associated with an appropriate access control policy for each object allowing them to edit all or some of the site. The object structure and content are backed with a version control system and a persistent store as files on the server computer's filesystem. The Apache web server serves all HTTP requests; most of these are redirected to HyperVOS, while static resources kept in files like the software downloads are returned directly by Apache.
A HyperVOS site is achieved using two software modules:
The "HTTPServer" extension to VOS, if enabled on a site, lets you connect to the site and retrieve information using HTTP. The requested object and its children are examined recursively:
- If a "property" object is encountered, then its contents are added to the response
If an "xml"-type object is encountered (e.g. "xml:body"), then a corresponding XML tag is opened, its children are processed, and the tag is closed ("<body>...children...</body>")
- If an "xml"-type object has a child named "xml:attributes", however, that object's children (properties) are used as the attributes of the XML tag
- If the requested object has a "hypervos:template" child, then that child is used as a page template, in which children with certain names are replaced by certain children of the requested object.
- If an object cannot be turned into XML in this way, then the Vobject is described using HTML or RDF.
The second half of HyperVOS is the "hypervos" plugin for the OmniVOS server. This plugin creates a site with the HTTPServer extension, and can create objects from a persistant store such as the filesystem or SQL database, and can advertise the WWW and/or VOS services using Rendezvous.
Now the VOS objects are accessible both through a web site, and through VOS as standard VOS distributed objects. HyperVOS Status
Supports page templates, text sharing between pages, output of special VOS types as HTML. In production use to implement the interreality.org web site.
Future plans include supporting embedded scripting (such as Python) to automatically maintain the site or build pages on the fly; a CGI interface; tools to generate RSS feeds automatically and other automatic proceses useful for blogs and news; automatic insertion of links into the text that perform editing operations (like a Wiki or other fully web-based content management system); on changes output files to disk or upload via WEBDAV or FTP or SCP; support for offline editing in a GUI VOS application; various text analysis and metadata tools (tags, summarizing, searching); various image processing tools; maybe even behind-the-scenes AJAX and live page update support. RDF support is incomplete. Rendezvous service is not well tested or widely used yet.
