Software architecture notes

From Organic Design wiki
Revision as of 00:25, 19 February 2011 by Nad (talk | contribs) (Escrow and accountability: platform)
Cone.png This article or section is a stub. Stubs are articles that have not yet received substantial attention from the authors. They are short or insufficient pieces of information and require additions to further increase the article's usefulness. The project values stubs as useful first steps toward complete articles.

This specification describes what is required for setting up a platform, an organisation designed to form a network of completely independent nodes with other platforms, which we call the platform network. The high-level conceptual development path for platform technology is described here. We will describe our requirements and use cases in order to determine the correct components to use for various aspects. These requirements are based on our research over the past ten years or so regarding what is required for a decentralised, robust and efficient solution to maximise personal empowerment, freedom and privacy and allow for the emergence of bottom-up and grass-roots solutions, and organisations, based on the needs of the people. In our manifesto we describe the principles and values that guide our work and are foundational to these specifications, in particular the four criteria:

  • Openness
  • Completeness
  • Think Global, Act Local
  • All Aspects Changeable

Personal Platform

Beginning with the relevance to the individual, the platform is a software package that enables the user to organise his or her own life, to maintain an overview of goals, values, tasks and commitments, much as described by the GTD movement, for personal organisation. In addition, we require communications tools and common office productivity software such as email and schedule, web browser and an office suite. These needs are rounded off by online private and secure file storage services to ensure backup of vital data and synchronisation across multiple devices.

This can all be done now...

Now these things taken individually are nothing special, anyone can choose to set up a computer with a free or paid-for operating system, such as Linux, Apple or even Windows, then install free or paid-for applications to achieve office productivity and personal organisation requirements, followed by setting up online user accounts to access services and even applications in the "cloud". However, there are a number of limitations that become obvious when currently trying to fulfil even these basic personal requirements using off-the-shelf software available on the market today. Without going into full detail, the key issues are:

Fragmentation of data and user accounts

Social-media-fragmentation.png This toolbar along the bottom of a blog article allows people to share the information using their favourite service, possibly several services. Each of these services would have a separate log in and separate data such as user profiles that will need to be kept up to date.

Restriction of freedom and loss of data privacy

I-agree.gif Who has time to read through all that boring legalese, just to set up an account or install some software? Unfortunately it turns out that some terms and conditions are anything but reasonable, claiming ownership and perpetual use of all of the data you upload or share on that service.

Having to pay for proprietary software

Pricing-plan.png Use a lot of online services? Those costs can add up, not to mention being prohibitively expensive in so-called "emerging markets".

Lack of offline synchronisation with most cloud services

Server not found.jpg Got no Internet? Tough, if your e-life is in the cloud. Most services don't allow for easy offline synchronisation.

Freedom in The Cloud

For more information, mainly on the aspect of privacy and the impact of the centralisation of data on our freedom, view Eben Moglen's talk that inspired the creation of a unified, private open source alternative to Facebook and similar services: Diaspora.

What we want instead

In contrast, what platform offers is an integrated, consistent user interface, with the context being navigated comprising the users areas of interest and personal projects, rather than fragmented applications. We envisage a fully packaged installation file (ISO) that allows an operating system to be set up from scratch on any device, offering a web browser interface to allow the user to define their areas of interest and projects, import legacy data and access any applications as required to do work or just socialise online.

The Platform is a self-contained solution that could for instance run on a laptop, whether or not there is Internet available, which could fetch updates, messages or files as and when connectivity is available. Imagine having one place from which everything is managed, messages and updates are sent from, a private, secure online home with a unified inbox, set of files, bookmarks, documents, contacts, to be easily shared, in a system that just works and is completely self-contained.

The good news is that this is all possible now, by way of integrating existing open source technologies using the right kind of "glue". Further on we will identify our current candidates for fulfilling various aspects described here.

Platform Organisation

One tree that holds it all together

