• 0 Posts
  • 13 Comments
Joined 8 months ago
cake
Cake day: August 15th, 2024

help-circle
  • There’s lots of software out there that is available to use without payment, but is still license restricted in such a way that you are not permitted to redistribute, modify, use for commercial purposes, etc. To many, these rights are the far more important facet of “free” software, above what it costs.

    But since the English language has the same word for all of these concepts, we have all these yucks running around with zero-cost but right-restricted software wearing the “FOSS” badge thinking they’re part of the club. So some people add “Libre” to the acronym to explicitly disambiguate.


  • pixelscript@lemm.eetoLinux@lemmy.mlDo you use Gnome or KDE Plasma?
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    4 months ago

    Five years of Mate (which is essentially Gnome 2 on life support) replaced by a couple years of KDE Plasma.

    Mate treated me well enough, it was mostly stable, capable, and competent. But it was a bit crusty around the edges, and being so niche meant search-engine-visible help resources for anything than went wrong were virtually nonexistent. In hindsight, using it as a beginner’s DE was probably a mistake. I suppose in being so austere and devoid of resources it taught me to develop more of a “get to the bottom of it yourself” attitude to debugging and have humbler expectations about form versus function, but that’s a pretty rough sell to most people. Mate is definitely better as a drink than a desktop environment.

    I don’t need to talk about KDE Plasma at all because the rest of the thread already has. I have nothing new to add beyond the comment that I like their mascot character.

    I have no informed opinion on Gnome 3. All I’ve gleaned about it is that it’s supposedly “my way or the highway” by design, and the “my way” in question is controversially counter-grain to a lot of established expectations (e.g. it’s literally why Mate exists). Which is neither here nor there to me, objectively. But I will say I have no interest learning a new way of doing things, even if it’s theoretically superior, when a conventional system still exists, is viable, is highly polished, and is kept sharp-edged. Hence, KDE Plasma.




  • Well, I also tend to consider ultrawide monitors a mistake in their own right. Why would you want a 49" wide literally anything if it’s not some kind of immersive media experience where menus are irrelevant anyway?

    Of course, if that is in fact exactly what you bought it for, I have no complaints. Even if I disagree with having one for other purposes, that’s still no reason for the OS to punish you for having one when you try to use it that way when that problem is completely avoidable.


  • I’ve personally always loathed the global menu bar paradigm of macOS. Having a menu bar that’s wholly detatched from the currently open window that is context-aware based on which window has focus always felt like an irritating speed bump to me. My mind feels like the OS itself is hiding things from me by only allowing me to see a single app’s menu bar at a time.

    But then again, I have no objective qualms with it. I’m sure I could adapt to it. When have I realistically needed to see more than one menu bar at once? I can’t name a time. I’m probbably just pearl-clutching at the perceived arresting of my agency to do things when in fact I’m losing effectively nothing.

    At any rate, we agree it’s a sure sight better than the shitshow that is GTK. “Hm? Window decorators and shit? Nahhh, those are your problem. Go roll your own.” For the flagship windowing toolkit of the GNOME Project, the DE I’d consider the closest in philosophy to what macOS has going on, that was a rather strange position to take.


  • I do honestly miss the level of artistic and aesthetic polish that a multi-billion dollar corporation can afford to field that no Linux distro really can.

    Linux as a rule is and always has been generally quite “Guys Live In Apartments Like This”. Often utilitarian to a fault. UX design by backend devs, because actual frontend devs cost money. No one wants to pay the “beauty tax” for software. DEs like KDE and Gnome are trying very hard and have made great strides, but it’s very slow progress.

    And I imagine this comment will be a magnet for power user types who will flock to my post and retort something along the lines of, “All that stuff is bloat/a usability nightmare/clutter/gets in my way/comes at the cost of features”, blah, blah, blah, waaahhhh boo hiss… Yes, it’s all true, and yes, I understand. But Linux and the free software it surrounds itself with tends to be crusty, clunky, and god-awful ugly, and I’d be lying if I said that didn’t frustrate me a bit now and again. Does it bother me to the point that I don’t want to use it? Fuck no. Windows isn’t worth the bullshit. But they do at least know how to make an OS slick and beautiful, when it works, anyway.

    I’m sure people will also cherry pick examples of FOSS software that are quite ergonomic and lovely to feel. Yeah, there are many examples that exist, but they tend to be diamonds in the rough rather than exemplars of the ecosystem. For every one dev in this community who actually has a fucking clue how to make smooth-feeling and aesthetically pleasing software, there’s a score of devs who slapdash together their programmer-art-tier UIs and call it a day, and a thousand other dev-brained users who look at it and go, “this is fine”. And yeah, it is fine. But sometimes I want more than fine.


  • It’s a divesting of unwanted responsibility.

    If any change can break something then all broken bits will need fixing.

    Right. So the less decrepit, old code that contains annoying little time bombs, the less time spent fixing things.

    But that’s true of all code in the kernel. […] Why not remove all drivers in case an update breaks them.

    And how many people actually need these ancient drivers maintained? More than zero, sure, but how many more than zero?

    Maintenance effort is a finite resource. Choosing where it gets spent is an executive decision. Every dev hour you assign to debugging some ancient driver that one or two enthusiasts might still want someday is a dev hour not spent on development of some new feature, or fixing a problem affecting thousands, potentially millions of known, current, active users.

    We can’t maintain all code forever. At some point the theoretical value it may have is outweighed by its cost to keep alive, and it gets cut.

    A driver can be complete and only need updating if someone else breaks stuff, so leave it alone until then and only remove it I’d no one comes to fix it.

    That’s sort of where we’re at now, in a way.

    Yes, all of these drivers presumably are still fully functional at the time of cutting. But the devs have essentially all decided, “We are not fixing these anymore” already. If any of these break for any reason, they would all be immediate candidates for axing by your system.

    The reason they aren’t just left in with a “we’ll just run it until it dies, then!” mentality is because a project like the Linux kernel doesn’t want to be full of software with undefined mystery behavior where they can reasonably avoid it.

    A chunk of code being part of it at all is an implicit promise of, “This is intended to function as-documented. If it does not, we are responsible to fix it.” But we already know no one will fix it. So instead it just becomes, “This chunk of code may or may not work. We don’t know and we don’t care, lol. Use at your own risk. If you can prove it’s broken, we’ll just remove it”.

    The Linux kernel does not want to be full of code like that. All of its code should be reliable to build things on. If it’s coming out, it needs to be announced in advance so users have time to migrate. A “we will run it until it suddenly breaks” system doesn’t afford that. The feature ideally has to be sunset while it’s still functional.

    “Unstable code, use at your own risk” projects are better relegated to optional packages. If someone wants to bundle up these ancient drivers and offer them as an optional package, they are free to do so. If there ends up being zero will from anyone to do even that, I guess it’s more evidence to how little the functionality was actually demanded.



  • pixelscript@lemm.eetoProgrammer Humor@lemmy.mlComenting code
    link
    fedilink
    English
    arrow-up
    21
    ·
    edit-2
    7 months ago

    I recognize three kinds of comments that have different purposes.

    The first kind are doc block comments. These are the ones that appear above functions, classes, class properties, methods. They usually have a distinct syntax with tags, like:

    /*
     * A one-line description of this function's job.
     *
     * Extra details that get more specific about how to use this function correctly, if needed.
     *
     * @param {Type} param1
     * @param {Type} param2
     * returns {Type}
     */
    function aFunctionThatDoesAThing(param1, param2) {
        // ...
    }
    

    The primary thing this is used for is automatic documentation generators. You run a program that scans your codebase, looks for these special comments, and automatically builds a set of documentation that you could, say, publish directly to a website. IDEs can also use them for tooltip popups. Generally, you want to write these like the reader won’t have the actual code to read. Because they might not!

    The second kind is standalone comments. They take up one or more lines all to themselves. I look at these like warning signs. When there’s something about the upcoming chunk of code that doesn’t tell the whole story obviously by itself. Perhaps something like:

    /* The following code is written in a weird way on purpose.
    I tried doing <obvious way>, but it causes a weird bug.
    Please do not refactor it, it will break. */
    

    Sometimes it’s tempting to use a standalone comment to explain what dense, hard-to-read code is doing. But ideally, you’d want to shunt it off to a function named what it does instead, with a descriptive doc comment if you can’t cram it all into a short name. Alternatively, rewrite the code to be less confusing. If you literally need the chunk of code to be in its confusing form, because a less confusing way doesn’t exist or doesn’t work, then this kind of comment explaining why is warranted.

    The last kind are inline comments. More or less the same use case as above, the only difference being they appear on the same line as code, usually at the very end of the line:

    dozen = 12 + 1; // one extra for the baker!
    

    In my opinion, these comments have the least reason to exist. Needing one tends to be a signal of a code smell, where the real answer is just rewriting the code to be clearer. They’re also a bit harder to spot, being shoved at the ends of lines. Especially true if you don’t enforce maximum line length rules in your codebase. But that’s mostly personal preference.

    There’s technically a fourth kind of comment: commented-out code. Where you select a chunk of code and convert it to a comment to “soft-delete” it, just in case you may want it later. I highly recommend against this. This is what version control software like Git is for. If you need it again, just roll back to it. Don’t leave it to rot in your codebase taking up space in your editor and being an eyesore.



  • The other day I learned that you can just grep an unmounted filesystem device. It will read the entire disk sequentially like it’s one huuuuge file. And it will reveal everything on that disk… whether a file inode points to it or not.

    Used it to recover data from a file I accidentally clobbered with an errant mv command. It’s not reliable, but when you delete a file, it’s usually not truly gone yet… With a little luck, as long as you know a unique snippet that was in it, you can find it again before the space gets something else written there. Don’t even need special recovery tools to do it, just use dd in a for loop to read the disc in chunks that fit in RAM, and grep -a for your data.