MaidSafe Dev Update - March 8, 2018


#1

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

  • Big news this week with the announcement of our partnership with Identillect Technologies Corp. Read more about the collaboration on the Forum, Medium and our blog.
  • The Indian office is running a hackathon on the 15th of March 2018 to attract graduate developers from one of Chennai’s top colleges. We’ve launched a website to promote the event being held at Venkateshwara College.
  • Saturday, March 10th sees the second meetup of the Kuala Lumpur group. @dugcampbell will be calling into the meeting via Skype and we’re looking forward to an interesting chat with the community.
  • The front-end team recently published a new version of safe-node-app (v0.8.0) which upgrades the native safe_app lib to the latest available version (v0.6.0).
  • The SAFE Client Lib team is getting back to Java bindings and working together with the front-end team to fix some of the issues that they have discovered.
  • The Routing team is currently focused on implementing a push-pull gossip protocol and carrying out evaluation work on that.
  • A few members of the Routing team have also been working in the background on improving the asynchronicity of our consensus ordering algorithm for data chains.

Marketing

Identillect Agreement

Big news this week with the announcement of our partnership with Identillect Technologies Corp. Read more about the collaboration on the Forum, Medium and our blog. It’s worth noting: we really appreciate every clap that you can give our posts on Medium - but please do also sign up to follow our blog if you haven’t already to ensure you don’t miss out on receiving these type of updates straight to your inbox.

February Monthly Update

If you’re looking for a very high-level summary of our activity in February, we published an overview of what’s been happening during February (on Medium and the blog).

Update on App of the Month

As some of you will be aware, the community has chosen SAFE-CMS as the App of the Month. We’ve already carried out an interview with @Shane and we’ll be starting to publicise his great work with @AndyAlban immediately after the much anticipated release of v1.0.0 of SAFE-CMS this Sunday (11th March). Check out this post to get the latest on the release. And please let us know which project you’d like us to focus on next month!

Hiring Hackathon in Chennai, India

The Indian office is running a hackathon on the 15th of March 2018 to attract graduate developers from one of Chennai’s top colleges. Competition for the best graduates is high and our team in India will be doing all they can to spread the values and vision of the SAFE Network. We’ve launched a website to promote the event being held at Venkateshwara College.

Website Design Meeting

Another good meeting with the website design agency this week. Having completed the wireframes, the designs are progressing and once refined we’ll move into the build phase of the site.

SAFE Network Kuala Lumpur Meetup

Saturday, March 10th sees the second meetup of the Kuala Lumpur group. @dugcampbell will be calling into the meeting via Skype and we’re looking forward to an interesting chat with the community. We’ll be moving forwards with the meetups more generally this year so if you’re interested helping to organise a meetup where you live, please remember to add your name to this thread.

SAFE Authenticator & API

@shona and @shankar are continuing the work on the UI/UX designs for Peruse. The designs are in the final iteration stages, after which they will be shared with the community for feedback. We would like to get input from the community before we start the implementation.

A few improvements have to be done in the bindings generation for the C# API. Once those are done, we will be able to test the apps on iOS and then get the code merged with the upstream repository.

A new version of safe-node-app (v0.8.0) was recently published which upgrades the native safe_app lib to the latest available version (v0.6.0). It also incorporates some enhancements to the automated tests and the introduction of a range of codes specific for errors generated at the safe_app_nodejs layer (1000-1100). A couple of additional binding functions were also added in this version:

  • getOwnContainerName: function to retrieve the app’s own container name.
  • readGrantedPermissions: function to read the list of granted containers permissions from an auth URI without the need to connect beforehand. This is expected to be especially handy for some specific use cases previously discussed in the forum about apps being upgraded and requiring additional/different permissions than before. In such a scenario, the authenticator will grant the same set of permissions it granted last time before the upgrade (unless the app was revoked before the upgrade), even if the app added some containers/permissions to the permissions list. Thus using this new function the app can verify if the set of permissions granted are the ones needed before connecting and if necessary, it can generate (with genContainerAuthUri) and send a second request to gain additional permissions before connecting.

