JanssenProject / JanssenProject/jans

task(agama): implementation design

Open
#11,373 0 comments 0 reactions 1 assignee Claimed by @jgomer2001 View on GitHub
comp-agama
Dominant language
Java
Stars
648
Forks
174
Avg merge
1d 18h
Merged PRs (30d)
110

Description

Here is the original design proposal (WIP) by @jgomer2001 .

--------------------
Implementation design
--------------------

To solve this, we could make a few changes to the archive and metadata.

### `.gama` structure

```
├── code/
├── lib/
├── web/
├── gluufederation/agama-openid/ <--- github_id and project to avoid collissions
├── project.json
├── LICENSE
└── README.md
```

### `projects.json` metadata

```
{
"projectName": "A unique name that will be associated to this project",
"author": "A user handle that identifies you",
"description": "Other relevant data can go here",
"type": "",
"configs": {
"com.foods.sweet": {
"prop1": "secret",
"prop2": [1, 2, 3]
}
},
"noDirectLaunch": [ "test" ]
"parent_project": {
"GluuFederation/agama-pw": {"version": "1.9.42", "include_in_gama": True},
"GluuFederation/agama-openid": {"version": "3.3.2", "include_in_gama": False}
}
}
```

### Impacts / questions

* .gama
1. Add parent folder to `web` (github-id/repo)

* Agama Lab
1. Notifications about dependency version updates
1. Present an option to bundle certain projects in the `.gama`
1. Show links to dependency docs of available published projects--for example, smart drop down selector for Trigger to available flows (including depenencies)
1. Perhaps we can optionally show the parent project assets--but they are greyed out and **read only**. There could be a project checkbox to show imported assets...

* Publication Process
1. Impacts to project publication process? For example, we should perhaps not allow derivative projects in Agama Lab... `parent_project` must be null.

### More questions

Things to consider before undertaking implementation:

1. how will TUI display deployments now? when uploading an archive with several imported projects, several rows will appear, ie. one per project?
1. if so, how will removal work now? eg. if a project is removed, their dependencies too?
1. what if someone deploys a new version of a project but the currently deployed version is a dependency of another existing project? (project versioning is not supported because there cannot be several versions of the same Java class simultaneously)
1. While agama-lab will show a sort of "merged" view for code and lib directories, will the generated archive contain the archives of the corresponding dependencies instead? ie. dependencies not "exploded" ?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.