MaidSafe Dev Update - April 5, 2018

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

  • We are pleased to announce two new starters this week. Join us in welcoming David Geddes (@DGeddes) who is taking up the Customer Support Manager role based in Ayr. Connor Wood has also joined the team as a remote Rust Developer.
  • The Indian office is also growing their team with Ashwin Kumar filling the .Net Developer vacancy while Vijay will be joining as a Javascript UI Developer.
  • Today, the front-end team is releasing a new patch version of the SAFE Beaker Browser (v0.10.2) which upgrades the Electron package (to v1.8.4) in order to solve some security vulnerabilities issues. You can download the new packages for the mock and live network from our releases page on GitHub.
  • This week, the Crust team finally attempted to integrate the latest Crust changes (dev branch) into Routing. The integration itself was smooth and CI checks are passing.

Marketing

Let’s start with a review of last month’s digital stats:

As you can see we are continuing to grow across all platforms and are very excited to have reached 100 followers on the SAFE Network publication on Medium. Keep an eye on Medium and our blog for a round up of all of last month’s activities.

Websites

Thank you to all those who took the time to provide us feedback for the Dev website. We have already incorporated your feedback into our design and created content in line with it. Development will continue over the next few days with your feedback front and centre. We are looking forward to launching this for you!

We have now confirmed the design style of the primary MaidSafe website with the website agency and are very excited about the new look and feel. We will be finalising the design of each page of the new website in the coming weeks before development can begin. We will share more news as we move towards launch.

We are making steady progress with both the SAFE Academy plans and CEP video projects. We will keep you up-to-date as we complete these projects. We hope to have the proof of resource scripts finalised this week, as well as making alterations to the animations for the Safecoin animation. We are excited to have these videos to show you all very soon.

DevCon Update

We are all busy working to make the SAFE DevCon 2018, our first European DevCon, a huge success. It’s shaping up to be a fantastic event and we are looking forward to welcoming some community members from across the globe as well as through the livestream from Product Forge.

Recruitment

We are pleased to announce two new starters this week. Join us in welcoming David Geddes (@DGeddes) who is taking up the Customer Support Manager role based in Ayr. Connor Wood has also joined the team as a remote Rust Developer and we look forward to working with you both.

The Indian office is also growing their team with Ashwin Kumar filling the .Net Developer vacancy while Vijay will be joining as a Javascript UI Developer. These very promising and enthusiastic candidates are freshers that came out of the college campus interviews our team in India conducted recently. Both will be finishing their final exams through the course of this month and will start full time in May.

SAFE Authenticator & API

Today, we are releasing a new patch version of the SAFE Beaker Browser (v0.10.2) which upgrades the Electron package (to v1.8.4) in order to fix some security vulnerabilities issues (please refer to the release changelog for more details), plus a minor fix for some specific scenario where the DOM API handles were not being freed automatically when reloading a page (MAID-2602). You can download the new packages for the mock and live network from our releases page on GitHub.

We continue with our efforts to create the content for the dev website. Using the feedback received from the community in our forums, which is very valuable and helpful, we are working on creating a tutorial which can work as a quick start guide for any new developer trying to create a SAFE application for the very first time. We are trying to make it simple and straightforward, while at the same time explaining some basic concepts needed to understand the APIs and the data structures of the SAFE Network. This is challenging as in many cases explaining one concept leads you very easily to another one, but we are doing our best to avoid going into sidetracks to keep it simple and fun to follow.

All branches we had for different parts of our refactoring in Peruse browser were merged into a single Dev branch, which is where we are now working on some final stabilisation activities before it can be merged into the MaidSafe safe_browser repository. Some of the parts we are still working on is making sure it can register the URI schemes correctly on all platforms for both dev and production mode, as well as fixing some issues to have it running all tests in our CI environments successfully.

We have started to integrate the C# bindings from where the work had been paused because of a few nitpicks in safe_client_libs (see MAID-2556 for more info). This task in JIRA describes the effort that is still left to get the C# APIs merged to upstream and published in Nuget. The Java APIs are also progressing as expected. @lionel.faber and @nbaksalyar have been fixing the issues encountered during the JNI integration.

SAFE Client Libs

This weekend, kpp on GitHub reported a bug in the get_if_addrs crate caused by performing an unsafe operation: dereferencing a raw pointer. We have accepted his PR fixing this and published a version change, and we are looking into reworking the internal API (MAID-2617) to make faulty code harder to write in the future.

We want to give an update on a revocation bug which was reported on the forums. @marcin submitted a PR and the team took care to make sure that this critical part of the code was thoroughly tested and reviewed. We decided that SymmetricDecipherFailure should not be suppressed, as in the current code, but that instead an error should be immediately shown to the user. The PR is being revised accordingly; full details can be found in MAID-2616.

We have also continued upgrading crates to Rust 1.24.0 as per MAID-2533, and have merged commits in several of our crates, including self_encryption and routing. The only remaining updates are SAFE Client Libs and Vault – they should be reviewed and merged soon.

@lionel.faber has discovered some new issues in our Java bindings mostly related to the handling of null values in JNI. The default Java constructors initialise the class fields as zeroed memory and object fields are initialised as nulls. This behaviour can result in NullPointerException when we convert Java objects to Rust structs. We are going to fix this by implementing new default constructors initialising proper default values for the class fields. The progress can be tracked in the JIRA task MAID-2615.

As mentioned in the previous section, @adam is working with the front-end team to fix the issues in C# bindings reported by them. We are also continuing to work on integrating a proper C header generator into the bindgen – the major part of this work is done, and we are expecting it to be merged along with the C# and Java branches. Progress can be tracked in the JIRA task MAID-2575.

