FDC3 icon indicating copy to clipboard operation
FDC3 copied to clipboard

Create an AppD reference implementation

Open kriswest opened this issue 3 years ago • 14 comments

Enhancement Request

It is advisable that any standard provide a reference implementation that may be used to confirm or compare the expected behavior of an implementation of the standard and/or be used as a base for other implementations. The AppD is one such standard and it is likely that the provision of a usable reference implementation will help drive its uptake throughout the financial services desktop software community.

In the past, a java implementation of the AppD was provided at: https://github.com/FDC3/appd-poc. This is not currently maintained, nor included in the FDC3 repository. Reviving this implementation, or providing a new one (ideally based on Node.js) is desirable.

Use Case:

  • Reference implementations may be used:
    • directly, saving a firm from implementing their own AppD
    • as a starting point by firm implementing their own AppD
    • as an example of expected behavior from AppD.

kriswest avatar Jan 24 '22 11:01 kriswest

Hi @kriswest ,

I am working on the reference implementation for the App directory in Java and spring boot . I had a query regarding the user channels.

  • Do we need the user channels to be persisted to App directory corresponding to the user .
  • Also , in the documentation here , it was mentioned that an application can be joined to a single user channel . Hence I was not able to understand , what should be the value for the user channel field in the application json response , as it could be different for different user.

amanjmd avatar Nov 10 '24 14:11 amanjmd

Hi @amanjmd user channels are joined at runtime via the Desktop Agent API. The role of the app directory is simply to describe an app's capability of using those channels at runtime, providing details on what context types they'd listen for and broadcast in theinterop.userChannels.listensFor and interop.userChannels.broadcasts elements. At present this information is purely to inform users and developers, however, it could also be useful for an AI to understand app capabilities or for a desktop agent or app directory UI to propose apps that interoperate with other specified apps.

Regarding persistence of selected user channels, this is often a feature of desktop agents when saving a workspace or layout - that's a feature not covered by the fdc3 standard but common in implementations. You wouldn't save the selection to the app directory but to some other store for layouts that includes instances of apps from the directory.

kriswest avatar Nov 11 '24 09:11 kriswest

hi @kriswest ,

Where in the repo , we will be keeping the reference implementation , considering implementation can be in multiple languages

amanjmd avatar Nov 12 '24 17:11 amanjmd

@amanjmd during the hackathon kickoff we recommended that implementations are first created in their own respository and submitted as part of the hackathon - I'd recommend doing that whether you are contributing as part of the hackathon or independently. The FDC3 project may then move to adopt one or more implementations as reference implementations, perhaps moving them into the FDC3 repo's /toolbox directory or otherwise linking to them in their own repositories.

There is another huge PR in flight at the moment that refactors the structure FDC3 respository which we need to complete before adopting anything - @robmoffat and others are working on that as we speak.

kriswest avatar Nov 12 '24 17:11 kriswest

hi @kriswest

Sure . I totally understand on the workload this hackathon would have put on .

As suggested , I have done the implementation here

Let me know in case any thing else is required to be added ,or in case my understanding is not aligned with required implementation . Will do the required modifications.

amanjmd avatar Nov 13 '24 13:11 amanjmd

Hi @kriswest

We have created a generic solution for appD. This NodeJs app attempts to give the core functionalities of authentication, authorization, app definition storage, app search and metadata access/update per the definitions of FDC3 enabled applications. To improve the ease of usage, a dashboard has been created to allow users to approve subscription requests to appD, view and edit application details adhering to rhe FDC3 standards. This serves as a management center for AppD.

Our attempt has been to focus on extensibility so that organizations don't need to create a fresh implementation for consumption but can be ready for consumption in a very quick time and add custom features as required with decentralized design.

Reference to our entry through the discussion-> https://github.com/finos/community/discussions/331#discussioncomment-11272018

More details can be found at our implementation: https://github.com/kushagraGit/finos_hackathon_citi_vikings

This is part of the #FINOS-Citi Hackathon. Our team members are: https://github.com/kushagraGit https://github.com/Yousuf-Ejaz https://github.com/ThatNinjaGuy

Our original entry was through the discussion but putting it as well for completeness.

ThatNinjaGuy avatar Nov 16 '24 01:11 ThatNinjaGuy

HI @kriswest

Please let me know , how to initiate the merge process for the reference java Implementation.

amanjmd avatar Dec 11 '24 16:12 amanjmd

Hi @amanjmd apologies for any delay here, @robmoffat and I have both had our heads in a big refactor of the FDC3 repository and implementation of FDC3 for Web Browsers in 2.2. I'll connect with @robmoffat and others in the @finos/fdc3-desktop-agent-maintainers team to take a look next week and get back to you with instructions on where to target a PR + any feedback.

kriswest avatar Dec 13 '24 16:12 kriswest

Hi @kriswest . Sure thanks for the update . Let me know in case any further details are required from our side .

amanjmd avatar Dec 24 '24 05:12 amanjmd

Hi @kriswest .... let me know if we could proceed to merge the reference implementation .

amanjmd avatar Jun 16 '25 17:06 amanjmd

Hi @amanjmd ,

This seems like an excellent time to bring this back up - the FDC3 monorepo structure is now in place.

Ideally, we should add your reference implementation somewhere like:

toolbox/fdc3-appd-reference-impl

... or something like that. Do you want to make a start on it?

robmoffat avatar Jun 18 '25 08:06 robmoffat

Agreed, this would be a good time to get this done. There are at least two implementations to consider, based on different technologies. I believe @amanjmd's implementation is based on Java and SpringBoot, while there is a second at https://github.com/kushagraGit/finos_hackathon_citi_vikings from @ThatNinjaGuy @kushagraGit and @Yousuf-Ejaz thats based on node.js.

How about using the paths: /toolbox/fdc3-appd-java and /toolbox/fdc3-appd-node ?

If you can raise the PRs, we can get them reviewed.

kriswest avatar Jun 18 '25 09:06 kriswest

Sure @robmoffat , I can add my implementation source to these paths and will raise a PR .

amanjmd avatar Jun 18 '25 21:06 amanjmd

Hi @kriswest The below PR is raised for the merge. PR

amanjmd avatar Jun 23 '25 17:06 amanjmd