MaidSafe Dev Update :safe: 31st August 2015

Well we finally made it to the end of the rust-3 sprint and personally it seems like a long time ago in a galaxy far, far away when we initially set out our original deliverables for this sprint, so let’s refresh our memories, what were the objectives of this sprint? @Spandan outlined them here and as you can see this sprint over-ran slightly, just a tad, a tiny amount, a smidgon …. err ok time wise we were way off :frowning: So it is with a certain level of trepidation that I can report that we met our objectives. Why the anxiety? Well like you guys I follow the chat in the forum, listen to the podcasts, etc and my personal impression from this is that some in the community are expecting a big TA-DA! We made a huge amount of progress in this sprint and this can either be measured in the current state of the libraries and what we are now able to do with them or the collective exhaustion of the Dev team - for me personally the end goal has never felt so close, it really is now within all of our grasp.

Since the move to Rust we have focused on incremental progress and this is working for us, but rather than go through all the challenges (and there were a few) we encountered and how the team overcame them, I am going to focus on what you the community can now get your hands on and play with. So I am going to cover the safe_vault binary for Linux and OS X (Windows to follow soon), the DNS example and Firefox plugin.

Firstly, the safe_vault binary for Linux and OS X, for just now we shall be limiting usage of the binary to creating a vault network locally. Currently we do have a safe_vault testnet up (and down) and running. In the near future functionality to join this network will be made available via the installers but for just now we have restricted this access. As @dirvine mentioned in this topic yesterday the reasons we do not want people connecting to droplets from home right now are:

  1. It will work for any individual
  2. It will also allow poisoning of the close groups with one way connectible nodes (no NAT traversal)
  3. We are about to implement network to node connections and these will be the only way a node can join the network (when the network can see the node, not necessarily vice versa)

tl;dr At the moment connecting to the testnet from behind a firewall will cause imbalance in the network and until we add in a function to ensure the network can access the node from the network and not from the node’s perspective alone (i.e. if the node can connect to us we don’t care - we need to be able to connect to it), we are restricting access to Devs to allow analysis and debugging.

If you go here you can download the safe_vault_linux or safe_vault_osx binaries (as I said Windows to follow) and I will walk you through the steps to create a locally running SAFE Network and once the restrictions outlined above are removed the installers shall be released out into the wild and everyone will be able to join the global SAFE Network, but for just now you can add vaults to your local machine and with logging switched on sit back and watch the magic happening. OK magic is maybe going a little far but you can watch a small local SAFE Network forming on your own machine and run various examples against this network. OK so lets join some vaults to create your local network and we shall do this with logging on - otherwise it is a pretty dull spectator sport. Open 3 new tabs or windows in your terminal of choice and run the following commands; we shall issue the commands as if it is a Linux system we are using, however for OS X just swap the safe_vault_linux with safe_vault_osx :

cd <LOCATION YOU DOWNLOADED BINARY>
chmod 755 safe_vault_linux
RUST_LOG=info ./safe_vault_linux

Start 3 other terminal windows or tabs and navigate to the safe_vault_linux binary and run RUST_LOG=info ./safe_vault_linux in each session, if you want to see more output, change info to debug. You now have a safe_vault network running on your local machine :slight_smile:

OK so this seems cool, but what can I actually do with my network? Time to introduce the safe_dns example. As the github page states this is an application to demonstrate uploading files of a static website to the SAFE Network. This example showcases features from the safe_nfs and safe_dns crates. Download the example here - if you are using Linux or OS X and do not want to start a local safe_vault network you can still try this out by downloading the example which uses mock routing which emulates a network for you. Let’s carry on as if you have already created a local SAFE Network on Linux. Choose > safe_dns_example-network-linux.zip and extract the contents of the zip file and open the directory > safe_dns_example-linux-x64 > click and launch the safe_dns_example executable. You will be presented with:

Complete the Service and Public name text boxes and click Done.

You now have some choices - you can either drag a folder and upload your existing website to the SAFE Network or use a template to create a new site. Yeah… drag an existing website! When this was demo’d last week it blew me away - I think it is fair to say that the SAFE Network will not be a ghost town in terms of real and engaging content from the outset; I really love this feature. This time though I am going to use the Template option.

Click on My Page and alter the text and click > Publish

Your content is now stored in the vaults on your local network.

Once you have content running on the SAFE Network you will want this content to be easily accessible. You can do this via the safe_firefox_addon, this allows access to the SAFE Network from the Firefox browser. You can download the addon here - same as before with mock and real network as well as currently being limited to OS X and Linux.

Just now the addon has a few known limitations:

  • Windows not supported
  • Can serve files up to 1GB only
  • Browser crash right clicking on the browser and selecting - View Page Source
  • If the public name is not available, then the browser becomes unresponsive.
    Must force quit the browser and start again.
  • On OSX, when the browser is closed the browser crashes occasionally

These are noted and as is our current methodology the next iteration shall be an improvement on the last.

Installation and usage:

I am going to carry on with my Linux example using my local SAFE Network and download and install the safe_addon-0.0.1-network-linux.xpi addon. Once installed I type safe:www.ross in the address bar and….

