SAFEspace browser

Project SAFEspace

The original idea of the web was that it should be a collaborative space where you can communicate through sharing information. - Tim Berners Lee

Sir TBL invented the world wide web and the hyperlink initially from a scientific point of view: hyperlinks refer to the original source (without having to know on which computer this source information is stored). Since then the web has evolved a lot, and with the advent of web applications we now see centralised applications that absorb all our information. We only get access to our information at the grace of the company and our data is being sold de facto beyond our control.

SAFEspace can be the new webbrowser, but this time with the our basic rights first.

  1. You login with your MAID account into your SAFEspace. It gives you access and control over all your information. It is your information and no-one else’s. period.
  2. SAFE Applications are the new webpages. In it’s most trivial state an ‘application’ is a static website. SAFE Applications are already immutably ‘installed’ in the network, so there is no need any longer for installation, updating or risk of corruption. SAFE applications can be full fledged C++ codes, running on the local machine. A high quality SAFE label for open-source, peer reviewed applications can give users trust.
  3. SAFE Applications are servants to your information. They never own your information. You only permit them access to specific parts of your information. You can always revoke access to information. As the application executes locally, your information should never leave the SAFEspace; ie the Application can never be allowed to send information to a central server - if it does, it should make this crystal clear when, what and why (ie bug reports etc).
  4. Sharing information with other users all happens through the SAFE routing and SAFE sharing network layers.

So from within your SAFEspace, once logged in: you access all your data, independent of app generated, or you stored it yourself. You control which applications can launch, run and access what information.

For example, you store all your pictures in your SAFEspace. In your picture folder, for a given picture you could see with whom you have shared this picture, but also which ‘decentralised social application’ or ‘photoshop app’ also has access to this picture (only when it is running locally importantly!!)

Benefits from a SAFEspace browser

  • Of course, project SAFEspace will be open-source and free. So this will be the legacy browser and many alternatives will follow! The SAFEspace browser is only a thin layer on top of the existing structure provided by the SAFE network (a now important difference!)

  • You can log in with multiple MAID accounts. In particular the MAID account of the owner of the machine for farming on the local drive. But also a music application would benefit when you host a party: all friends can open their SAFEspace and the music application can be allowed to play from everyone’s music collection.

  • Per physical machine there is only one routing layer active. Running multiple SAFE routing cores per machine (as could happen when we have independent SAFE applications) is an harmful burden on both the machine and the network. - of course, this is not prohibited if for some reason it would be desirable, but ‘natural usage’ would not swamp the network with nodes joining and leaving every second you open a SAFE application.

  • Single login over all applications, local on your machine.

  • Transparant way of indicating the difference between webbrowsing and SAFEbrowsing


Brilliant project and add some node.js etc. and you can have dynamic sites in no time. Allow comments etc. that are then stored on the net with the hash in your site. This automatically retrieves comments as page scrolls, now you have a blog.

Now add in dynamo/cassandra type data storage and compute and now you have something as complex as amazon or even as easy as stack overflow etc. I agree this will grow very fast and I am sure it may amaze many people quickly. Great post @benjaminbollen

[edit - forgot]
Also importantly you have the private key of your id, so no more login passwords anywhere, just signed request or challenge and that’s it, you can be verified between sessions, recognised again etc. But never have your password stolen again. Then add safecoin for any purchase and never have your credit card stolen :slight_smile: its not there.


True! I didn’t even yet mention the ease of use it would give to safecoin!

Also support for Node.js, HTML5, WebGL. Massively interesting to port these technologies straight into a SAFE environment ! :slight_smile:


If you’ve not seen the plugin go look at [my post here.][1] There is a plugin and dynamic website (blog for now) solution ready on Git for someone to adapt for SAFE.


1 Like

Hi David, could you give a brief overview of how a scalable database could work through the SAFE network? You mention dynamo and cassandra and being able to build something like Amazon or Stack Overflow, and it’d be great to know how this could be done.

Let’s say you want to go to a Stack Overflow-type site. Since you’re not querying a server with a database on it, doesn’t that mean that you would technically need to download the entire Stack Overflow database and query it locally (requiring the database software to be installed locally)? If there are millions of posts, it would take a very long time to download the whole thing, so there must be something else I’m missing here. Whatever I’m missing here is probably the missing key to understanding how to build scalable applications in the MaidSafe network.

Thanks a lot!

Edit: and while I’m at it, this would be a good time to ask when some detailed app developer documentation will be released. I can’t wait :smile:


You could query it remotely, but since the DB resides on the SAFE network and is replicated, I wonder if updates wouldn’t be more challenging than queries. But overall I do think it sounds too easy.

You could query it remotely

Really? How could that work? That would mean you’re making some kind of API request from a remote server. I thought that on MaidSafe you could only make GET requests on actual files?

