Fri 7 Nov 2014 4:06AM

OpenAppJS Technical Update

ST Simon Tegg Public Seen by 174

The biggest news in technical land is that Paul Frazee and others have hacked up phoenix a distributed social network built on top of Dominic Tarr’s secure scuttlebutt. A usable version is now ready! This is important for OpenApp because:

  • This is the same system we planned to use for federating instances of openApp groups. We will likely just use phoenix/secure scuttlebutt as a ‘base layer’ for supplying federation functionality to OpenApp.
  • These developers will continue to work on some of the harder technical problems (like local cacheing with distributed databases) that were raised in earlier technical discussions here.
  • They’re also using mercury for the frontend UI like the OpenAppJS team which raises the possibility of closer collaboration between these teams.
  • This is dovetailing nicely with a strategy of ‘open source at scale’ - part of this is to just build on top of the best of the ‘emerging web’, rather than try and reinvent all the things.

To recap, secure scuttlebutt implements a ‘secure gossip protocol’ - peers (in OpenApp a large group like Enspiral) share secure data, i.e. ‘gossip’ with other instances they trust, who in turn ‘gossip’ with others. Data propagates through system without a centralised server. The idea is that OpenApp groups would have access to the public data of other groups without all of the security problems and economics of being centrally hosted.

I’ll be setting up my own local instance this weekend to try it out.

For OpenAppJS team specifically:
Mikey has been working cobudget which is now being tested internally in Enspiral for this month’s budget round!
I’ve been hacking on Person-UI the main component behind craftodex. Initially, I found this a bit frustrating as I spent a lot of time getting used to mercury. Perhaps it was because I would hack on this in the evenings when I have low brain function, or because mercury restricts you a bit to make it easier and more performant in the long run. I only started to ‘get’ mercury a month ago and now I’ve come round to it.

The API is starting to stabilise and I’m looking forward to doing more radical things like adding other entities, and viewing groups ‘as a network’ or ‘as holons’. I’ll comment on some of the more interesting technical details that are going on, in the comments here or in the forthcoming design update.


Bob Haugen Mon 8 Jun 2015 2:04PM

@ahdinosaur - just coming back to this conversation after 7 months (last message above). We got somebody interested in some NRP UI experiments, who has some JS experience but is also eager to learn.

The state of the JS client-side frameworks apparently continues to warp. If I understand correctly, you fell in love with mercury, and then fell out of love and went back to React. Is that correct? Can you say more about why?

(I was just reading this, which made sense to me, but then I don't actually do this kind of work yet:
It's in the mercury camp.)


Mikey Tue 9 Jun 2015 2:39AM

@bobhaugen sweet. you're correct in that there are no clear winners in client-side frameworks, we're only using React because it's easy to use, well-supported, and has an active ecosystem of re-usable components, mercury is still awesome but requires more work to use, neither is perfect. however i reckon there are clear winners in the patterns that are being adopted, of most interest to me are "functional reactive programming" and "kappa architecture". only time will tell what actually happens, but maybe this helps share where i'm at.


Robert Guthrie Tue 9 Jun 2015 3:01AM

I'm in awe of Omniscient right now.. I think it looks really great without being too different (ie: written in ClojureScript)


Bob Haugen Tue 9 Jun 2015 10:55AM

@robertguthrie -if I understand this correctly, Omniscient rides on React?

So, does that give you access to those re-usable components that @ahdinosaur talked about? Plus immutable data? Or is it off in its own universe?

And Mikey, what are a couple of those re-usable components that you get the most benefit from?

I'm interested in where this stuff is going. Seems like each of the hot js frameworks evolves in a succession, where they fix what they thought their predecessor did wrong. The problem is the succession may have no end...so you pick something, and now here comes something better (maybe)...


Mikey Wed 10 Jun 2015 2:58AM

regarding Omniscient, yes it lets you use re-usable React components, plus it uses Facebook's immutable data structures (including the respective cursors library), so is in the same universe.

what's nice about active ecosystems is having access to everything you can imagine, to use or learn from, similar to the Node.js module ecosystem in general. i can't single out individual components that provide me with sheer awesome value, it's the ecosystem in general that does.

i agree that hot frameworks will continue to succeed and die, that's why i'm much more interested in learning the underlying patterns that won't become obsolete in a few months. also, i prefer using libraries that implement a focused scope, as they have a longer lifespan, and are much easier to swap in and out as conditions change.

sorry about the urls, markdown seems to work differently in Loomio's new angular interface.


Bob Haugen Wed 10 Jun 2015 10:38AM

"markdown seems to work differently in Loomio's new angular interface."

Sure does. Now my plain urls that worked in the previous interface don't work in this one, and yours that did not work in the previous IF do work in this one.