Skip to content
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

Management for custom node collections #5087

Open
joepavitt opened this issue Feb 7, 2025 · 2 comments
Open

Management for custom node collections #5087

joepavitt opened this issue Feb 7, 2025 · 2 comments
Labels
epic A significant feature or piece of work that doesn't easily fit into a single release headline Something to highlight in the release
Milestone

Comments

@joepavitt
Copy link
Contributor

joepavitt commented Feb 7, 2025

Also covers areas: Version Control & Centralized Management

Background

We've heard from many customers that it is common to build custom nodes for their specific use cases. These custom nodes generally come in two forms:

  • Subflows: User can select a flow within the Node-RED editor and create a "subflow", which becomes a re-usable asset in that particular editor. The user can then save this to the Team Library in FlowFuse, and import it to other Instances within FlowFuse too.
  • Custom nodes: A developer has coded a custom Node-RED node and published it either to the public NPM registry, or to a private NPM registry made available only to the respective team/business.

Current Offerings

Team Library

FlowFuse offers the Team Library as a centralised repository for common flow.json samples or .js function nodes that can be imported to any Instances in the team.

Pain Points:

  • Updating a flow.json or .js file is a manual process, users must manually re-import and replace each instance of any imported contents from the Team Library.
  • There is no concept of version control here, once a file is overriden, the previous iterations are lost.

Private NPM Registry

In FlowFuse it is possible to configure external, private NPM registries. This makes any present Node-RED nodes in that registry available in the Palette Manager

Pain Points

  • User needs to setup, host and configure their own third-party npm registry
  • Requires users to develop/code their own nodes. This is not a solution that covers subflows.

Proposal

  • We have version control built in via the palette manager, where used can update to the latest version for a given node.
  • Subflows are essentially a single node, but just configured via a flow.json, rather than a repository with an html, js file, etc.
  • Can we build in tooling that permits users to publish subflows to a private NPM repository?
  • Can we host a private NPM repository (per team, or per platform?) to make the onboarding easier and prevent the need for customers to configure and host their own.

Customers

Which customers would this be available to

Team/Enterprise

Which customers have requested this?

@joepavitt joepavitt added the epic A significant feature or piece of work that doesn't easily fit into a single release label Feb 7, 2025
@joepavitt
Copy link
Contributor Author

joepavitt commented Feb 7, 2025

Relevant issue: #3666
Relevant issue: #3734

@joepavitt joepavitt added the headline Something to highlight in the release label Feb 10, 2025
@joepavitt joepavitt added this to the 2.15 milestone Feb 10, 2025
@joepavitt joepavitt moved this to Todo in 🛠 Development Feb 10, 2025
@joepavitt joepavitt moved this from Todo to In Design in 🛠 Development Feb 10, 2025
@joepavitt joepavitt moved this from Next to Scheduled in ☁️ Product Planning Feb 14, 2025
@joepavitt
Copy link
Contributor Author

joepavitt commented Feb 14, 2025

Notes from brainstorming session:

Can we host a private NPM repository (per team, or per platform?) to make the onboarding easier and prevent the need for customers to configure and host their own.

@hardillb - there are open source containers for the registry, but not sure we can do this with a single registry to provide to multiple teams. - https://verdaccio.org/

  • Key here is that we need compartmentalising the registries/collections.
  • Ideally, we just run one, but scope the projects to teams - far less maintenance.
  • Needs technical exploration on the "what is possible?"
  • @hardillb - I don't like the idea of running registry per team.
  • It's going t cost us a lot to run this, as it's new containers
  • How do users publish to this?
    • Joe: I'd be expecting this was an npm publish
    • Scoping @teamId/package-name
  • registry.flowfuse.com vs. registry.team.flowfuse.com complexity/overhead of management too
  • @knolleary can this be an opt-in feature? Especially in case whereby the registries needs to be per team to save costs

Actions

  • PoC on authentication/access control over NPM registry, verify if a single registry is possible, and what constraints exist

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic A significant feature or piece of work that doesn't easily fit into a single release headline Something to highlight in the release
Projects
Status: Scheduled
Status: In Design
Development

No branches or pull requests

1 participant