Proposal for a Deluge companian tool platform #495
Replies: 5 comments 16 replies
-
For deluge interaction, what about rust+wasm? I've been looking for a reason to try it for a while |
Beta Was this translation helpful? Give feedback.
-
I would strongly recommend we implement a build step - it can be annoying but similar to the reasons we have automatic build and test checks for the main firmware, having some amount of automatic QA on the site and JS library is invaluable. A build step also lets us use typescript which is IMO a significant upgrade from Javascript (slightly fewer weird behaviors, more warnings when you're about to blow your feet off). |
Beta Was this translation helpful? Give feedback.
-
From a user perspective the following would be good and some of these points are already possible with existing 3rd party apps like deluge commander and the like:
|
Beta Was this translation helpful? Give feedback.
-
I like this line of thinking quite a lot. Happy to also help in some capacity. A few notes based on working with https://github.com/MrHaila/delugr
I don't see that the core requirements really depend on any server state or storage, but the complexity of managing user accounts in a GDPR-compliant way and working with a full-stack project roughly doubles the scope of the proposal, no joke. the technologies are not hard, but the sheer amount of work and UX consideration goes up by a lot. My counter-proposal is to treat the Deluge as the backing store and the USB interface as the API. Other non-deluge-dynamic-things, such as available binaries, could be directly pulled from the public APIs like this Github repo. Local song storage, backups and sample libraries (= file management) would also neatly happen on the user's local machine. Device logs and such could also either be stored as files or simply in the browser's own offline store which is quite good for this stuff. As an upside, the project could then become an amazingly portable single-page-app that works equally well locally vs hosted from the web.
It might make the most sense to have a WebMidi TS module published to NPM with it's own set of CI/CD automation to keep the core working and then consume that in another web project. This would, at the same time, facilitate the community making their own spinoff projects (CLI tools, apps, ...) based on the same core implementation. TS is an obvious choice for providing type-safe apis nowadays.
PrimeVue looks cool, but the most important aspect of it is the Tailwind CSS compatibility: https://primevue.org/tailwind This mostly means that, for the price of initial setup complexity, it will be possible to productively make completely new stuff that looks and feels the same as existing stuff. My argument is that making a very information-dense UI means taking opinions about how the data is laid out, and and that point, it makes all the difference to have the right tool for the job. I've gone through a bit of this pain with the Delugr song and sample lists, where it's critical to have fine-grained control over the layout components. So the ideal mix here is something like 90% UI lib and 10% hand-crafted components for where it makes all the difference.
A good-quality implementation from someone else is probably better than whatever you wrote, for reasons that will become apparent in a year. All code has bugs, and it's a good idea to use code that's gone through the ringer and back already (lodash, vueuse, Luxon, etc.)... ...but everyone hates updating dependencies and managing version conflicts. It's a better idea to just not implement complex things unless it's a core requirement. Regardless of whether it pulls a dependency or not. Tree-shaking helps with this problem a lot as having dependencies available during editor time doesn't mean they end up bloating the build. Hopefully, there's something there that helps 🙂 |
Beta Was this translation helpful? Give feedback.
-
There are two ends to this where standardizing is very important. On the backend, it is the schema of the databases that will be used to store presets, samples, profiles, and the like. On the frontend, it is the SysEx / USB protocols and particularly the API used to address the Deluge's internal capability. Everything in the middle will vary widely. It does make sense to avoid gratuitous complication. The key issue is the Deluge-side implementation as it not only has to be useful and sensible, but it must also be minimal, since we don't have much extra space and time to devote to it, considering how highly-tuned the Deluge has always been. |
Beta Was this translation helpful? Give feedback.
-
In order to give users a good out of the box experience and at the same time giving tool developers a toolbox that makes it easy to add features I propose an application platform to interact with the Deluge that can be developed as a joint effort by the community.
Requirements
Proposal
My proposal is to base the platform on web technology as that can be adapted to a lot of situations and works out of the box on most. I have looked at a lot of the currently available solutions and have built similar applications in the past so I'm very confident this will work well.
Implementation
I have made this proposal because I think an application like this will be good for the project and I have chosen the technologies I think are easy to approach, modern and a good fit to our requirements.
I am willing to put in the effort and work on the application and platform as long there is broad support for this proposal by people wanting to work on tooling and there won't be a major rewrite to change the technology a few months in. If the majority of the community wants to go into another direction I am happy to drop this plan and participate in something else.
7 votes ·
Beta Was this translation helpful? Give feedback.
All reactions