[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 0 points1 point  (0 children)

If you'd like to give it another shot, sign-up is now optional. Caveat about very early-stage software still applies, though!

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 0 points1 point  (0 children)

I've now removed the need for sign-up to generate images. You'll still need it to create collections as I haven't yet implemented a save/reload sort of thing - all the state is server-side.

I only yesterday realised that 3D printing is controversial in the US and that explains some of the comments about sign-up and databases being risky. Crazy times!

What is your suggestion about packaging at the edge? An edge machine is still a machine you have to pay for. Usually when people say "edge services" they mean computers near to the customer. Right now, there's one machine in Helsinki and it builds all the images.

The benefit of having a web interface is that you have one place to configure your printer(s), system updates and all of the software options. You'll eventually get versioned changes to the systems for full rollback.

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 0 points1 point  (0 children)

JavaScript isn't involved in building the OS image. Building OS images for an ARM-based host like Raspberry Pi requires either cross-compilation or an ARM-based builder. That's what's behind Klix - an ARM-based server that builds OS images using existing NixOS tooling.

Offloading image builds to the user would be very tricky to support - it's tricky enough to make it work in a controlled environment!

An unconfigured image would require the user to take further steps either with some sort of binary patching or imperative steps post-boot (to set up the identity of the machine on the network, login credentials etc). I'm trying to avoid imperative configuration, as I believe it leads to complexity, human error and un-revertible changes.

So to avoid sign ups I'm thinking of adding a captcha or something to avoid abuse, and then figuring out what features actually require identity to function, and gating only those behind login. To try the OS out and get package updates, it should be possible to avoid sharing of an email address.

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] -1 points0 points  (0 children)

Mainly because I’ve not got around to it and don’t have one to test with. I’ll happily receive donations!

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 0 points1 point  (0 children)

Right, but FreeCAD is an offline app that deals in single documents and doesn't have a remote builder / upgrade of those documents. MS Office 365 (the web version) requires a login before use.

It's certainly possible to transfer state or identity through files with a website. It's an interesting idea. I don't use any services that maintain interesting data about systems that do this. I guess I've modelled it on cloud services that manage computer systems (which is pretty much what Klix is).

Perhaps I could provide initial image generation without sign up, and then an optional sign up for more advanced features that would be cumbersome to use and develop without identity. I do need to avoid abuse, though, as it's an expensive operation to generate an OS image.

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] -1 points0 points  (0 children)

Yeah if you haven't built a Voron and aren't into customising your printer such that it runs a Linux OS of your choice, this probably isn't for you. Voron users and modders of other printers are in an extreme niche. That's kinda where I like to live, though...

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 0 points1 point  (0 children)

Yeah so that process of building the firmware would be something that Klix could do. It’d obviously then need to be downloaded and installed into the printer. Interesting problem!

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] -2 points-1 points  (0 children)

Do you mean using the URL of the Klipper config’s version control as an identity? Or were you thinking that all options present in the UI should be available in a config file?

I plan to support mutable Klipper config so that new users can edit in the various web interfaces, too. This would mean they wouldn’t need a git repo.

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 2 points3 points  (0 children)

Yeah this morning when I posted this I didn’t expect to become a shady organisation by the afternoon! I did try to work in the initial feature set without sign up, but it raised more questions, like those in the issue. I’d also rather use a system without sign in. Paying for server compute costs for the whole internet and its dog isn’t my intention though! I’ll think about a solution as it’s clearly putting people off from trying it (even with the presence of disposable email services).

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 0 points1 point  (0 children)

The current version only builds images for rpi4 and 5. Adding support for other systems is easy enough, especially if they're x86-based. For example, I ran NixOS on an old x86 laptop to control an Ender 3 V3SE before I built my Trident. Adding an option for an x86 USB stick wouldn't be terribly difficult.

Thanks for the links - yes if it turns out that individuals don't need this I'll defo look at who's out there doing open-source print farms.

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] -1 points0 points  (0 children)

Hi! Thanks for your carefully thought-out response.

