Got an idea for a widget that is broadly useful to the libp2p community and could be published publicly as part of the libp2p Observation Deck? This is the place to come.
As part of the libp2p project, our community guidelines echo those of the libp2p project.
The libp2p Observtion Deck is provides a catalogue of widgets, built on libp2p Observer toolkits. Consult and contribute to libp2p Observer repo instead for anything to do with the following:
- The UI of the libp2p Observeration Deck site, for selecting and browsing widgets, which is built using the libp2p observer Catalogue package.
- The control panel UI used for controlling data, including the timeline and controls such as Export Data, which comes from the libp2p Observer Shell
- The underlying data management model behind widgets in the libp2p Observation Deck, which comes from the libp2p Observer SDK
- The data format and protobuf schema used for the libp2p Introspection data consumed by the libp2p Observation Deck widgets, which comes from the libp2p Observer proto package and follows a schema shared with the libp2p Introspection module.
- Mock data samples included as "Samples" in the libp2p Observation Deck, which come from the libp2p Observer Samples package.
This repository is primarily intended for:
- Discussion and community co-ordination around creating libp2p Observer widgets that could be included in the libp2p Observation Deck
- Reviewing, improving and approving widgets submitted for inclusion in the libp2p Observation Deck catalogue
We recommend the following workflow:
- Research and discussion. Before starting work, it's a good idea to check that your efforts won't be wasted duplicating an existing project or following an unworkable path. We recommend searching existing discussions and, if something similar to your idea isn't already under discussion, posting an issue describing what you intend to do.
- Creating a widget. Use the libp2p Observer create-widget script to get started, following the linked documentation. This sets up a libp2p Observer widget and configures developer tools and environments allowing you to immediately start coding and connect to libp2p Introspection data in a browser.
- Building a widget. Documentation for building the widget is provided on the libp2p Observer repo, particularly, the developer guide and documentation for individual packages.
- Post it to GitHub and NPM. The GitHub repository should be on your own account (or, company account), and it should be published to NPM as a public package.
- (Optional) Post an issue here requesting community feedback. This is a good way to get visibility for your work, early feedback and assistance, and reduce the likelihood of effort being duplicated or wasted.
- When ready, post a PR adding it to the catalogue. The body of the PR should link to your GitHub repository and published NPM package, and the PR should do the following:
- Add your widget as a dependency to this project's
package.json
, as an exact version (e.g.1.2.3
not^1.2.3
) - Edit the file
src/widgets
:- Adding an
import
line for your package (import * as yourWidgetName from 'your-widget-npm-name'
) - Add the widget name as published on NPM to the
widgetPackageNames
array - Add the name of the import to the
export default
array
- Adding an
- Await review. To ensure quality standards and safeguard security when connecting to user's local ports using websockets, all submitted widgets are reviewed by a member of the core project team. This may take some time, so please be patient. In the mean time, we encourage contributors who have developed widgets to actively promote and encourage feedback and contributions to their work from libp2p community members, and to share links to their own personal deployments of their widgets using the libp2p Observer Catalogue.
If all is well, the widget will be included in the libp2p Observation Deck for all libp2p users and contributors to easily discover and use.
There is very little code to this repository beyond build configuration, but if you have a code contribution that is specific to this repository and does not belong on libp2p Observer, issues and PRs are welcome.