We are now working on updating the DOM API exposed by both the safe-app plugin within the Beaker browser, and from Peruse, to expose the new functions that were added in safe-node-app v0.8.0. This is now going through some internal testing/re-work iterations to make it available hopefully next week, along with an updated version of our Web API Playground tool.

SAFE Client Libs

We are getting back to Java bindings and working together with the front-end team to fix some of the issues that they have discovered. First, the Rust JNI library that we use has been updated with some breaking changes and we need to update our code to conform to the new API. Second, we’re aiming to improve the Java exception handling in bindings as the front-end team continues to stumble upon problems with it - currently, it’s not possible to see the full context and description of an exception that has occurred in a Java callback as it appears as a Rust panic.

Also, the dev forum user @mplorentz reported some issues with the C headers: currently they are not complete and it’s not possible to use them to build SAFE apps in Objective-C, C++, or C. We intend to make sure that the headers are always staying relevant and usable and we’re looking for ways to integrate these tests into our Continuous Integration pipeline for automatic testing. We have created a new JIRA task to track it.

Routing & Crust

We are currently focused on implementing a push-pull gossip protocol as described in Randomized Rumor Spreading - Karp et al. [FOCS 2000], and carrying out evaluation work on that to compare to other such gossip methods and their results. All work on this would be going into the safe_gossip repo branches while still in the comparison stages. We have also been working in the background on improving the asynchronicity of our consensus ordering algorithm for data chains. For completeness, we feel this is a very worthwhile approach and certainly could buy us some much-needed components that would reduce our codebase (dealing with eventual consistency globally), ease testnets and thereby get us to beta stages much faster. With Crust, Core and front-end moving so quickly, this is a perfect opportunity for the Routing team to hopefully take this opportunity for a very important win, if we can make a fully async consensus ordering algorithm work (this is separate from group consensus and relates to nodes shared state, but is very important), which of course has no guarantees.

In Crust, this week was mostly about fixing issues and writing more tests. First of all, we wrote automated tests to make sure Crust won’t accept too large packets (bigger than 2 MB). That’s a precaution to defend from DoS/OOM attacks. We also uncovered a race condition during direct connections that sometimes resulted in connection failure. That bug sat there for quite a while unnoticed, but fortunately it’s fixed, covered by tests now and waiting for review and to be merged :slight_smile: . We also found some issues in our examples, exchange_data specifically - Crust Service used to be dropped prematurely, resulting in dropped connections. Fortunately that’s fixed too. Another obstacle we faced is that netsim based tests won’t run on Travis CI. It has something to do with netsim trying to create network namespaces inside Docker (Travis CI builds are run inside Docker), but we’ve not yet identified the source of the problem. So, for now, netsim based tests are not run on Travis CI. And last but not least, we implemented bootstrap cache: when Crust successfully connects to some peers directly, it caches connection information (IP and public key) so that on restarts it’s able to bootstrap from those peers.


#3

2604om


#4

Impressive list of stuff going on there! Keep up the great work!


#5

the best first post i’ve seen so far! xD

=) excellent! so ‘no bootstrap servers needed anymore’ :smiling_imp: things are getting more and more decentralized, secure and interesting


#6

Yes, great news about bootstrap functionality and partnerships. The gossip developments are rather interesting too. It’s hard to keep up with all the great things happening. I suppose that is a good thing too! :slight_smile:


#7

It also means that shutting down a network starts to get very tricky if people don’t want it shut down. Like Cerberus, you cut one head off and another grows back!


#8

oups xD someone is very bad at spelling this evening xD


#9

Haha, I was thinking the same thing. No longer all the “community version xxx” networks where you had to geek to start 8 nodes in the hope to start your own network. This is just reconnecting without any bootstrap-servers needed. Lot of fun.

Overall amazing update. So much momentum going on. From partnerships to hackatons at new offices. Amazing work.


#10

Thanks to all of the team for all of their great work!


#11

A hiring hackathon! Noice! This company is expanding in such a great way. Hackathon, DevCon, Global meetups, New recruits, the list goes on. You’re all bound for such success because well, you are all such talented successful folk. :blush:

Sounds like the routing team is really digging into the async consensus ordering for Data Chains. It immediately made me think of @AndreasF
I know the current team can pull this off but Andreas seems like a good dude to bounce routing ideas off from :wink: this route also sounds like a worthy cause. We’re all pulling for you! Keep your stick on the ice (if you’ve ever seen red green show).


