The spawn-net taught us the importance of providing a seamless experience to end users for managing nodes running Marlin applications. With this in mind, we had released marlinctl. It solved a variety of issues related to node management by providing quick onboarding, logical groups and a fully discoverable command tree among other things.
However, marlinctl fell short of several desirable capabilities. Some feedback we received included:
- Support for runtimes other than supervisor - such as support for systemd
- Support for multiple instances of the same application to run on the same machine with different configurations
- Support for platforms other than linux-amd64
- Ability to freeze a version of application for production use so it does not update automatically
- Integrity verification for binaries so one can be assured that binaries are compiled by the Marlin team
- Ability to specify update policies for applications so that programs don't get updated with breaking changes
- Better log and debugging for running application
- Unstable channel support for people who would like to test release candidates and support releases before public release.
Separately, a strong release pipeline is also important to streamline development and deployments:
- Ability to play well with semantic versioning
- Ability to play well with release channels - public, beta, alpha and dev channels so that marlinctl is as relevant to a geek as it is to a user with simple use case
- Resource management to keep tabs on how multiple instances are running (IaaC like resources)
- Multiple runners, platforms and runtimes support - so that applications play just as well in MacOS with plists as it does on linux-amd64 with supervisor
All these demanded a complete architectural rework of marlinctl, and we are pleased to share that we have made it work. We introduce marlinctl 2.0.0.
With marlinctl 2.0.0 you can expect all the features of marlinctl plus a few more:
- Future releases for projects to be additive for most part, breaking changes will be minimised
- Advanced users can freeze their versions to a set state
- Logging, versions, multiple release channel subscription, semantic versioning along with integrity checks on binary makes for a more predictable and secure experience
- Support for multiple runtimes, platforms etc
marlinctl2 is ready with a lot up its sleeve. However, we want to make sure we have got all the rough edges cleaned up before we make it available to you. A select well-tested features of marlinctl2 are already available. Support for various other chains, their gateways, relays, configuration management endpoints among other things will be rolled out soon as minor updates and marlinctl2 should automatically update once they are available.
As always, since we might not be able to prioritize something you want, we're always open to community contributions and PRs. And if enough people would find it useful, reach out to us and we might be able to provide dev grants for the same. If you have a suggestion, a feature request or you came across a bug, let us know on our discord channel.
If you have any ideas on how this can evolve, we're all ears!
Follow our official social media channels to get the latest updates as and when they come out!
Twitter | Telegram Announcements | Telegram Chat | Discord | Website