MaidSafe Dev Update - June 14, 2018

Here are some of the main things to highlight this week:

  • We’ve just released a new ‘Getting Started’ video. This is intended to be a quick and easy introduction for newcomers to help them get past a few of the common questions that are often posted on the Forum.
  • @dugcampbell was a guest on the Future Tech Podcast.
  • The Peruse browser code has finally been merged into the peruse branch of the MaidSafe repository, therefore from now on all the issues for Peruse shall be reported in this repository and any pull requests meant to be for the codebase maintained by MaidSafe shall be sent there.
  • You can download Peruse v0.6.0 from here, where you can also see some known issues. This new version, while still a proof of concept, is heartily recommended for all devs as it features the future of the DOM APIs. Gone is the complexity of managing the handles, and you can now experiment with the safe-app-nodejs based API without having to build from source.
  • This week we are releasing a new batch of SAFE Client Libs libraries: safe_bindgen 0.5.0, ffi_utils 0.5.0, safe_core 0.30.0, safe_app 0.7.0, and safe_authenticator 0.7.0. This is a major release since January this year that comes with a lot of goodies, the highlight being the bindings generator.
  • Work has continued on the implementation of PARSEC and we’re very close to being able to start testing the protocol for real. The first cut of the algorithm is in our repository and there will doubtless be some issues which will be exposed and fixed as we implement the tests and example code, but progress on this is good.

Marketing

First up this week, we’ve just released a new ‘Getting Started’ video. This is intended to be a quick and easy introduction for newcomers to help them get past a few of the common questions that are often posted on the Forum. This will be updated regularly going forwards to reflect any changes that are rolled out across the Network.

The team has spent much of this week working with the UX/Front-end team in honing the content for the website and providing feedback on various designs (of which more below), in addition to working through a number of broader marketing planning sessions.

@dugcampbell was also a guest on the Future Tech Podcast and talked about the SAFE Network during an interview with Crypto Core Media.

Finally, a quick heads up to anyone based in Melbourne - @mav is organising a get together on Sat 23rd June - get in touch if you’re in that part of the world and fancy chatting about all things SAFE!

User Experience & Website Design

As it turns out, it’s true: the faster you go, the more time slows down. This barely-provable-in-a-lab theory now has solid anecdata to back it up:

This week the website team has managed to pack in a Newtonian physics busting task completion rate. @Shankar put in 15 hours on coding a pixel-perfect homepage before your coffee went cold—waved through a PR review almost undisturbed—before rolling on to the demands of responsification, to coin a word.

All this while @Shona and @JimCollinson somehow managed to complete a multitude of page layouts—everything from FAQs, to Safecoin, to the Roadmap—before even starting them.

What happens if you’re driving at the speed of light and you turn your headlights on? Nothing, if it isn’t logged in Jira.

And the great thing about moving this fast is that the designs mature quicker too; patterns emerge, the rhythm of a site starts to become apparent, and yet it all still feels fresh. It’s not ready for the wild just yet, but let me put it this way: by the time we’re finished, you’ll have aged but six weeks, while the website will be ready for high-school.

It’s been an Earth-week of hard work, high energy, and a bit more fun than strictly necessary. But then again, we’re reinventing the internet here folks, so it’s all relative.

SAFE Browser, Authenticator & API

The Peruse browser code has finally been merged into the peruse branch of the MaidSafe repository, therefore from now on all the issues for Peruse shall be reported in this repository and any pull requests meant to be for the codebase maintained by MaidSafe shall be sent there.

During the last week, we were internally testing Peruse, and fixing a few issues we discovered during that process. Today, we are making available a packaged (non-official) version of the latest code available in GitHub. We still have to migrate our CI and automated building scripts onto the MaidSafe repository, which we will have ready for the next release, and this is why this version is not published in the MaidSafe repository.

You can download Peruse v0.6.0 from here, where you can also see some known issues.

This new version, while still a proof of concept, is heartily recommended for all devs as it features the future of the DOM APIs. Gone is the complexity of managing the handles, and you can now experiment with the safe-app-nodejs based API without having to build from source.

We have also created the playground3.0 branch of our Web API Playground tool which is fully compatible with this new version of the Web API, and it can already be used to explore the new API.

The new Web API is the same API as the one exposed by safe_app_nodejs with the exception of the authorise function which replaces the openUri function exposed by safe_app_nodejs as it sends the request to the Authenticator using the internal Peruse communication channel rather than the system URI. We highly recommend using the Web API Playground tool to get acquainted.

And further to all of that, it’s worth noting this API change is a breaking change for all the web apps out there (sorry devs! But look: no handles!)

We are now working on enhancements to the authorisation pop-up to show the same type of information shown by the SAFE Beaker Browser, as well as working on the implementation of the reconnect feature which is also supported by our Beaker Browser fork.

SAFE Client Libs

This week we are releasing a new batch of SAFE Client Libs libraries: safe_bindgen 0.5.0, ffi_utils 0.5.0, safe_core 0.30.0, safe_app 0.7.0, and safe_authenticator 0.7.0. This is a major release since January this year that comes with a lot of goodies, the highlight being the bindings generator which builds upon the foundation laid by the moz-cheddar library that is intended to be used for generating C headers from the Rust code. We took the existing code in moz-cheddar and improved it in a lot of ways: now we support generating bindings for multiple languages, starting with Java and C# - and hopefully with other community-supported language bindings in the future.

