From 3c1b8fd044be73c3c860ce68a19977b985688e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Mon, 23 Jan 2023 22:48:44 +0100 Subject: [PATCH] doc: add a feature matrix --- README.md | 51 ++++++++--------- doc/architecture.md | 4 +- doc/feature_matrix.md | 124 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+), 31 deletions(-) create mode 100644 doc/feature_matrix.md diff --git a/README.md b/README.md index 889346c6..e9790bc5 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,6 @@ - **integrates with your tooling**: use the UI you like (CLI, terminal, web) or integrate with your existing tools through the CLI or the GraphQL API - **bridges to other bug trackers**: use [bridges](#bridges) to import and export to other trackers. -:construction: This is now more than a proof of concept, but still not fully stable. Expect dragons and unfinished business. :construction: - ## Help needed! This project has grown bigger than I can handle by myself, especially with a day job. I'm looking for people to help on or maintain part of it: @@ -182,7 +180,7 @@ An interactive terminal UI is available using the command `git bug termui` to br ![Termui recording](misc/termui_recording.gif) -## Web UI (status: WIP) +## Web UI You can launch a rich Web UI with `git bug webui`. @@ -200,34 +198,28 @@ The web UI interact with the backend through a GraphQL API. The schema is availa ## Bridges +✅: working 🟠: partial implementation ❌: not working + ### Importer implementations -| | Github | Gitlab | Jira | Launchpad | -|-------------------------------------------------|:------------------:|:------------------:|:------------------:|:------------------:| -| **incremental**
(can import more than once) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| **with resume**
(download only new data) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| **identities** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| identities update | :x: | :x: | :x: | :x: | -| **bug** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| comments | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| comment editions | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | -| labels | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| status | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| title edition | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| **media/files** | :x: | :x: | :x: | :x: | -| **automated test suite** | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | +| | Github | Gitlab | Jira | Launchpad | +|-------------------------------------------------|:------:|:------:|:----:|:---------:| +| **incremental**
(can import more than once) | ✅ | ✅ | ✅ | ❌ | +| **with resume**
(download only new data) | ✅ | ✅ | ✅ | ❌ | +| **identities** | 🟠 | 🟠 | 🟠 | 🟠 | +| **bugs** | ✅ | ✅ | ✅ | 🟠 | +| **board** | ❌ | ❌ | ❌ | ❌ | +| **media/files** | ❌ | ❌ | ❌ | ❌ | +| **automated test suite** | ✅ | ✅ | ❌ | ❌ | ### Exporter implementations -| | Github | Gitlab | Jira | Launchpad | -|--------------------------|:------------------:|:------------------:|:------------------:|:---------:| -| **bug** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| comments | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| comment editions | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| labels | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| status | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| title edition | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| **automated test suite** | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | +| | Github | Gitlab | Jira | Launchpad | +|--------------------------|:------:|:------:|:----:|:---------:| +| **identities** | 🟠 | 🟠 | 🟠 | 🟠 | +| **bug** | ✅ | ✅ | ✅ | ❌ | +| **board** | ❌ | ❌ | ❌ | ❌ | +| **automated test suite** | ✅ | ✅ | ❌ | ❌ | #### Bridge usage @@ -281,14 +273,15 @@ See also all the [docs](doc). ## Planned features -- media embedding -- more bridges +The [feature matrix](doc/feature_matrix.md) gives a good overview of what is planned, without being exhaustive. + +Additional planned feature: - webUI that can be used as a public portal to accept user's input - inflatable raptor ## Contribute -PRs accepted. Drop by the [Gitter lobby](https://gitter.im/the-git-bug/Lobby) for a chat or browse the issues to see what is worked on or discussed. +PRs accepted. Drop by the [Gitter lobby](https://gitter.im/the-git-bug/Lobby) or the [Matrix room](https://matrix.to/#/#the-git-bug_Lobby:gitter.im) for a chat, look at the [feature matrix](doc/feature_matrix.md) or browse the issues to see what is worked on or discussed. ```shell git clone git@github.com:MichaelMure/git-bug.git diff --git a/doc/architecture.md b/doc/architecture.md index 5f81462b..395886ea 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -88,7 +88,7 @@ The package `termui` contains the interactive terminal user interface, implement ## graphql -The package `graphql` implement the GraphQL API, mapping the data model and providing read/write access from outside of the process. This API is in particular used by the webUI but could be used to implement other user interfaces or bridges with other systems. +The package `graphql` implement the GraphQL API, mapping the data model and providing read/write access from outside the process. This API is in particular used by the webUI but could be used to implement other user interfaces or bridges with other systems. ## webui @@ -96,7 +96,7 @@ The package `webui` hold the web based user interface, implemented in both go an The javascript code is compiled and packaged inside the go binary, allowing for a single file distribution of git-bug. -When the webUI is started from the CLI command, a localhost HTTP server is started to serve the webUI resources (html, js, css), as well as the GraphQL API. When the webUI is loaded in the browser, it interact with the git-bug process through the GraphQL API to load and edit bugs. +When the webUI is started from the CLI command, a localhost HTTP server is started to serve the webUI resources (html, js, css), as well as the GraphQL API. When the webUI is loaded in the browser, it interacts with the git-bug process through the GraphQL API to load and edit bugs. ## bridge diff --git a/doc/feature_matrix.md b/doc/feature_matrix.md new file mode 100644 index 00000000..91abfba2 --- /dev/null +++ b/doc/feature_matrix.md @@ -0,0 +1,124 @@ +# User facing capabilities + +This document tries to give an overview of what is currently supported, and by extension where effort can be focused to bring feature completion and parity. + +As git-bug is a free software project, accept and rely on contributor, those feature matrices kinda define a roadmap, in the sense than anything mentioned below is a planned feature and can be worked on. This does not mean that a feature not mentioned here should not be considered, just maybe check the issue tracker and come talk about it. + +This document however does not show all the untold work required to support those user-facing capabilities. There has been a ton of work behind the scene and more will be required over time. + +✅: working 🟠: partial implementation ❌: not working + +## Entities + +The most high level overview of what kind of entities are supported and where. + +| | Core | CLI | TermUI | WebUI | +|--------------|:----:|:---:|:------:|:-----:| +| Identities | ✅ | ✅ | ✅ | ✅ | +| Bug | ✅ | ✅ | ✅ | ✅ | +| Board | 🟠 | 🟠 | ❌ | ❌ | +| Pull-request | ❌ | ❌ | ❌ | ❌ | + +More specific features across the board. + +| | Core | CLI | TermUI | WebUI | +|--------------------|:----:|:---:|:------:|:-----:| +| Media embedding | 🟠 | ❌ | ❌ | ❌ | +| Fast indexing | ✅ | ✅ | ✅ | ✅ | +| Markdown rendering | N/A | ❌ | ❌ | ✅ | + +#### Identities + +| | Core | CLI | TermUI | WebUI | +|-------------------------|:----:|:---:|:------:|:-----:| +| Public keys | 🟠 | ❌ | ❌ | ❌ | +| Private keys management | 🟠 | ❌ | ❌ | ❌ | +| Identity edition | ✅ | ✅ | ❌ | ❌ | +| Identity adoption | ✅ | ✅ | ❌ | ❌ | +| Identity protection | 🟠 | ❌ | ❌ | ❌ | + +#### Bugs + +| | Core | CLI | TermUI | WebUI | +|-------------------|:----:|:---:|:------:|:-----:| +| Comments | ✅ | ✅ | ✅ | ✅ | +| Comments edition | ✅ | ✅ | ✅ | ✅ | +| Comments deletion | ✅ | ❌ | ❌ | ❌ | +| Labels | ✅ | ✅ | ✅ | ✅ | +| Status | ✅ | ✅ | ✅ | ✅ | +| Title edition | ✅ | ✅ | ✅ | ✅ | +| Assignee | ❌ | ❌ | ❌ | ❌ | +| Milestone | ❌ | ❌ | ❌ | ❌ | + + +## Bridges + +### Importers + +General capabilities of importers: + +| | Github | Gitlab | Jira | Launchpad | +|-------------------------------------------------|:------:|:------:|:----:|:---------:| +| **incremental**
(can import more than once) | ✅ | ✅ | ✅ | ❌ | +| **with resume**
(download only new data) | ✅ | ✅ | ✅ | ❌ | +| **media/files** | ❌ | ❌ | ❌ | ❌ | +| **automated test suite** | ✅ | ✅ | ❌ | ❌ | + +Identity support: + +| | Github | Gitlab | Jira | Launchpad | +|-------------------|:------:|:------:|:----:|:---------:| +| **identities** | ✅ | ✅ | ✅ | ✅ | +| identities update | ❌ | ❌ | ❌ | ❌ | +| public keys | ❌ | ❌ | ❌ | ❌ | + +Bug support: + +| | Github | Gitlab | Jira | Launchpad | +|------------------|:------:|:------:|:----:|:---------:| +| **bug** | ✅ | ✅ | ✅ | ✅ | +| comments | ✅ | ✅ | ✅ | ✅ | +| comment editions | ✅ | ❌ | ✅ | ❌ | +| labels | ✅ | ✅ | ✅ | ❌ | +| status | ✅ | ✅ | ✅ | ❌ | +| title edition | ✅ | ✅ | ✅ | ❌ | +| Assignee | ❌ | ❌ | ❌ | ❌ | +| Milestone | ❌ | ❌ | ❌ | ❌ | + +Board support: + +| | Github | Gitlab | Jira | Launchpad | +|-----------|:------:|:------:|:----:|:---------:| +| **board** | ❌ | ❌ | ❌ | ❌ | + +### Exporters + +**General capabilities of exporters**: + +| | Github | Gitlab | Jira | +|-------------------------------------------------|:------:|:------:|:----:| +| **incremental**
(can export more than once) | ✅ | ✅ | ✅ | +| **with resume**
(upload only new data) | ✅ | ✅ | ✅ | +| **automated test suite** | ✅ | ✅ | ❌ | + +**Identity support**: + +| | Github | Gitlab | Jira | +|-------------------|:------:|:------:|:----:| +| **identities** | ✅ | ✅ | ✅ | +| identities update | ❌ | ❌ | ❌ | + +Note: as the target bug tracker require accounts and credentials, there is only so much that an exporter can do about identities. A bridge should be able to load and use credentials for multiple remote account, but when they are not available, the corresponding changes can't be replicated. + +**Bug support**: + +| | Github | Gitlab | Jira | +|------------------|:------:|:------:|:----:| +| **bugs** | ✅ | ✅ | ✅ | +| comments | ✅ | ✅ | ✅ | +| comment editions | ✅ | ✅ | ✅ | +| labels | ✅ | ✅ | ✅ | +| status | ✅ | ✅ | ✅ | +| title edition | ✅ | ✅ | ✅ | +| Assignee | ❌ | ❌ | ❌ | +| Milestone | ❌ | ❌ | ❌ |