Experimentation with Open App Ecosystem

I've just recently joined the group, but from the quick research I did around the threads and loose resources, I already have a feeling that what I've been working on is with total alliance with what Open App Ecosystem proposes. So it maybe a good idea to share.
I plan on experimenting with a mesh network in my neighborhood, which is a quilombola village in central Brazil. I'm gathering the necessary hardware, and researching on how to setup the network. Theoretically I'll get a network where devices running p2p protocols like SSB and Dat can communicate freely with one another. I was thinking of an ecosystem of applications to run on the communities local network with objective of strengthening community economic resilience and self-governance, which seem to go well with OAE. I built these inspired by ideas I got from the OAE and they are welcome to be used.
I'm currently working on the boilerplate as a proof-of-concept for the architecture, which can be found here:
https://github.com/luandro/mobile-p2p-boilerplate
I'll start working on the proposed Open App Hub once I get a working proof-of-concept. The command line tool for scaffolding applications is still just at idea phase.
Great job and thank you all for the inspiration.

Bob Haugen Sat 17 Mar 2018 9:54AM
Wow! @luandrovieira you've got a lot more of this done than I expected! That's exciting!

Lynn Foster Sat 17 Mar 2018 12:00PM
@luandrovieira yes that helps a lot, thanks very much! It all makes sense. I like the way you are working to use the strengths of each technology, that gives a very good way to think about the architecture question. And you are doing it, like Bob said, wow!

Luandro Vieira Tue 3 Apr 2018 2:08PM
Just publish a new release for the Open App mobile seed application. It implements GraphQL subscriptions for SSB gossip, translations, and has a new polished interface. Please install the apk, test it out and give some feedback.
If you're adventurous clone and try playing with it. The repo has been moved to the Open App organization on Github.

Lynn Foster Tue 3 Apr 2018 2:36PM
@luandrovieira very exciting. I will install it and try it, although it will be in a couple days.... and I've never installed an apk file, so it will be a first... but I'm very much looking forward to seeing where you are going!

Danyl Strype Wed 4 Apr 2018 5:06PM
It's great see people using the design first, code second approach. This gives you a chance to clarify user needs and map out the functions you'll need to meet them, before getting lost in coding roadblocks. Also means you're less likely to do hours of head-scratching coding, only to find that all along there was an existing back-end that can be re-used (or forked) to meet your needs.
Luandro Vieira · Sat 17 Mar 2018 1:32AM
@lynnfoster I'm also very new to all this, compared to a lot of devs, but I've been putting a lot of effort to understand it all. This is all from my limited perspective, but everyday I learn and experiment a little bit, and understand a little bit more.
Like I mentioned in other comments, every protocol has it's strengths. SSB is a gossip protocol which is perfect for efficiently replicating a json log on your social network. It's good for quickly spreading data to people who you personally care for, but since everyone holds a huge json log, is not very good for heavy data. That's where Dat comes in, which is perfect for reading, writing or streaming data chunks (think Torrent + Git). One protocol complements the other.
My first experiment was community-apps-hub. SSB is used to publish to my social network that I have added a new application to App Hub. This message contains a Dat hash as content. With that hash anyone in the network can use Dat to retrieve the heavy apk file which is in my device. There are some problems there, like me having to stay online for my friend to be able to get the file from me. But since I'm planning on using this on a community network, we'll have Raspberries that can read the SSB message and download and store the apk from Dat, so that it's available at all times. We could also use a server in the cloud to do that.
In relation to Linked Data, it's not GraphQL that does that, but SSB. In SSB every message you publish to the network has a
type
. So in any application I can check a persons profile by filtering the messages with theabout
type. In the case of my experiment I just published messages with a typenew-community-app
, and then I create a flumedb plugin to filter them out. Another great thing about SSB is that is gives the user the best offline-first experience possible, since a lot of the data is already stored in the device.GraphQL provides a declarative interface for the front-end, documentation and a playground. It doesn't care about where your data comes from. It's a middle layer between the server and the UI, that helps you organize your data map. If you're using GraphQL in existing application, and you wanted to test with a p2p stack, you probably wouldn't have to change the front-end, or the types. You would only need to changes the resolvers from a cloud database to a p2p database.
Hope that helps. I've been able to integrate GraphQL with SSB on Android, and am now trying to architect a plugin system in order to re-use our types, so we slowly start building a Linked Data ontology (is that the right term?). Hope to be able to share a working prototype in the coming weeks.