#12

Thanks Maidsafe devs that you super ants keep hacking, great that you’ll also have students hacking soon.

:clap: 21x after that my real/virtual hand started hurting. More importantly, wow this is the first time that Maidsafe’s enterprise version is being used, this is HUGE and perfect timing.

Well deserved @Shane and @AndyAlban

:stuck_out_tongue:


#13

I just dug into the medium link there and this is great to see! We pondered this in the other thread and this is absolutely good news for both Maidsafe the company and SAFENetwork - licensing deals will provide income and allow money to be reinvested in SAFENetwork and associated offerings.

If anyone unfamiliar with open source companies, this is one way they can keep their code open and accessible, while funding its development. I believe this is a much more robust approach than simply offering support services or some such; it is delivering genuine enterprise value, while building the open source software we are all passionate about!

Well done team and I hope this path continues to deliver fruit. We need a profitable Maidsafe team to continue pushing the envelope for decades to come! :slight_smile:


#14

Essential feature. Kudos.:slightly_smiling_face:


#15

This is really great work - I love the micro-site to promote the hackathon, that’s a good move, though I would have put a little more information and maybe some github links instead of “Laptop with relevant software loaded.” under the “What do I need?” heading.

Myself and Andy want to say a huge thank you for the app of the month award, it’s been a busy couple of months for us and recognition is always great. For those dangling their feet other the edge and wondering if they should get started with Safe Network app development, just remember that we were where you are now only 8 weeks ago - it’s quick and easy to pick up, and myself and others on this forum are always on hand to help.

I’d also like to say a huge and public thank you to @hunterlester for the ridiculous level of support he gave us in January, @maidsafe in general for the all-expenses-paid invite to the developer conference (we consider it a great honour), @happybeing for pointing us in the right direction when we’ve been well and truly lost, @nice, @Nigel, @riddim, @traktion, @Sascha and @draw for liking almost every one of our posts and bringing a whole bunch of ideas and mental support with them, @JPL, @jlpell and @Sascha for bug reporting, beta testing and generally being all-round great dudes with a lot of patience.

Oh, and @AndyAlban (who, I’m sure he wouldn’t mind me mentioning publicly, received a 50% pay-rise this week in recognition of the hard work he’s put in over the last 6 months).


#16

I thought the same. Also, shouldn’t Venkateshwara College be mentioned on the page somewhere?


#17

We do appreciate inputs to make it better. @Shane, what information would you suggest that can be added and what are the github links you are suggesting to add?


#18

We are also trying to conduct the same in few other colleges too. There can be overlapping weeks where students from multiple colleges may register. We opted to keep it generic for now.


#19

Presumably, they’re going to be hacking on the core network code, using the browser with mock routing enabled or building apps - either way they’re going to need a subset of these things to get started:

  • GCC or another compiler collection (based on their OS) installed and available in their PATH
  • Cargo or some other Rust compiler installed and available in their PATH
  • If they’re working on Desktop applications, either NPM5 & Node8+ or a tool-chain capable of modifying and compiling C# code (probably Visual Studio if you’re on Windows)
  • If they’re using mock routing, it would help to have the mock routing version of the Safe Network browser installed before arrival

These are what I would assume would be the most time consuming part of the process, so would be most useful to have done before arrival - not to mention that when 30 people turn up and all start trying to download GCC, Visual Studio, Cargo, the Safe Browser packages, etc., your internet speed is going to take a hit and everyone will be sat there waiting. :stuck_out_tongue:


#20

Since this is a hiring hackathon, we might not be giving SAFE specific tests. The students come to know about this only early next week and expecting them to understand the network aspects and take up the challenge will be quite an ask.

At the same time we would have to evaluate their skill/knowledge in what they are confident about. I personally feel that we shouldn’t be asking the guys to come with a specific toolset. The interview process starts right from how prepared and aware they are about the platforms they pick.

@Shane if you have any interesting ideas that can be given for the students as the hackathon challenge, please feel free to DM me.


#21

You don’t want to scare them away by giving too much homework.