My page is retrieved from my local safe_vault network and I guess there is no need to say this but I will anyway because I like to hear it - all of this just scales from your local SAFE Network to the global one - once we have completed our analysis and debugging. I often hear David describing development as “fast and furious” and actually just now that is an understatement; get ready for the ride!

This is part I of this weeks update find part II here

Transcript of weekly catch-up > https://docs.google.com/document/d/1WlOdmTzCvNtkqu6khzmc6zX8C2C7SNCsbrstemgoQMg

57 Likes

Well done @Ross It’s been a long three/4 weeks and today.

Everyone, this is the start and open development remember so this is pre stabilisation sprint (in planning start next week for 1-2 weeks max). We will release the Win then OSX installers with a few days between them even after stabilisation (and that is the shiny new network for us to test to destruction before messaging then test-safecoin, a sprint each).

Team worked like dogs over last 5 months to get here from nothing with Rust, huge kudos to them all. Plus today we got some more great news @Shona introduced us all (virtually) to Matilda, her growing family continues. We need to work hard to make sure that wee baby sees a better Internet than we have :wink:

34 Likes

Thank you. Finally after all these months I can start testing this amazing project

9 Likes

cheers for getting the update out @Ross

hopefully we can make a small mini update tomorrow to add the Windows links too :smiley:

With firefox being a x86(32 bit app) on windows, we’re currently testing the addon with Waterfox and also the Firefox Dev edition which both seem to support x64. Provided tests are fine, we should have some goodies for windows too tomorrow as part of the same release locations.

15 Likes

I am not great at things like this, but it worked very easy for me…

7 Likes

Wow! Can’t wait to try this out tomorrow evening!

5 Likes

OMFG!! Lets do it big guys!
The spanish community of FOROBITS supports you!
Much appreciated!

14 Likes

this is So Impressing - extremely cool to have something to “touch”
(terminal messages just isn’t the same ; )

I Love it! (but you forgot the official addon-logo :stuck_out_tongue: )

5 Likes

it Just Works! :grinning:

excellent, thank you everybody at MaidSafe. :+1:

6 Likes

YOU GO GUYS!!!

I honestly thought we were still like months or a year off from a network, but this makes it look like only weeks or a month or two away!!!

It’s a really amazing feeling, after having been following and spouting off about you guys to everyone for so long now.

I deeeeply respect every single one of you on the MaidSafe team. You are truly amazing and capable people. Keep changing the world guys!!

6 Likes

Hey on a side note it looks like you don’t have to type “www” and you can type anything. What can I type there? Anything I want?

1 Like

www is default, client apps can add anything they wish, so www blog and some will be reserved, but you can also add services like even more advanced things like

Books (bookstores)
Songs (music collections)
Videos (you tube etc.)

The folks can build sites to host these on as well, but of course they are not copies but pointer to the data you hosted for instance. So you store your youtube collection and some site aggregates it all, many sites can use the same content (if some add in advertising then perhaps they wont be so popular :wink: )

not only locations for collections, also you can purpose structured Data for farther types, not dns but data types, which takes it much further so:

CAT (cat scan machine)
Xray
Robot
OWL (Semantic data (a bigger wikipedia type structure to ask questions to))

Anything devs can dream of basically.

And many more, so you can start creating networks of things as well as services like twitter blogs and so on.

16 Likes

Fabulous job :smile:

3 Likes

Incredible job devs! Keep on keepin on, you got us all on the edges of our collective seats!

How is the NAT Transversal with uTP/TCP coming along? Is Rust helping out with that over C++? Are there any existing libraries/crates for this or will the new ones be developed from scratch by you guys?

1 Like

Does that mean like:

safe://books.will/captain_underpants.epub
safe://songs.will/barbie_girl.mp3
safe://videos.will/spongebobS01E01.mkv
safe://blog.will/living_in_a_van.html
safe://os.will/ubuntu_knockoff.iso

Is that what that means? Could it also mean:

safe://extremelylongword.will/hi.txt
?

Just wanted to know what’s possible :smiley:

And if so, that’s extremely cooler than http!!

4 Likes

There are no restrictions as of now. All the combinations you have listed are very much possible :smiley:

I don’t think we would have to restrict in future too. Hope it stays cooler that HTTP!!

Just make a note that we use safe: rather than ‘safe://’. Technically Google Chrome doesn’t allow custom protocol schemes (like safe:). So we must wait a bit to check how to get the same experience implemented in chrome.

9 Likes

I’m almost in tears. A big thank you to my heroes. I always love being a recipient of the Scottish way of under-promising and over delivering.

&^%$& I wish I had time before Friday to explore :weary:

7 Likes

Can’t wait to test on windows my main dev environment.

However, been a dev I had to install linux on a partition to see the cool things you have made available for us. Thanks for the installers an sample app. Its nice to see the safe network in action and use rather than imagining how things would operate.

Eargely waiting for part 2 of the updates and windows installers.

3 Likes

Yeah It really works!!!
what I still can not grasp is vault interoperability, i.e say I start 3 vaults, upload the content and everything works perfectly. Then I start 3 vaults more and switch off one from the first set. Should the network detect it and re-store my data to the new ones. Practically doing this I get Firefox stalled, no content extractred

2 Likes

I told you guys today’s dev update would be very exciting!!

2 Likes