finos / FDC3-Sail

Open implementation of the FDC3 standard using Electron and an integrated App Directory.
Apache License 2.0
34 stars 26 forks source link

Refactoring / Multiple Sub-Projects #55

Open robmoffat opened 2 years ago

robmoffat commented 2 years ago

@sebbenmbarek and I were chatting today about how to factor-out Electron FDC3. We're thinking along the lines of:

FDC3 Bus

Skeleton App

UI / Window Management

Electron

SaaS?

App Directory

Ideally, all of these should be sub-modules in the repo.

Developer Experience

  1. Play With FDC3.
    • Download, run, build locally with some example apps.
  2. Developer tools built-in
    • FDC3 workbench goes in this direction
    • A middleware logger layer that shows you exactly how things are being processed / work
  3. Wrap an existing app
    • Say GMaiil (?). Point to url, run in the container
    • Point to an existing url and run it in a container
    • Create an FDC3 AppD record from a URL
    • I want to add some stuff to the app directory to try out some arrangement of apps.
    • "I already have this running on X, but I want to try this in Electron FDC3"
  4. Build a new app4.
    • We need some examples to hack on. e.g. Nicks existing apps
  5. Use one layer in your own app
    • E.g. symphony (for example ) using this OSS FDC3 bus implementation)

Demo

What do we want to achieve in NYC? We've seen lots of demos where we have interop between two or more different apps. What's the "next level"?

The story could be the Dev UX?

nkolba commented 2 years ago

@robmoffat ++ need for more dev tooling including example/hackable apps and things like visualization of the interop state (the bus)

Re: splitting out logic into FDC3 and "Electron" (what we might call runtime). This is a big undertaking. Current refactoring prepares the stage for more of a split, but to get there we'd need to define (and then implement and maintain) a full API for the runtime layer that the FDC3 layer would use exclusively to interact with anything specific to Electron. This would include windowing, IPC messaging, and anything specific to the "runtime" environment of the project (i.e. tabs in the windows, the search UI feature, etc). High level steps to get there are going to be:

robmoffat commented 2 years ago

Re: splitting out logic into FDC3 and "Electron" (what we might call runtime). This is a big undertaking.

Yeah, I've been looking at the code again today and I agree. A lot of effort rn, given the amount of time we have.. we could pick that up later?