The framework platform is based upon can be thought of as a "glue" that integrates a number of existing technologies and allows new technologies to be integrated as they become available. At the interface level, a tree represents the ontology of the user or organisation being viewed. This tree is a meaningful and coherent structure that represents a small number of top-level concepts. The tree will be different when looking at one's personal "electronic life representation", in which case it consists of "areas of focus" in life, as opposed to viewing a shared organisational tree. David Allen coined that term and recommends having a perspective on life (20.000ft) at which only these areas of focus are visible in order to assess how much time one is spending in different areas and whether they are in balance. This area is in between the most high-level aspects, such as goals, vision and values and the more concrete day-to-day aspects such as projects, checklists and tasks, which would typically be associated with one or more areas of focus. On the level of organisations, this concept maps quite directly to what is normally called a "department" or "division".

As you can see from the examples, the structure can be quite simple and encompassing at this level.

Our goal is to enable such a tree to replace any hierarchical navigation structures being used by existing applications, such as the folder trees of email programs, file managers or bookmarking programs. Instead, the personal or group organisation tree will be created once, using a simple, forms based process, then linked to applications. This will then allow one structure to be navigated and added to within a consistent interface, with each area of focus or department representing a portal dedicated to that concept, and the applications serving various types of "items" or "content", without confronting the user with a different interface, behaviour, or data synchronisation headaches.

Now that we have a shared hierarchical context structure that is consistent across applications, we also need a global system of tags which applies across application boundaries and can be used in conjunction with the tree to filter down what is being viewed. That way we could have quite a powerful framework that not only allows hierarchies but also the more whimsical and flexible tags (known in wiki terminology as "categories"). The way the Firefox web browser organises bookmarks is an example of accommodating both trees and tags. The most popular way to display tags is as a cloud within which the most popular tags are displayed in larger font and clicking on them will lead you to a collection of every item that has the particular tag associated with it. The problem with tags currently is that you will need to create a set of tags for each application that can handle the concept and there is no way to click on a tag that will show you all items across application boundaries that have that tag. We would like to see that solved, giving us a unified navigation and filtering paradigm and allowing applications to be integrated "behind the scenes" to allow the manipulation of chats, projects, tasks, events or whatever "item" they might be providing. The Cynapse#Cyn.in application views are an elegant example of how this could be displayed:

Cynapse-application-views.jpg Cynapse-add-content-panel.jpg

Example

Mashup-tree-tags.jpg For example, imagine you are viewing the tree of "Open Corporation" and wish to follow up on some sales opportunities. You would have selected the "Sales" branch, which gives you the sales portal in the right hand application view. In addition you select "Opportunities" in the tag cloud of "Open Corporation". Then, in the right hand pane you select "Contacts" from the items button. You now have the total amount of contacts filtered down by contacts assigned to the sales department, tagged with "opportunity".
Further topics to cover
  • User account synchronisation and storage
  • Smart caching of content
  • High-level portal structure
  • User interface and preferences
  • Definition of objects and queries, easy creation and adjustment of such
  • Subscription to packages of content and functionality across underlying applications
  • Robot framework for import, synchronisation, account logins

Record Administration

One aspect of our prototype wiki organisation system has which we haven't been able to find in existing open source solutions is the ability to replicate our portal structure. It's based on the idea of extending the CMS/Wiki to allow the users to adjust their portal structure to suit their own needs using wiki organisation packages as an initial starting point.

In terms of functionality requirements of the portal structure, the foundation concept is that of records and record-types. Records are sets of properties that can be associated with an article. A record-type consists of a form which is used to edit the records of that type, and a template which defines how that set of properties should look in the page.

In conjunction with this is the ability to create simple queries based on property values and resulting in a set of matching records. The results can be rendered as a table or a list, and can be further transformed by using the host CMS's templating system, for example to render the results as a select list in a form, or be adjusted to suit a javascript widget, report or chart.

Queries can be done in a user-friendly way since the templates that need to be added to an article to create them can themselves be record-types so that they're created and modified via their forms rather than difficult syntax.

