The Three Waves of Open (Source, Transacting, Data)
Open Source – GNU – Copy-left
Payments, Transacting, Blockchains
My Data, VRM, GDPR
Open Together
Regarding the “datagram” essence of Prose Objects, I’ve just now have achieved better clarity on the model. I’ve long wondered whether a Value should be viewed as the fundamental element, or the Map is the fundamental element. It now seems clear that in a sense we need to think both ways. It is very important to maintain a notion of “file with key=values” as the unit of conversation because this is how so much of conventional computing is organized. From config files to credit card receipts, address card and email datagrams, a file as map of k/vs is a very useful format.
But in understanding the paradigm and in building high-performance systems, it is helpful to focus on the key=values. This is my attempt.
The entire system can be viewed as Values – strings of text whose “keys” are names under which they are stored. For instance, in a file system, a Value is a string stored in a file, and the key is the file name. In a database, the key would be the ID of the database record.
The basic mechanism of Prose Objects is to assign _additional_ names to the Values, to give them additional keys used in the recursive expansion and inheritance.
Let’s express this in git-ish terms (with a nod to Ludovic Dubost, who may have anticipated this mapping).
The Value is a file whose name is the hash of the string. This is how git stores files. A Map is a tree (directory/folder) that references those files using meaningful names (the kind of names we now use for keys). These trees are organized into other trees (directories). These higher level (2nd-Nth level) trees correspond to both: 1) the current system of organization of files into folders [G/Z/ol/*] and 2) the links among Prose Objects. The trees can be traversed in two ways: 1) to add a collection of Values to a namespace of a tree (as is done currently by a link to another file) and 2) to obtain a Value’s string ({G/Z/ol/z6#sec}?). This unifies two concepts that seemed to want unification – the folder hierarchy and the system of links.
Note that this somewhat complicates the notion of a file in the current implementation – each k/v becomes a separate file (or is treated as such). This translation can be handled in interface – each line of a file can be saved as a new file and the “file” can be a folder. But there is a problem or needed refinement because while order does not matter for normal k/vs, it does matter for links (“=[top-priority.md] \n =[second-priority.md]” is not the same thing as “=[second-priority.md] \n =[first-priority.md]”). This needs further thought.
This Value orientation simplifies and adds power. For instance, you can traverse the file-folder tree for a Value or Map in a way that seems natural but wasn’t possible. The Values also automatically de-duplicate and connect.
For Prose Objects generally – https://commonaccord.wordpress.com/fulcrum/data-model/
I usually don’t comment directly on “competing” approaches to document automation, but am making an exception for the new www.openlaw.io (@openlaw1). This is a serious effort by a serious group, with close ties to some of the people who have contributed to CommonAccord. (I’ll call it OpenLaw1 because there are some other “Open Law”s, including our friends www.openlaw.fr.) I learned about it today, just before the COALA/MIT workshop on blockchain and governance.
From my brief review, OpenLaw1 is a clean approach to document assembly and a great integration with two important technologies – IPFS and Ethereum. I fully endorse both those integrations.
It’s approach to document assembly is great in that it uses a few simple embedded bits of code to enable insertion of parameters and alternatives. It does this with a much more complete interface than CommonAccord’s software, almost all of which was done by Primavera De Filippi, one of the close connections to OpenLaw1’s team, and the co-organizer of COALA.
However, OpenLaw1 represents an important step backwards from #ProseObjects and the goals of a Centre for Decentralised Governance (slideshow for COALA/MIT and IACCM). I’ll try to state with clarity why the document part is a step backwards.
In sum, the integration with Ethereum is to be applauded. It represents a version of the “parameters, prose and code” Ricardian contract model. (Wise Contracts paper with Helena Haapio.) At the COALA/MIT workshop over these next days, I hope to explore this intersection from a number of perspectives, including with Henning Diedrich and Florian Glanz of the Lexon project.
The integration with IPFS is also great. IPFS hashing provides a great way to assure the availability and conformity of prose and code. In a model of Prose/Code/Access/Hosting/Analytics, IPFS seems very useful part of the hosting layer. (BanqueChain demo for a hypothetical global banking system expressed as nested file folders, with reliance on IPFS.)
#ProseObjects offer a way to keep all transacting information in structured form. They are necessary to the project of open-sourcing all legal forms and compliance, for the IACCM’s project of general codification of commercial documents, and for a legally-inclusive peer-to-peer transaction system.
#ProseObjects are certainly necessary for Centres for Decentralised Governance.
The three parts of a transacting system can be expressed as three roles:
1. A first-person role – “I” want to write a program that describes the transaction and will cause it to occur. For instance, I want to buy something by selecting the item, specifying the price and delivery, and clicking “order.”
2. A second-person role – “I” need to communicate this to the relevant “you,” and have “you” understand and agree. If I’m using your website, you website handles this. A blockchain provides a way that is shared, consistent and neutral, where you and I are peers.
3. A third-person role – If “we” have a disagreement, then there must be a third-person who reviews the facts and decides. The third-person may be abstract – a community – and is not always very sharply defined. At the outset, it might even be the second-person, thinking more deeply.
Conventionally, this third-person is often implicit. Both parties may know people in common, live in the same community. Our reputations precede us and will be affected by our behavior. In more formal relationships, the third-person role can be a company supervisor, a school principal, a police officer or court.
In any dispute, there is the problem of proving “facts”, knowing rules and the availability, patience, competence, cost and neutrality of the decision-maker.
Blockchains address some of these problems in a way that can be applied across a very wide domain. For the first-person, the author, blockchains provide patterns for transactions, often called “smart contracts.” For the interaction with the second-person, they provide a communication method and reliable records, including signature. For the third-party role, they provide a community that validates the state of the record (the documentary facts) and can automatically enforce some types of interactions, notably operations on tokens.
Blockchains of course address only some of the facts and some of the enforcement that is relevant for “real world” transacting. For contracts that touch on outside “reality” (the world we live in), the parties must depend on people and institutions for facts and trust. The documentary trust function and token escrows that a system of records provides can be very important in reducing disputes, but when the performance involves facts or actions that are not merely records, the ultimate trust lies in these conventional third-persons.
Because blockchains have significant disadvantages from the perspective of information security, speed, cost and flexibility, they will supplement, not fully-supplant conventional systems such as databases, email, web interfaces and newer systems such as IPFS and graph databases.
CommonAccord generalizes the first-person role – authorship or programming of transactions. It provides a common data model for referencing both prose and code aspects of transactions, independent of the platform.
In the Ricardian paradigm, it simplifies programming/authoring as the creation of a “record” consisting of parameters and references to the context of the record. Most records will resemble credit card receipts – a list of a few key facts – and a link to the context. The references will have a “prose” component and a “code” component. By referencing them using names that are independent of the infrastructure (e.g., by hash), they can be used across different platforms. The code – smart contracts – can become commoditized and standardized in a granular, iterative manner, as can the prose. The granularity resembles the Unix model of small modules with discrete functions, chained together.
Because this record format can work with blockchains and conventional IT systems, it can knit them together. Blockchains will fill the gaps that conventional systems have left. But blockchains, as the standard for interoperability, will cause standardization of the conventional systems. Enterprises will be re-automated from the outside, as a result of their need to work with their customers and suppliers. The blockchain movement can be the cause of the transformation of all of IT and law, even as it is only a part of the solution.
The combination of blockchains, decentralized access management systems, IPFS and graph databases, can make a truly peer-based system of transacting. This can encourage the democratization of transaction “programming”, greatly reduced complexity in IT and legal, and reduce the need for centralized “hubs” – both human and tech – to manage people’s affairs.
For the reasons set out in the IACCM Contract Principles, the contract forms and clauses at CommonAccord are intended to provide a base for contracting among parties. In addition, these materials are made available in the way of open source software, which allows easy sharing and improvement.
There are many perspectives from which to approach contract standards. The IACCM Contract Principles approach standards from the perspective of refining and defining basic contracting ideas. Analytic software approaches standards by finding common denominators in collections of actual contracts. “Legal Design” approaches standards from the perspective of communication with users. Model forms projects create complete solutions for sharply-defined uses.
The joining point of these efforts can be said to be an outline of the ideas and kinds of documents that express the ideas. The outline:
Such a shared system should “learn” — become better over time — from the experience of participants, the teachings of analytics and the interventions of experts.
The system should fit with two critical trends in IT:
We suggest a starting point for the outline would be a list of some common contract types, each one populated with a list of common section headings …. (to be continued).
Eve Maler (@xmlgrrl) contemplating enterprise engagement with prose objects, wrote:
I would guess that making sure this system works would be a combination of a) suitably sophisticated and complex parameterization that meets real-world use cases and b) a “stack” of base prose that does right by individuals before it ever gets to organizations, but then (c) is still appealing to orgs and the corporate contract-editing tools they use.
Even sophisticated contract management systems (CRM) don’t cause general legal codification. For organizations that are happy with their CRM, they might use prose objects “merely” as sources for legal text. They might use them as legal forms, or might interface to them for more functionality. Enterprises might find that they want to contribute to prose objects in order to influence the direction of legal standards. They might do that by publishing prose objects on their own sites, or (better) by forking on Github, or (even better) through organizations such as the IACCM and legal groups.
While it is possible to address the problem of legal standards from the perspective of the individual, and ultimately a major impact will be (and should be) to empower the smaller actor (individual, company, country – almost all of us are small sometimes) it seems likely to me that the legal materials will originate from the more systemic partner. For instance, the UMA Legal materials, the IACCM Contract Principles or the Y Combinator SAFE Notes. It will be found that legal documents are not terribly complicated – despite the apparent endless variations and length. The issues recur and improve with recursion. The purpose of legal terms is to facilitate good behavior by both parties, to enable the relationship, to reduce the cost of inter-personal collaboration (Coase). The smaller party will no longer be alone.