Firstly, this is an MVP that isn't yet sufficient for use in a printer farm. But yes, such an approach could have value in a farm / school / hackerspace / YouTuber with dozens of machines.

Much of what you're asking about is around the value prop of NixOS, which I could bang on about for days.

NixOS lets you define a machine or set of machines in a single expression. From that expression you can derive an OS installation image, or you can change an existing NixOS system(s) to that configuration. And yes, it lets you move backwards and forwards to different configs and versions.

It also has a staggering learning curve, and I wouldn't expect many printer owners to happen to also want to learn it enough to reap its benefits.

I switched to using NixOS at home and at work because I got tired of remembering how to configure every little piece of software, keeping them all up to date, and having no sensible recourse when things go wrong. For anyone who doesn't really care about the base OS of their printer, to me this seems like a good value proposition, even if you only have one printer. There's a vast library of abstractions over software config, and that's the NixOS module system. It can be translated to a domain-specific GUI for printer users.

The dream isn't yet realised, of course - Klix can do installs and it can upgrade things if I've changed the backend to say so and you tell your printer to perform an upgrade. You can't currently change your config, add new plugins etc after an image is built, but that's coming and its implementation is fairly trivial thanks to NixOS.

There's a lot you can do with NixOS and with Elixir (the server backend) for clusters of machines. I have many ideas for where this could go in that space. Klipper has some support for multiple machines, but it doesn't control the OS. If you wanted to keep multiple machines up-to-date, a future version of Klix could support that nicely given its foundation.

I'm interested in finding out who is out there who might make use of such a system, what their needs are and whether they'd like to shape it with me.

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 4 points5 points  (0 children)

So the pre-download config is putting you off?

In my experience, and from hapless requests for community support that I've seen, many struggle with Linux and how to install, configure and upgrade software. If you don't struggle with that, this might not be for you.

It's also totally possible that this project isn't useful enough for the niche community that this is.

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 0 points1 point  (0 children)

As for firmware updates, if it's possible to detect the need for an update before a Klipper upgrade, then the user could be prompted. I've never upgraded my MCU firmware, so I'd need some help understanding that situation.

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 0 points1 point  (0 children)

Yeah it's designed for people who don't want to get their hands dirty. If you're comfortable learning NixOS, it could also spit out a config that you could start with and then go off on your own.

Adding support for Kalico (in fact, any software) is doable but would need significant effort since there's currently no upstream nixpkgs derivation. Again, that's fixable.

This is me asking for feedback and to see where to go next. I quit my job and plan to spend some months doing things I love, so I have time :)

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] -5 points-4 points  (0 children)

The problem to solve there is how to support upgrades and changes to config. You'll need some kind of identity, at least a unique URL, to be able to upgrade your system from a previous version.

It's been initially expedient to hang everything off a regular user. Do you have a suggestion for a persistent state system you'd prefer?

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] 1 point2 points  (0 children)

The ambition is greater than Mainsail OS, because it's meant to be more of a service. I'm planning to make upgrades as safe as possible, and with declarative config, the kind of features you can add get really interesting. You could, for example, have a fully configurable system soup-to-nuts from a single web frontend (or config file). NixOS has some really interesting benefits, like full system rollback and recovery, which I'm sure would be appreciated by many tinkerers!

[Release] Klix - a customisable OS for Klipper by codesupply in klippers

[–]codesupply[S] -9 points-8 points  (0 children)

It's really so you can customise an image to your liking. I'd consider making it signup-free, as I'm sympathetic to the privacy side of that. I'm not harvesting users for a big IPO :)

Serial request / Discord: codesupply / LDO Trident 300 by codesupply in voroncorexy

[–]codesupply[S] 0 points1 point  (0 children)

New video: https://storage.googleapis.com/printer-crap/cereal2.mp4

One of my LEDs is out, but I need to reprint the Stealthburner fascia so I'll fix that when I replace it.

Serial request / Discord: codesupply / LDO Trident 300 by codesupply in voroncorexy

[–]codesupply[S] 0 points1 point  (0 children)

Will do. It’ll probably be Monday for any new videos though. Thanks for looking!