Edit: my below comment was actually wrong. They actually do use git.
Thanks for sharing. What I find most interesting is that Linus is still using the same email-based software development methods for the kernel while the rest of the software engineering world has evolved to use his other invention, git, for that. I’m kind of second-hand embarrassed for those geniuses who have yet to adopt proper version control for (what I’d argue is) the most important project in the computing world.
Here’s a far more nuanced explanation from Spore’s reply to this comment :
Git and Email are not mutually exclusive. In order to collaborate with git, you need and only need a way to send your commits to others. Commits can be formatted as plain-text files and sent through emails. That is how git has been used by its author from literally the first release of it.
Git was originally authored by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development. Since 2005, Junio Hamano has been the core maintainer.
Git and Email are not mutually exclusive. In order to collaborate with git, you need and only need a way to send your commits to others. Commits can be formatted as plain-text files and sent through emails. That is how git has been used by its author from literally the first release of it.
A git server don’t need to know email to work, and it is not required to have a git server. Email in this workflow is an alternative to a PR: contributor submit a set of commits to the maintainer (or anyone interested). Then the maintainer is free to apply or merge the commits. After that the code can be pushed to any servers.
Honestly I’m surprised that so many people don’t know how git can be used without those repository hosting sites. That’s one way to use it, not the only way. And it’s not even the way it was originally designed for.
I’m not so surprised anymore. I’m self-taught using open-source software projects for guidance. But not everyone learns like that. For example in the commercial software dev world, having patches easy to apply with minimum tooling isn’t usually a priority (for better or worse).
This is actually a little story I had half written down; your comment prompted me to finish it. Thanks! www.srcbeat.com/2023/11/git-email/
Yeah, that’s not quite right. You need a means to discuss things and review code. You can do this via a website or mailing list. The Linux kernel uses the latter. Lots of other devs use the former. Like Github. And Github and Git aren’t the same. The issue tracking, discussion platform etc are something Github does on top of Git. You can as well use Email or a different service/online platform for the communication. The actual program code is stored in Git in both cases.
A. If you haven’t played ΔV, do it. One of the most amazing games out there imho. So good in fact that I just went to find a Δ on the internet so I could use it and not disrespect the dev and the game. B. He is such an amazing dude. I don’t know him personally, but I do know that when Ukraine was invaded he made the game free for months on Steam so people in Ukraine could get it and have something too distract themselves from the conflict. A+ move in my book right there. I had already bought the game at that point, but I wish I could buy it again just to support him further. C. Reading this almost makes me think it would be a good tactical move to offer early access games at a steep discount on Linux if it has this great of an effect. Pay back the “free” QA kindness of the community.
What this guy/gal said. Linux user for 25 years here, 10ish of which have been exclusive. And I run Mint on my main PC.
Because when I can finally wind down after the kids are in bed and I can hear myself think, I just want shit that works, without having to dick around with manual kernel modules and other custom stuff to get basic things working … I get paid to do the latter at work, and I get enough of it there.
What’s up with the ux design of nix? I get it’s made for advanced users but still. I’m reading through this guide and man it’s convoluted.
The different ways of installing packages. Either through editing the configuration.nix or running a command. The weird inconsistency of nix commands. nix-env -iA to install and nix-env --uninstall to uninstall. Then updating uses nix-channel --update but upgrade uses nixos-rebuild switch --upgrade. All this to use the package manager. Also haven’t even mentioned flakes or home manager.
It’s a cool OS, but the UX really needs work imo.
[Edit] I do wanna add something else too because I feel like my point isn’t getting across.
It’s okay to have a complicated ui. Especially if your target audience are tech-savvy. But even tech-savvy people have to start as new users. A tech-savvy new user isn’t going to know what the best practices are. Being able to anticipate the steps for installing a package is important for ux. If the commands for installing packages isn’t cohesive/intuitive, then the user has to spend more time looking for guides and learning how to use the software.
People also mentioned a new command in the works. This is great! However, these current commands are being recommended through blogs and nix. New users won’t know about this new command.
After trying out Nix as a package manager I realized I have a pretty different world view than the makers of Nix. I agree with the end goal but how they are trying achieve it is just alien to me. The nix command line is just downright user hostile.
I am personally hoping that someone else takes a stab at the Nix concept but have accepted Nix isn’t for me.
Yeah because when you make an error it causes a snowball affect and it shows you too little information but when you look at the trace its a wall of errors.
i had a syntax error in my dotfiles that took me two hours to solve.
it was a missing semicolon that was wayyy above where the error said it was. it didn’t even say missing semicolon, instead saying unexpected ‘}’ on line …
Imho I wouldn’t bother with nix-env or nix profile. It just creates a secondary list of packages that needs to be maintained and it’s cumbersome to do so. There’s nix-shell or nix shell if you need a package temporarily and there’s your configuration.nix or flake for everything else.
Side note: nix profile at least has consistent commands: install/remove/upgrade
They have resolved this exact problem. There is an “experimental” cli tool that fixes a lot of your complaints about nix-env, nix-channel, etc. Itcs wrapped together with “flakes”. This newer feature is a little different, and working with or without flakes segments the community AND the types of articles about nix, like this one.
As far as I know though, nixos related thing still have a bizarre set of commands, and even with flakes “nixos-rebuild switch --upgrade” is still how you switch configs.
And as far as installation goes, using nix-env -iA really is a bad practice. Thats installing something ad hoc like you would in any other package manager. That defeats the point of nixos, where your configuration file explicitly defines all the packages you need installed, and nothing else. Nix will remove any packages you didnt specify.
Oh that’s good that they are addressing those issues with a new command. Hopefully it gets into stable soon.
Might be that nix-env -iA is bad practice! I’m strictly talking about ux design here and nix-env -iA is being recommend by blogs and nix themselves. (Nixpkgs tells you how to install using nix-env -iA)
A new user isn’t going to know what bad practice is.
It actually recommends using nix-env -i, which is even worse because with that command it searches the whole repository instead of just getting the correct attribute on nixpkgs. It takes half a minute to run the command, it’s insane.
I do think it’s important to emphasize the difference between installing software in user environments and system wide, which is why the tool is named nix-env. System packages must be installed via the nixos configuration file and a rebuild.
To me the biggest missing piece for new users is a tool to help manage your system configuration and reduce the frustration of having to constantly look up nix syntax or nixpkgs quirks. Maybe thinking of it as a nixos/nix IDE? Also a polished distribution built on nixos would be a good starting point (and easy to do, I didn’t realize I could just copy someone else’s configuration until well after I had my system working well enough)
The other thing that got me starting out is the need to garbage collect old packages. It’s not strictly necessary if you have a large enough disk, but it took me several iterations of filling my root partition before I figured out how to properly clean up old generations.
Is my go-to command. For a while I was looking at generations manually, but now I just wait a while (days, a few reboots, or until I need more space) to run this after changing things in case the new stuff is broken.
I think running this as my normal user cleans out old env generations… But I’m not 100% sure.
There is controversy in the nix world because nix flakes were (some say) merged without proper vetting first. OG nix diehards don’t want to taint nix documentation with ‘experimental’ flakes. But probably the majority of nix users are all in on flakes. So you have documentation from the OG camp that doesn’t include flakes, and you have innumerable unofficial guides for the flakes way. This on top of the quirkiness of nix the language and the multiple ways to do things. Unfortunate.
IMO nix-env was a mistake. It feels like an imperative package manager which may be comfortable to new users who are used to apt or similar. But really what you should be doing on nix is maintaining *.nix files which document/specify your system setup, and nixos-rebuild to update your system to that configuration. Similarly, nix channels are an imperative holdover, which can be done away with if you use flakes, which results in your current nixpkgs version being documented in a system level flake.lock file.
I think both nix-env and flakes are designed with making package management easier. Nix-env tries to make it intuitive and familiar for new users. Flakes improve package management by simplifying the configuration.
Personally I would love to see syntax highlighting, language server, code completion. Maybe all in a dedicated application which is configured to give the easiest experience for new users. If nix is intended to be managed through config files, then the experience of writing a config should be as easy as possible.
The intent of nix-env was to make it easier, but the effect was to push some of your system state into a shadowy ‘env’ realm that is not managed by your *nix files. Same with channels - its state that isn’t in your configuration.nix.
To me the whole point is to have all your state in some files you can check in to version control, and use to reproduce your system.
Agree it would be cool to have a way to edit nix files that would give you all the args to functions, code completion etc. You do get some of that with the nix repl. Would be nice to even have a GUI for selecting packages for those that don’t “do” text editing.
I’m using nixd for a nix language server, but haven’t seen a lot of benefit so far to be honest. I think part of the reason is nixpkgs isn’t pulled in until runtime, so most things are undefined as far as the lsp is concerned. Haven’t put a lot of time into it, there may be ways to make it more useful.
It may still be nice to have a reference implementation. For example maybe they can see if there are extra hardening options that they can enable or adopt the more seamless update flow.
Yeah, really happy about this. $WORKPLACE uses Ubuntu and the Snap is just mildly broken in multiple ways. The .tar.bz2 works, but we would have had to script the download + creation of the .desktop file. We successfully procrastinated doing the latter long enough, that Mozilla fixed it.
One that I can remember many years ago, classic trying to do something on a flash drive and dd my main hdd instead.
Funny thing, since this was a 5400rpm and noticed relatively quick (say 1-2 minutes), I could ctrl-c the dd, make a backup of most of my personal files (being very careful not to reboot) and after that I could safely reformat and reinstall.
To this day it amazes me how linux managed to not crash with a half broken root file system (I mean, sure, things were crashing right and left, but given the situation, having enough to back up most things was like magic)
Many years ago I was dual booting Linux and Windows XP. I was having issues with the Linux install, and decided to just reinstall. It wasn’t giving me the option to reinstall fresh, only to modify the existing install.
So I had the bright idea to just rm -rf /
Surely it’ll let me do a fresh Linux install then.
Immediately after hitting enter I realized that my Windows partitions would be mounted. I did clearly the only sensible thing and pulled the plug.
I think I recovered all of my files. Kind of. I only lost all the file paths and file names. There was plenty to recover if I just sorted though 00000000.file, 00000001.file, 00000002.file, etc. Was 00000004.file going to be a Word document or a binary from system32 directory? Your guess is as good as mine!
I’m glad to see that he is learning in prison, talking and working through things. This really is the point of prisons: not just a place to keep people but a place to reform them.
Anyone of us could become a criminal given the right pressures and circumstances. I wish all prisons would reform and educate their inmates and that they come out as better people who can live a peaceful and productive life.
I don’t live in the US. But I would hope that eventually prisons would adopt the mindset to reform inmates rather than just keep them locked up for nothing.
I was referring to the spectrum computer, which can’t run Linux. It wasn’t about people on the Spectrum, which are probably all of us, in some fashion?
yubikey works on every linux distro I have tried, and even on freebsd. Some people say it “works out of the box” but that part is not true on every distro. Every distro will recognize the device when it is plugged in, but not every distro will all 2FA actions out of the box, and almost no distro comes with the management tools.
On linux (and BSD) you can install a CCID tool to get the 2FA, which installs software that needs to be running (you can use the yubikey as a keyboard approach if you really need it) On Linux you can install a manager tool like ykman is easy, if you want to manage the tooling on your card On Linux you can setup PAM (authentication) so that yubikey can be used for logins, sudo auth etc On Linux you can use yubikey to do advanced things like manage the encryption keys for encrypted disks
I appreciate the detailed response. I looked at the Arch wiki page and ensured that I have all packages listed. Still, the output of ykman info is “Error: No YubiKey detected!” :P
I do not get any messages. I’m starting to think there is an issue with my motherboard’s USB-C port. If I can get my hands on a USB-C to USB-A adapter, I can test this theory…
I use FreeCAD and Assembly3 for everything and have for many years now. I sometimes use realthunder’s fork of FreeCAD but right now it’s quite a bit behind upstream and there are some cool new features in sketcher so I use upstream for those.
Some people get confused about workflow in FreeCAD because there are so many options and every youtube video has different opinions or tries to feature a particular workbench like curves or something. My opinion… Pretty much your workflow starting out should be to ignore everything else and use part design and sketches, it’s the simplest way:
enable autosave with a short interval, like 2min
Switch to part design workbench
create body
create sketches as the base of the features of your part attached to the xy, xz, yz planes, offset them to create a “wire frame” that resembles your project
a. Your sketches should be fully constrained
b. Your sketches should have as little geometry in them as possible, if you need more complex stuff make more sketches
c. Your sketches should have closed wires, you can’t pad something that doesn’t create a face.
use pad, pocket, revolution, loft, and hole operations on those sketches to form a 3d solid
if you need to create additional sketches which import geometry from the previous operations (using the external geometry tool), import SKETCH geometry from the previous ops, not edges of solids, whenever possible. Hide your solid, unhide your sketch, select that with the external geometry tool.
a. Use sketch on face sparingly.
Do fillets and chamfers last, if you need to change something, delete them and recreate them once you’ve made your changes.
To make multiple parts make multiple bodies with the same workflow as above.
Once you get pretty good at making static parts with constrained geometry, holes, threads (with the hole function), etc, which you can do with only the stuff above, then you can branch out into other workbenches like assemblies or curves, but all of those things build on the concepts above, so it’s easy to get overwhelmed if you try to do it all right from the start. Learning how to recover from a mistake is just part of CAD in general, though I admit that it’s a bit more effort to find what’s wrong in FC vs commercial platforms, but we aren’t here, on lemmy, in a linux community, to use commercial platforms.
AFAIK that’s pretty much the same workflow as F360 uses for single-solid parts though things have different names. pad=extrude for example.
It’s obviously far from perfect but in my opinion it’s the best solution that runs natively on Linux and is actually open source. Also assembly3 uses solvespace as it’s backend solver so if you make assemblies using that you are kindof using solvespace too.
Also, I hear/read a lot of complaining about instability but I’ve honestly never had a crash that wasn’t on an experimental branch like RT or the edge release of upstream. However step 0 above should help if you’re worried about that.
linux
Top
This magazine is from a federated server and may be incomplete. Browse more on the original instance.