Loomio
Mon 30 Apr 2018

Agent Unifier App experiment

LF
Lynn Foster Public Seen by 328

I'm starting to work on a small app that records what record is the same agent (person or organization) across existing apps. This will allow groups that use multiple apps to know who/what is the same agent for any purposes (stats, accounting, agent dashboards, etc.) It is one piece of getting to a more agent-centric open app architecture.

This type of thing is needed by both FairCoop and Mutual Aid Network, both of which I am working with now in different interoperability projects. They actually have a lot of overlapping needs.

I'm doing it in django because that is what I have worked with most in recent years, and because we have some code that gives a good start to this app. But I consider that to be a stop-gap implementation, and hope that some of the more decentralized agent-centric architectures will come to the rescue at some point.

I'm putting it here as an update, but partly because I am running into some questions that I could use some advice on, which I will add as comments here. Or if anyone knows of such a thing already, then I definitely would be interested in that.

LF

Lynn Foster Mon 30 Apr 2018

Another note: I am separating the concepts of Agent and User. This app will be about agents, and need to be associated with whatever is the SSO function used by the group. (Although I don't intend for it to be limited in scope to each group. If I am a member of more than one of these group ecosystems, I still want to see all my stuff in a dashboard in everything I'm involved with.)

  • Data such as name, location(s), email address(s) are properties of agents. Userid, password, or token are properties of users. Users have to do with credentials related to authentication related to software.

  • An agent that is an organization shouldn't have user credentials. It is better for only people to have user credentials, and for people to have permissions to do things for organizations; not for organizations to be able to log in as themselves.

  • The technology options for user authentication change over time, and will continuing to do so. There are decentralized options on the horizon, such as Solid, ssb, others. So even if we now assume single signon, the way user authentication is done can change over time. Agents can have more than one set of credentials for at least this reason.

JW

Jim Whitescarver Mon 30 Apr 2018

DigLife is starting on Self-Sovereign User Agent Tech Stack Architectures. This is taking the more decentralized approach with personal and group GraphQL. Graphene might be the django connection to what you are doing @lynnfoster . What do you think?

LF

Lynn Foster Mon 30 Apr 2018

Thanks much, very interesting! I'll study it in detail, a skim told me I need to spend some quality time with the document to understand where you all are going. :) And great name, "self-sovereign", btw.

Small note: The code I plan on stealing for the Agent Unifier already has a graphql api (which I mostly wrote, and which uses ValueFlows vocabulary for the most part). So yep, graphene is the django connection there, and I am somewhat familiar.

Another note of possible interest: http://www.hypergraphql.com/ was brought up by one of the FairCoop guys. I'm hoping it might be the best of both worlds of graphql and linked open data, but haven't gotten deep into it yet.

BH

Bob Haugen Wed 2 May 2018

I'm studying that doc and all its connections. I agree with Lynn and Luandro, very interesting, and a lot of overlaps.
@jimwhitescarver I got one minor question for now: I see this comment from Philip Sheldrake

8:30 AM Apr 20
One language-centric approach may have advantages over another language-centric approach, but all language-centric approaches share the disadvantage of being language-centric. I'm investing most of my time at the moment exploring the application of an isomorphic, generic model-centric approach sans any other centrisms.

Language gets used in way too many different ways in these conversations, but I am wondering if Philip would be interested in a common vocabulary, which is halfways between (needs to be based on) a common model but also fits neatly into graphql, as Lynn is doing with some of the FairCoop gang right now.

I hesitate to break into your document stream to respond some comment 2 weeks ago, from somebody I don't know, who doesn't know me. But what do you think? I don't see any evidence of shared vocabulary in those documents. Not relevant? Not developed enuf yet? Or might fit in nicely?

[edit] Thinking more about Philip's comment, I think a good model will be useful, too. We're talking more to people who like these microservice meshes, which have something like a router as middleware (e.g. Mulesoft) which is nice and either open-source or freemium, but in order to design the routing, I think you will be duplicating a lot of work that could be derived maybe even automatically from a model plus a vocabulary derived from the model plus common protocols. So the middleware routing design will not be DRY (Don't Repeat Yourself) and thus trouble.

LF

Lynn Foster Wed 2 May 2018

@jimwhitescarver I have read it all more closely now, and understand some of it (but not nearly enough, I don't have enough tech experience). I'm trying to figure out if I can use your stack to leap directly into the more decentralized agent-centric paradigm, and skip my stop-gap measure.

If I install this https://github.com/DigitalLifeCollective/basecamp - is that a good place to start? (I am on ununtu, I can't quite tell if the instructions are for ubuntu on windows, or if they would just work for ubuntu.)

Or, better, I would love to understand where the process is at for the team(s), and what is ready and what is not ready, and what would be the architectural implications of going in that direction. The 2 groups I am working with at the moment (FairCoop and Mutual Aid Network) both already have more than one platform app that will not be replaced for a long time and need to be made interoperable. They also are both interested in a personal dashboard type of interface to tie things together. Thanks!