I’m getting a bit confused here. I would really like some more information on this, and how all replicas would be updated in MaidSafe. Hopefully @dirvine or another core developer can chime in.

We have just agreed to pay quite a lot of money to have system docs professionally written, it will help.

In this case all you need to recognise is data content is immutable it never changes. So any new content is also immutable and so on. You keep a data map it will always point to the content you thought was there. As you update data it creates new chunks etc.

In terms of key value stores and nosql solutions this video will help.


There are existing approaches to expose SQL DB’s via RESTful APIs.
If MaidSafe starts supporting one of those approaches, it may be possible to issue SQL queries that way.


Thanks, @dirvine, I’m familiar with the basic usage of NoSQL databases. My main confusion was with the remote querying, which implied that not only is data stored on the network, but nodes have database(s) installed and serve sql requests, just like regular servers. Whereas in the post above, you wrote “Now add in dynamo/cassandra type data storage and compute”, as if you were telling the safespace browser app to implement it (and not the MaidSafe network itself).

@janitor mentioned having the network have an API for SQL. Is this what you meant? If so, MaidSafe would probably need to have a standardized database for apps to use, no? In other words, you wouldn’t be able to have some apps using Cassandra, another MongoDB, another Redis, etc. Rather they would use the database built-in to the network. Is this correct? If so, I think that answers my questions :slight_smile:

We have just agreed to pay quite a lot of money to have system docs professionally written, it will help.

Awesome, I am looking forward to reading them!

I think perhaps there is some confusion. NOSQL means really a key value store, some now attempt SQL interfaces but there is never a SQL server involved its purely key/value stores. Perhaps take a look at regis internals or grab the dynamo paper CiteSeerX — Dynamo: amazon’s highly available key-value store It’s a very different way of thinking but not with sql servers anywhere near it. Hope that helps a little (NB key/value is eventual consistency really)

1 Like

This whole network is all about changing how we think about everything :slight_smile:

Glad to see it applies here, down to the littlest details, as well

1 Like

I’m new to MaidSafe so this proposal is more of a question and a way to learn more about it. The idea is to use the Chromium browser, fork it and add SAFE functionality. More about the Chromium project here:

Although I’m a developer myself I know very little about the Chromium project other than it’s a web browser that is very similar to Google Chrome. The SAFE version of Chromium can have an added protocol safe:// similar to http:// and made as similar to the ordinary HTTP protocol as possible.

1 Like

Have a look at it may be more suitable for SAFE

Ok, that could be a much better choice than using Chromium directly.

"Now how do build an entire new browser from scratch without it taking
you the next 10 years of your life. Chromium on top of the Content Module
(their multi-process architecture on top of Blink) is already 2m loc of
C++ with a good chunk of it being platform specific code. This is
clearly untractable, even for a couple of developers working on an
opensource side-project.

Looking for a solution to that major showstopper, we realized that a
shortcut was possible. What if instead of building the browser with
platform specific C++ code, we attempted to build it using solely its
very own technology stack, namely a rendering engine (blink in the case
of Chrome) and a Javascript Engine (v8 here). That’s how we ended up
embedding a NodeJS thread within the Content Module and exposed the
Content Module API directly into NodeJS through v8 native bindings." –


Mac and Linux only.

I found on the blog:

"6/ Whats about a version for Windows?

We’ll probably wait on the move to OOPI/<exo_frame> above" –

OOPI is something about iframes in separate processes in Chromium. The Breach browser seems to be pre-Alpha almost. Interesting nevertheless. A browser like Breach or similar project was actually what I was thinking about as a proposal for SAFE.

I want an app platform that’s OS-independent, and Breach, if it becomes a real release, is a simple yet efficient solution.

1 Like

Would it be possible for MaidSafe to add NOSQL as a core functionality in the SAFE network?

For example having something similar to Google App Engine’s datastore would be convenient for app developers. And preferably with an API that hides as much complexity as possible such as index specifications and things like that.

It already is, which is the really good part. Not only NOSQL but secured NOSQL so no need for VPN / Private networks protected by firewalls etc.

So our issue at the moment is how we expose that to everyone and I think it looks like we have this sorted and able to test. I hope through testnet2/3 you will see the public filesystem API (this allows you to treat SAFE as many filesystems for normal apps that only store data etc.) and also an interface to the underlying NOSQL parts. It is then that the dynamic websites, fully decentralised apps etc, can start doing what cannot be done today. You will see this very very soon when we release the messaging parts in testnet2, it’s not going to be a copy of todays Internet services, it’s going to be very different :slight_smile: The differences will allow a plethora of new apps that work in a ways that should allow a ton of new innovation.


Hmm… Wow. That will be interesting to try out.

1 Like