Doing it natively was hard enough, and recently I've been rewriting Recut with Rust + Electron so I have an idea of how much work it was to get it working well :sweat-smile: Keep up the good work y'all!
Doing it natively was hard enough, and recently I've been rewriting Recut with Rust + Electron so I have an idea of how much work it was to get it working well :sweat-smile: Keep up the good work y'all!
However, recently I updated my recording setup with a new platform. Now I have separate video tracks for each participant and recut doesn’t handle multiple videos. Will this be supported in the new release?
I’ve heard it said before (I think it was on the Software Social podcast) that whenever you have a choice to support 1 or many of a thing, always err on the side of “many” (users, teams, etc.) Well it turns out that applies to video tracks and clips too! There are massively more things to consider once there’s more than one, haha.
On 1 vs many,I think its totally reasonable to start with 1 given you are a small team. If you force yourself with high standard (which takes lots of extra person-hours), then you lose the key agility compared with other bigger players.
On the Rust/Electron side, all the heavy lifting is done in Rust-land, and so far, it's going pretty well. It's not all roses of course - it takes a bounce or two to start instead of launching instantly, and it seems there's not much to be done about Electron's baseline memory usage or size on disk.
(I went down a crazy rabbit hole of compiling Chromium/Electron to see if there were things that could be stripped out, because I honestly don't need much, but realized that is a very large undertaking. Possibly another day. Some kind of "Electron Lite" would sure be awesome...)
But in general I'm spending an inordinate amount of time paying attention to performance. It was my main concern with the Electron platform. So far I've got playback on par, and stuff like loading files, silence detection, and drawing waveforms is actually faster than the Mac version. It feels snappy.
It would help with both the disk and memory usage, easy to learn after web frameworks (both the framework, Flutter, feels familiar and Dart is super easy to learn), works well with Rust, but of course it has its downsides (no longer can rely on the html js css ecosystem).
IMO this project is already in debt on innovation tokens[0] given I didn't know Rust coming in, nor much at all about video. And then, hybrid web/native stuff is just not very widespread so there's not a lot of existing answers for things. Lots of digging into code and figuring stuff out. The web stack (Svelte, TypeScript) is the one part of this thing that already felt familiar, and I didn't want to throw that out.
0: from Choose Boring Technology :) http://boringtechnology.club/
I looked at a bunch of cross-platform UI toolkits, and everything has its tradeoffs. Qt is probably the most full-featured alternative, and I’ve had experience with it in the past, but I didn’t love the idea of tackling a project this size in C++. On the Rust side, Tauri is very promising but it’s still early days.
Aside from the framework, the other big tradeoff is 1 app vs multiple - more “nativeness” for a much slower feature velocity. The big companies like Slack and Figma don’t even make that trade with millions in funding… and it seemed unwise to take that on as a solo bootstrapped developer.
In terms of stuff like ecosystem, building/packaging, updater support, and even nice little native details like progress bars on app icons, Electron has a lot going for it. The big downsides in my mind are startup time, baseline memory usage, and disk size. Once it’s up and running, IMO app performance is almost all down to the app’s code. So I’m optimizing where I can - being mindful of algorithms, avoiding memory copies, trying to keep things cache-friendly, avoiding heavy JS stuff, taking copious benchmarks, etc.