We want to highlight the community member @riddim and his effort in implementing Python language bindings. The Python bindings are shaping up nicely and we are looking forward to seeing further progress – it might be integrated into our safe_bindgen project eventually.

Routing & Crust

The Routing team continues to be split in parallel tracks with one of the teams working to improve the vote ordering algorithm and the other focussed on integration of this into the Routing codebase. We mentioned recently that we expected it would be difficult to provide very detailed updates in the very short term as we work out the finer details and that has proven to be the case. We anticipate that over the course of the next few weeks we should be able to be much clearer about remaining development work once we have a clear path forward and we will make our next Routing update at that point.

This week, we finally attempted to integrate the latest Crust changes (dev branch) into Routing. The integration itself was smooth and CI checks are passing. Although, we still have to do more rigorous testing to ensure no regression was introduced: we’ll spin a separate test network to make sure everything still works fine. Also, in Crust we discovered some abnormal uTP behavior which we will be investigating further soon, but it’s worth noting that should not affect Routing communication since the bug seems to appear only when a connection is being terminated. Finally, we proceeded with Service::connect() changes where Crust will do connection information exchange by itself using an out-of-band channel. This task was paused for a while until we fixed some bugs and did the Crust dev branch integration into Routing, but now it’s almost done and the new interface should be ready next week.

73 Likes

First!

And the hattrick! 3 weeks in a row.

Will read update now.

13 Likes

Second!!! So close!!!

9 Likes

Another good update, really happy to see the new hires! How many strong is the @maidsafe team now?? It’s really getting up there, very impressive. I’m dying to see the Safecoin video and this update is making me anxious for next weeks update already. We’re a hungry bunch for the teams progress but we truly admire and appreciate all you accomplish! Keep rockin team!
Great work @riddim!

20 Likes

Great update and welcome to the new guys!

@maidsafe is there a summary of what the new very of crust brings to the table?

12 Likes

=) awesome - sounds like things are getting easier and more intuitive for new developers who want to write software for safe :slight_smile:

Can’t wait to see the new website =)

9 Likes

Another great update! Excited to see the growth across both the social & developer communities. Also can’t wait to see all of the new tools to help further that growth (e.g., new websites, videos, tutorials, etc). So much great stuff! And in anticipation of the upcoming weeks…

11 Likes

Great to hear. De-risking for picky investors week on week.

4 Likes

The link to David Geddes’ Intro blog post is pointing to Connors. Can somebody fix? Welcome Connor and David and Ashwin and Vijay!

7 Likes

Great update! Welcome to all the new people.

Way to go @riddim !!

21 Likes

Oops I just fixed the link. Thanks for letting us know :slightly_smiling_face:

10 Likes

Amazing! Bright future for Safe

9 Likes

Thank you for the great news !

I really love how “customer support management” sounds in this context. :slight_smile:

8 Likes

I’m absolutely thrilled about the new hires, welcome!
but I’m also losing track… Are we going to have a section about the
MaidSafe team on the new homepage? Names, pictures and all?

5 Likes

Thanks Maidsafe devs,

Welcome David & Connor

:clap: @riddim

@maidsafe is there not a way to get the twitter followers to signup to this forum?

Fun fact: I visited this https://tykn.tech/ blockchain startup yesterday and not surprisingly they knew about Maidsafe. :stuck_out_tongue: (in the future they’ll probably use the SAFE Network for their decentralized id system, as far as I could say).

10 Likes

We’re up to 33 now Nigel.

23 Likes

Blimey, as I sometimes say. :wink: This is impressive and a great achievement, as well as great news for the project.

And @riddim gets well deserved acknowledgement IMO. Its great to see so many here mucking in in different ways, making Gifs and memes, @SalvorinFex with his wallpapers, @neo feeding into tech discussions, and so many others by being here, making this community and supporting Maidsafe in this marathon.

This is great :slight_smile:

23 Likes

Yes it has grown Mark. Hiring the team has consumed considerable resource, particularly as we have been quite selective, and has been a huge part of @victoria’s job these past 6 months and required a lot of input from team leads and management. This will now start to pay off once every has bedded into their roles.

26 Likes

@Traktion currently there’s no comparison between stable Crust and latest development version, but once it’s stabilized, we’ll have an entry in a changelog :wink:
Anyway, here’s a rough list of changes:

  • more robust NAT traversal. Crust now uses separate library (also developed by us) specifically designed for NAT traversal: GitHub - ustulation/p2p: NAT Traversal techniques for p2p communication. It really aids in making our home computers accessible over the internet. Meaning usually you should not be required to do any manual setup like port forwarding in your router, etc.
  • uTP support. Crust now supports multiple communication protocols: uTP and TCP whereas until now only TCP was supported. uTP is a data transport layer protocol used by BitTorrent protocol. uTP has congestion control - it dynamically adopts to your network congestion. Which is really nice for applications like SAFE Network Vaults, because uTP gives higher priority to other applications running on your computer: browser, spotify, skype, etc.
  • end to end encryption. Currently Crust encrypts all sent messages, that means deep packet inspection should be impossible - more privacy and security.
  • Crust is now based on Futures and Tokio and exposes appropriate API. Personally, I’d say that Tokio is becoming the de facto standard framework for network programming in Rust. Hence, being Tokio compatible improves Crust reusability.
  • And we also introduced bootstrap cache: once Crust connects to some peer, it caches its connection information: public address, port and public key. This information later can be reused to reconnect to known peers easily.
37 Likes

Awesome! Thanks for the detailed breakdown! It sounds like a big step forward! :sunglasses:

10 Likes