Preparing for Community Launch!

This week was all about preparing for the community release. Making sure that new members to our community are welcomed, can download the Memri app (via testflight or xcode) and start experimenting right away!

Besides working on the software and making sure it's ready for community release we've also set up a place to meet other community members, give feedback, ask questions & find answers.

Backend

After the Pod team had decided that SQLite was the winning database, a rewrite plan had been made, and this week was about executing that so the backend is ready to be released! In general the pod has more functions, and is getting more and more robust, exactly how we like it to be. Some of the biggest changes from this week are:

  • Security: disallow running on a public IP
  • Safety: added SQL injection prevention
  • Release preparation: added support for old sqlcipher version (the library that provides encryption for us); implemented docker compilation caching; introduced database migration; added support for boolean and datetime types; implemented "get items with edges" function for getting items recursively; implemented "bulk action" for creating and updating both edges and items atomically

iOS Frontend

The focus for the iOS app this week was on three major refactors. First we integrated with the new Schema so that we can very easily add new data types that are consistent across the various front-ends (e.g. browser, iOS) and the Pod backend!

We also integrated with the new SQLite backend and this required to refactor how edges are handled in the iOS client. The new edge architecture is much easier to understand. This is what an edge traversal now looks like in CVU:

// This gets the name of the first contact and its first company
.edges('relations').first.target.edges('companies').first.name

We also worked on various new renderers: Messages, Calendar, Photo viewer and Timeline, it's not completed yet, but progress is good!

Besides that, we worked on the browser front-end. The browser-based code editor Ace now does inline linting with the ported CVU parser that runs in the background. Furthermore the GUI now has tabs so it's easy to open multiple files at the same time. There's also a tree showing both the default and the user defined views.

Incorporation of Memri

Incorporating a company in a democratic form in a way that fits our needs has proven to be a complex puzzle. But, just like what we said the last couple of weeks, we're getting close. Some of the main conclusions:

  • We want to be able to represent multiple stakeholder groups in our governance structure. (e.g. Customers should have influence on who is in the board as well)
  • We want to be able to combine this with the concept of Founders and we should be able to attract investors. However, not in a way that the organization can ever be taken over by a 3rd party.
  • It should be possible to differentiate rights for each Stakeholder group (e.g. when we have 1000 Customer members, they should not be able to completely ignore the needs of the Workers just because they are with more). We would like to add some algorithm that shifts that influence at some point, so when the customers are with a million, they do receive more influence.

It has been a neck-and-neck race between Switzerland and the Netherlands as the jurisdiction to incorporate Memri. While Switzerland had been most promising for the past few weeks, it seems that might be changing. To create a multi-stakeholder cooperative Switzerland requires a complicated structure with a total of 5 entities to make all the above possible. The Netherlands may turn out to make a less complex alternative possible, reaching the same goal with only two legal entities. The irony of seeking far and finding near is not lost on us.