@marcin was on vacation last week but he did get a PR merged that dramatically decreases Travis CI timeouts, which have been impeding our ability to merge changes in the past. This PR works by splitting out the builds performed by Travis into multiple stages and by fixing an issue that was preventing proper usage of Travis caches. Additionally, we are upgrading all crates to Rust 1.26.2.

Routing

Work has continued on the implementation of PARSEC and we’re very close to being able to start testing the protocol for real. The first cut of the algorithm is in our repository and there will doubtless be some issues which will be exposed and fixed as we implement the tests and example code, but progress on this is good. All being well, there should be a running example by this time next week, and we’ll be working towards the second milestone which will see support for changes to the membership list (i.e. allowing nodes to join and leave the section while maintaining the integrity of the consensus process).

Crust

Remember that last week we started reworking encryption in Crust. This week we pushed an initial implementation to GitHub - maidsafe-archive/safe_crypto: Provide abstraction for the underlying crypto library so that all our other libs depend on this one for crypto related stuff which is based on rust_sodium for now. Initially, we had encryption traits, but when we started integrating them to Crust, we noticed how much more complex code was getting: all the functions and structures that used crypto primitives had to be made generic. So instead we decided to export concrete crypto related types in safe_crypto. The work on integrating those types in Crust is still in progress.

netsim is so cool that we want to shout it to the rest of the world. But no software project can flourish without good documentation. Hence, we started working on tutorials and examples on how to use netsim for misc scenarios.

As mentioned last week, the tokio-utp crate has now been moved to GitHub - maidsafe-archive/tokio_utp: uTP implementation for Rust + tokio. One more tokio-utp bug was discovered which only reproduces on Windows. Under heavy load, our implementation starts losing packets and at some point, when memory buffers fill up, connections are reset. This should not happen, because that’s the whole point of congestion control - don’t send more packets than the other side can handle. We started investigating, but haven’t found the root cause yet. But we will :sunglasses:

87 Likes

First!! Whooooo ooooooooo!

12 Likes

Seconds to late (minutes actually)

Good job Maidsafe devs

:stuck_out_tongue:

9 Likes

Congratulations on getting this out. What a major effort and undertaking.

11 Likes

Is it just me? that the updates become very cool? As an OMEGA level COOL!? :smiley:

18 Likes

I like the added humor :slightly_smiling_face: full steam ahead team! PARSEC is starting to settle into its new home!

25 Likes

Great news! Thanks team

12 Likes

Lots of good things in this update, but this one is very exciting:

A single SAFE API for everything including web DOM, Nodejs, plus bindings for other languages starting with Java (hey @Traktion!) and C#.

This means that everyone will be learning a single way to program SAFE Network, so skills are transferable, anyone can help anyone else, and we can more easily share design patterns and libraries. For Web and NodeJS we can build shared libraries. (Other languages could do this too, although with more fiddling about with language bindings which as we know are a pain! So I don’t expect to see so much of that, but I look forward to being proven wrong :slight_smile: ).

This is a big deal, and a great job by the team. Big thanks from me to everyone who made this possible.

54 Likes

Owlright!

Whoooo-ever started writing this for kicks should keep doing it as long as they have the steam, you know?

Because that’s the second update in a row that turned me upside down and made me feel like a happy bat. Meaning, I’d stay awake till midnight for the next one, as long as they remain this joyous.

Since the exuberant cat seems to purr around the website exclusively, you’d better slack off a bit. Why hurry. A little tweak here, some nice bit there. We’ll wait. And read!

17 Likes

I was watching some of the DevCon vids today including @Krishna and I can’t wait to see meta data available in MD’s and multi-sig enabled. Your video Mark is super inspiring and I’m glad it is making the impact it has so far. If we have SoLiD integration in SAFE we will have another truly transformative tool to help change the world!

17 Likes

Just wanted to say I love the tone of these recent updates. It’s great to see a project that’s as serious as MaidSafe’s able to have fun along the way (it also shows some leveled-up confidence imho).

18 Likes

:heart_eyes: oh my! Time to have a play!

17 Likes

Awesome news! :star_struck:

Is there a good place to start for creating the java bindings? It would be great to have some simple steps to getting to a boiler plate to build on.

9 Likes

I’m not a pro with this coding thing, but maybe this might help a little

5 Likes

Java binding! This news has made me happy :smiley:

7 Likes

I listened to that. It’s like a semantic and syntactic framework for doing provably safe (formal verification) smart contracts in just about any language. Similar to a functional programming language like Haskell or Ocaml. Think I’ve got that right anyways. :stuck_out_tongue: I would think it could be useful once people start messing around on SAFE.

K Framework - YouTube This video gives a brief description of K framework in C. Perhaps once multi-sig is enabled this is something that @oetyng would have interest in??

7 Likes

When we get some news about new exchanges? ;/

2 Likes

Around alpha 4 is my guess

Great update. And it seems we had a new update writer, well at least for one part. :grinning:

I can see that dim light of alpha 3 at the end of the tunnel getting brighter.

10 Likes

I know there will be some bumps possibly, but dang this is awesome to see.

7 Likes