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_applib 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.
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
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 . 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.