-
Notifications
You must be signed in to change notification settings - Fork 920
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tool Compatibility Matrix #1091
Comments
I would fully support this idea, it is also a good touch point for those who have added tools and have not touched it again in a while, as the landscape changes vastly every few months - and some tools can become stale if not actively maintained (and an added incentive to keep tools up to date on dev portal for representation) |
Thank you Santiago for taking the time to put this feature request together. |
After discussion with @wolf31o2, we have the suggestion to remove the
Regarding |
I think @MarvinBertin and @wolf31o2 is right in that we would very soon see stale data regarding some tools here. Anyone that actually depend on a specific tool probably would imo. be better of relying on github (or whatever other system used by that tool) for release notifications rather than a statically built site which could be possibly a month behind at all times. Also, I think if this is implemented, sooner or later people would come to expect dev-portal maintainers to keep these release versions up to date for all tools, which just seems unfair to me. This would partly be solved by the suggestion of having a way to programatically fetch release info from github, but that also relies on tools using github and not bitbucket, gitlab, etc., or even worse: closed source on some random website. |
Nice proposal. Some thoughts:
|
Shouldn't it be more like (Hardfork) era, block- and network-protocol numbers and specifications? |
Agreed. The node itself isn't a target for many of us. Libraries such as gOuroboros and Pallas target protocol versions or hard fork functionality. Nodes don't advertise their node version during communication. They advertise their various protocol versions. |
Hi Maintainers!
This issue describes a feature request to augment the available information for the tools section of the Developer Portal. I present this proposal in representation of the Cardano Blockchain Infrastructure Alliance (CBIA). The implementation details are far from being defined. Feedback from maintainers and other members of the CBIA would be greatly appreciated.
Context
The Cardano tool ecosystem is rich and heterogeneous. These are good qualities, but developers face many challenges when trying to orchestrate these tools together to fulfill a particular use-case / application. One of the main challenges is understanding compatibility between the different components.
The Cardano Developer Portal provides a rich index of the tools in the ecosystem. Seasoned Cardano developers rely on this information for updates and new developers use it as reference for their onboarding process.
The motivation behind this initiative is to build on top of the existing work by providing a new dimension of the data listing that focuses on interdependencies, compatibility between tools and compatibility against Cardano protocol features. This data can be used to provide new visualization to support the development process of complex applications.
Schema Changes
Currently, each tool is represented as a JSON object with properties such as "title", "description", "preview", "website", etc. I propose adding a new property named
releases
to the payload of each tool. This new property will contain an array of objects, where each object holds a description of a released version.Here's how the enriched JSON payload for the "cardanocli-js" tool could look like:
Each
release
object contains the following properties:version
: an opaque string representing the version of the releasedependencies
: an array of required components / toolstraits
: an array of pre-defined tags representing capabilitieslatest
: a boolean, when true, it identifies this release as the latestAbout Dependencies
The goal of the
dependencies
array is to provide pointers to other tools available in the same dataset (same JSON). If a tool version doesn't depend on any others, it will be represented as an empty array. The string value of each element in the array should match thetitle
value of the corresponding tool.These values are NOT meant to become a strict dependency graph as we can find in full-blown package management systems (eg: npm's
package.json
), but rather an informational field that provides a way to render dependency links on the web based visualization of the portal.Example:
About Traits
The goal of
traits
array is to provide indication of broad capabilities that the component supports. In the context of this proposal, traits should be restricted to big-picture concepts of the Cardano protocol, such as hard-forks, eras, CIPs or Plutus versions. If a tool version doesn't have any traits, it will be represented as an empty array.The list of traits should be predetermined by the maintainers of the portal. Tool developers should conform to the list of well-known traits when adding or updating the metadata for their tool within the context of the portal.
Example:
I rely on feedback and support from CBIA members and maintainers of the portal to compose the initial list of traits.
Visualization Ideas
This proposal doesn't provide any particular visualization of the data, I consider that before reaching that stage we should first gather some data. Nevertheless, here are some ideas to be taken into account for when / if we reach that stage of the project:
Dependency Graph: We could create a visual diagram showing the dependencies between the tools' versions. Each tool version can be a node, and each dependency can be an arrow or a line connecting two nodes. The graph can be interactive to allow developers to better understand the connections between different tool versions.
Trait Matrix: We could implement a matrix in which one axis represents the tools and the other represents the traits. Each cell in the matrix shows the oldest version of the tool that supports the corresponding trait. This feature will enable users to quickly find tool versions that have the traits they need. The matrix could be represented as a table in this way:
Proposed Roadmap
Your input and feedback on this proposal are highly appreciated.
The text was updated successfully, but these errors were encountered: