I have always considered BaseParadigm an essay on how to share content in a universal context. I've spent some time away from the project, and in that time have genuinely held space for the idea that I just don't need to write this. IPFS is promising. Those guys have done way more than I have. But I still think BaseParadigm has some things to contribute especially regarding being a functional programming platform, abstraction over what an ID means and how it's shared, and enabling us to outgrow text as a low level encoding for computational primitives.
Centralization is totalitarianism. If you can't kill the process that processes your data, your identity is owned. Code is law.
Take it or leave it. That's the crux. If you can't pick and choose, you don't have leverage to decline terms.
Who writes the code you run? Have you considered that you're doing exactly what they want you to do?
What if you could run code written by someone whom you found BECAUSE their needs align with your own, not corporate, misaligned spyware.
What if you got a bright idea, and your OS let you record a routine to repeat it. And then you let people use it. And then you got rich.
What if someone on the other side of the globe got a bright idea, and shared it, and you used it seconds later. And then you got rich.
What if your software did only what you needed it to do and nothing more? What if you never had to "upgrade" something that worked well?
Money follows power. Do you feel empowered right now, running code on Google's servers? Or is it Google with the power. Who has the money?
We all want equal opportunity. Do we get it? Your computer is you. Your life is digital. Whose code do you run? What do they want from you?
The architecture of global connective systems has to be different than people-with-accounts-on-web-servers for the emergence of liberating (free) human systems. The answers are old, but have not been adequately popularized. We missed the bus. We need to somehow get excited about old ideas again to build the platform right.
The whole problem is that the content is dynamic.
The platform should hide the dynamic updates behind a static view, navigable through common controls. Navigation triggers availability of new content, but does not trigger update of viewed content. This is the original model of the web. The server serves static html to the browser, and the user navigates between them. This is where the back button originated. In this context, it made sense.
Now, where 'back' has new meaning in the context of a single app because that app is dynamic, the back button can not be consistent because every context is different. Are you closing the app? Are you closing one thing in the app? Are you just hiding the keyboard? No consistency.
But the original model of the web allowed the server to do whatever it wanted before sending you data. You didn't keep the data. A client side database was not part of the model.
The original model could be updated by having common controls (including 'back') manage and navigate the client side database only. Actions of the user in their personal database send events over channels that the user is 'on'. These channels the user sees as 'web apps' and replace the concept of being 'on a page'. The web app listening on the channel generates new data in response to events, and sends that data to the user's database, providing new options for the user to browse. The web app may not be hosted remotely, but may in fact be hosted in the user's database as well.
This is the model of Spaciousness.
And I lied in the title. This can be done without content addressability. But without content addressability it gets a lot harder, because you need ids for all the local data, and you need to merge data from machines the user moves between. And... and... it's just so much easier if the content is immutable. Trust me. You FP folks get it.
This is more of a brain dump than a white paper. Please prod me for clarification.
This is a prepost of an attempt to reach out to the librarians subreddit for a discussion about applications for BaseParadigm.
Everyone knows libraries have been having increasing trouble since Google took over most indexing tasks. Why is it that the web hasn't created equivalent roles for librarians in online contexts as they already have in physical libraries? Is Google so good that librarians aren't necessary? (I don't think so, or I wouldn't be posting.)
I want to see better curation of information online, not just pinterest boards and tumblr blogs. I want a question and answer framework that can't be dominated by a corporate entity (like yahoo/quora/stackexchange). I want everything to be easy to archive and file (not 'share' through other services, and not 'export' to the file system). I'm building what I hope to address systemic issues like this.
I know that I want to serve the community of librarians. I understand you to be a crowd for whom openness and democratized participation are important. I think you want to curate information spanning domains and apps and free free information from the framework with which it was published without cutting ties to its context and author.
I'm here to find out what pains you most. What you long for. What you need to make your best impact. I can promise you that I'm writing free software, and there isn't a greedy startup behind my plea for input (though I can't guarantee anything about who else is on reddit, of course).
As Moxie Marlinspike put so well, we should all have something to hide. Given recent news, this raises a big important question: How to keep Your Data out of other people's Big Data?
Essentially, don't put it on the web, don't email it, and don't even SMS it. What's left? We still need to talk to each other, and in modern times, that means digitally.
The Content Addressable Graph (BaseParadigm) is an answer.
The graph is a super-schema: a uniform way to represent many (arguably, all) kinds of information. Unlike other formats, the Content Addressable Graph has identifiers baked in at every level, enabling documents to be broken into pieces while remaining linked together.
In a Content Addressable Graph, no single application need keep track of a definitive version of the data. Updates can happen between peers as needed. A contact management application and a calendaring application can both act on the same data without needing a third service to help them communicate.
This unique property of the Content Addressable Graph changes everything. Now that no third service is needed, data for all applications can be communicated using local networking like Bluetooth, stored on any storage device like SD cards, and accumulated and backed up as desired in an 'offline' fashion.
To keep things available across devices, generic servers can still be employed to store all data. Such servers would not discriminate between applications. Social and financial data end up in the same place. However, because applications are independent, a server isn't even needed.
I'm diligently working on BaseParadigm. If you are interested in using it, learning more, or helping with the development effort in any way, please contact me.
IndieWebCamp is coming up, and I'm rethinking how to communicate my old beef about how the web is designed. This is not an explanation of the solution but an explanation of why there needs to be a new solution.
The way the web works: run a program on a computer to serve data to browsers around the world.
The problem: how for the browser to find servers.
The solution: dns.
This architecture creates more problems. That people access the web by visiting specific servers means that the first class entity on the web is the server, and owning domains is core to participation. So, IndieWeb is a community that has grown around the idea that domain ownership binds identity to running servers, empowering the individual who administers those servers; the most democratic web is one where all software is served through individually owned domains.
While the premise is solid, the goal is unrealistic. I believe that having a name and being able to use language should be enough for being a first class entity on the web. People enter cyberspace with nothing but information about themselves. That should be all they need.
That it should be all they need is shown by the success of account based services for identity management commonly known as social software. A user gives a domain owner information about themselves, and the domain owner provides software to represent that person on the web. This is Google, Twitter, Facebook and most everything else. But that kind of identity is second class.
There is a better way.
What if identity was just data, not running machines? What if, when you opened your browser to access the web of information, you told it who from, not where from? If it were so, no one would need be paid for registration of a name. No remote account passwords would ever have to be remembered. No identity would serve as host for other identities; such a service would not be useful.
Let's add to the discussion of #dataownership a term #processownership. It means you get to run what you want when you want, choose not to upgrade software, and choose to kill processes that operate on your data. I would say process ownership is a core requirement for a more ideal future open collaborative internet.