This approach allows the organisation members to effectively define their own applicational structure which is a dynamic and integral part of their documentation and knowledge structure.

Current solutions and functionality to integrate

  • Groupware applications --> emails, contacts, calendars, tasks, projects and Group decisions
  • Global accounts and synching via robot framework - OpenID?
  • Personal portal and broadcast centre
  • CMS
    • Content (procedures, roles, etc.)
    • Ontology portals structure
    • Records, forms & queries
    • Organisational setup (forms) and org. templates
  • Physical network

Our development plan

Beginning with being able to manipulate one tree across several applications, followed by the use of a unified set of tags across applications, using our Wiki Organisation approach, we will begin to implement the ideas outlined here. Further detail is described in the mashup article.

Business aspects

All the software and systems composing the platform are open source and freely available for use by anyone, but the platform network as a whole needs to integrate with the current system especially for large-scale projects and international operations. There are two important aspects which we'd like to see in place that should be handled by businesses and these aspects are business opportunities which could help to attract initial capital to get the infrastructure developed.

International serviced office model

A serviced office (and a similar concept, executive suite) is an office or office building that is fully equipped and managed by a facility management company, which then rents individual offices or floors to other organisations. Serviced offices, which are also referred to as managed offices, business centres, executive suites or executive centres, are often found in the business districts of large cities around the world.

Companies offering serviced offices are generally able to offer more flexible renting terms, as opposed to a conventional leased office which may require furnishing, equipment, and more restrictive leases. Space is normally flexible, allowing for additional space to be allocated at short notice, should the size of an individual business change. Serviced office providers often allow tenants to share reception services, IT equipment and other resources, providing reduced costs and access to equipment which may otherwise be unaffordable.

The serviced office concept fits the platform network very naturally because all platforms are working in accord with the same organisational system covering all the same general project and business requirements as the serviced office requires. The platform network consists of a widely distributed pool of roles and resources such as receptionists, office space, IT equipment and transport as well as an established means of distributing the use of these resources amongst them.

This would allow the platform network to take the concept of the serviced office to the global scale allowing members who travel a lot for their work to have office space and accommodation arranged in advance no matter where they were going as long as their were enough platforms in the area.

Escrow and accountability

The platform infrastructure also offers project-management and group decision-making tools allowing groups to collaborate on large-scale projects and complex ideas involving the input of large pools of experts. There can be great difficulty in getting large diverse teams to work together properly, to do it successfully requires very solid workflows, agreements and conflict resolution systems. Some web-based project management environments achieve this well such as eLance, Freelancer and vWorker.

The general idea is for projects to go through a lifecycle starting with the general idea which gets refined through sellers (potential workers on the project) asking the buyer (the party requiring the work to be done) questions. Eventually the idea is refined enough that the sellers can begin bidding and the buyer can get an idea from the sellers' qualifications, portfolios and questions which one may be best suited to the job. After a seller has been accepted and has agreed to the terms, the buyer then puts the money into the project-management environment's escrow fund and work begins. Eventually the work is done and the seller files a "work complete" notice, and if the buyer believes the seller has achieved everything he agreed to, he signs it off so that the environment release the money from out of the escrow account to the seller's account.

If the buyer didn't believe that the seller had done what was required, and they're unable to resolve their dispute, then the project goes into an "arbitration" status and the environment assigns an arbiter with appropriate expertise to analyse the agreements and communications and decide whether the seller should be entitled to the escrowed funds or whether he needs to do more work. The model works well because both parties know that the system is solid and both trust it to hold the money and ensure a fair unbiased choice.

In the case of the platform network, there could be many large-scale projects going on at any one time and a similar system of escrow by a trusted third party would be necessary for the same reasons as in the current model. So this aspect is also a great business opportunity since fees can be charged for this trusted escrow service, and large escrow fund creates a massive operating cashflow for other services such as financing projects and low risk investments.

See also