I’m the Yujiri from yujiri.xyz. https://yujiri.xyz/contact.gmi
The two use cases suggested:
Alice holds a digital wallet that securely manages her identity, data, and authorizations for external apps and connections. Alice uses her wallet to sign in to a new decentralized social media app. Because Alice has connected to the app with her decentralized identity, she does not need to create a profile, and all the connections, relationships, and posts she creates through the app are stored with her, in her decentralized web node. Now Alice can switch apps whenever she wants, taking her social persona with her.
Bob is a music lover and hates having his personal data locked to a single vendor. It forces him to regurgitate his playlists and songs over and over again across different music apps. Thankfully there’s a way out of this maze of vendor-locked silos: Bob can keep this data in his decentralized web node. This way Bob is able to grant any music app access to his settings and preferences, enabling him to take his personalized music experience wherever he chooses.
So you want to import playlists between music apps? That could only work if each song has a globally unique identifier for the playlists which is known to all the platforms. That isn’t the case, and changing that would require every musician to change their workflow.
This is a concern I hadn’t really thought of before.
Stuff I read in the past that I think is important here:
As per Drew’s article, I think the main defense we have is the idea of finite scope. In a free alternative to twitter (or another social media platform), there is not an infinite set of features that are desirable. If we pick our feature set wisely, we can build a platform that feels as though nothing is missing, and if we do this, they won’t be able to do the “extend” part because it would be obvious that anything they could add would be making the experience worse, not better. Some of our solutions may have already achieved this - if that’s so, the strategy becomes convicing enough people of that.
For one example I’d name quote tweets. This is a feature that I think is probably an anti-feature. Compared to replies, it is a “third person” form of engagement, which naturally breeds toxicity rather than understanding in disagreement, and encourages people to engage with the worst people on the platform. It also biases people toward having less realistic and less optimistic views of those who disagree with them by showing them only the worst members of the opposing camp. See Shamus Young’s “This Game is Bad For You” - very insightful on this topic.
If we can identify and avoid all such anti-features, and convince enough people to see them as such, we foil the middle E in EEE.
I think all of these arguments are really bad, and I’m someone who hates universal package managers.
t seems, they all agree that all of the different packaging formats and managers are a problem. However, is it really so?
Well, duplication of effort is always a downside.
As a developer, by simply using a free licence, you can just sit back and let all of the distros build binaries and do all of the work for you.
The whole complaint being made is that this doesn’t always happen in a timely fashion, and even when it does, it requires a lot of work to be done by each of those distributions.
Yet, there is a universal package manager that has been around longer than even traditional package managers. BUILDING FROM SOURCE! Many people forget that all of their software is a git clone, make, and make install away from being installed.
I wish it were that simple. In practice, most projects are much harder to build than that. Many use build systems other than plain make such as CMake or Meson and Ninja or GNU autotools (and every project that uses autotools has different levels of intermediate files committed so different commands are needed to build it), and you’ll need to install whatever bespoke build tools they have. I almost always run into arcane error messages that can give me a lot of trouble even as an experienced Linux user and programmer. This is especially true if you’re on a distribution (like anything Debian-based, in other words most newbie distros) where header files are in separate packages, so trying to build anything will give you errors as if you have nothing installed.
A story I always share when this comes up is of my GTK patch that fixed a GObject Introspection annotation (affects generated bindings for other langauges). I spent twelve fucking hours trying to compile GTK and failed. I gave up and submitted the patch without having seen a successful build (it got accepted).
Again, I am an experienced Linux user and programmer. If even I have so much trouble compiling programs from source, expecting anyone who doesn’t have my skill set to do it is crazy.
Flatpak, Snap, and AppImage are just not as fast as conventional package formats. Try using any modern version of Ubuntu, and just see how slow their Snaps are.
I have never noticed them being particularly slow, either to install or to run, though I can’t comment on Snap specifically as I’ve only used Flatpak and AppImage.
But, that isn’t really even the worst part. Because of the nature of universal package managers, they require much more space than traditional packages. Every single app, instead of sharing the dependencies of all other apps on the system, is bundled with all of its dependencies. This can add gigabytes of space to many apps, and slow down older HHD’s.
I mean, sure, reducing space requirements is noble, and universal package managers probably take up a little more space (I haven’t analyzed it myself). But it’s far from a chief concern in a day where even low-end drives have hundred of gigabytes of capacities. And as for " instead of sharing the dependencies of all other apps on the system" - blaming static linking is a serious mistake. The space impact of static linking is not a large cost and it easily makes up for it with its advantages in simplicity and reliability. I would blame dynamic linking for a lot of the headaches we have with packaging and compilation. Dynamic linking introduces the need for complex dependency resolution algorithms, tying each executable to a huge amount of environment it has to carry around in order to work, breaking the portability of programs and crowding your package manager output with obscure libraries you’ve never heard of and shouldn’t have to.
Maybe Drew goes completely crazy and decides to destroy anything related to this new language, I don’t know.
There’s no way he’d do that. He and others spent years building this project already. He’s not gonna throw away that much effort and a promising project just because people are seeing it sooner than he intended.
If you want a TLDR of how it compares to other languages, I think this: https://drewdevault.com/2021/03/19/A-new-systems-language.html
First I’ve heard of Odin, I think most of the languages you list can’t be considered true altneratives to C. A key aspect of C is manual memory management; probably any language with garbage collection cannot replace C in its appropriate use cases (kernels, interpreters, device drivers, etc).
My impression is that Hare aims to be drastically simpler than Rust, but borrows at least one major idea from it: pattern matching. I suspect a big reason Drew didn’t consider Zig satisfactory is because of its lack of unicode string support. See this fascinating thread where he argues with the Zig developers about their decision to leave it out: https://github.com/ziglang/zig/issues/234
Bit of a tangent here, but I think FOSS ideologues have a tendency to overrate the significance of software being FOSS.
We already have a Linux-based mobile OS: Android. It is open source, but it is still in practice a tool for Google to gain more control over us.
Having open source code is necessary, but not sufficient for software freedom. We also need the software to actually be designed to serve the user.
It’s big but I think that number’s inflated. I just downloaded the source bundle from sudo.ws and I find only 200k even if I count the entire repository, including docs (43k) and lib (38k), and lib looks like vendored dependencies to me. The actual src/
is only 15k.
Even if that comparison is exactly correct, wouldn’t it just mean that a userspace scheduler is redundant? You don’t want to have two pieces of software running at the same time with the same job.
But I don’t think that comparison is correct. OS kernels aren’t an external tool for managing process priorities. They’re how you create processes in the first place, so of course the OS is the appropriate place to manage them.
Aiwendil has a good answer but I’d just like to add this nitpick (also @kromonos@fapsi.be ): bash and fish aren’t terminals, they’re shells
This post seems to be an ad for some sort of development contracting company, which disgusts me, but I feel compelled to respond to the points anyway because their content is interesting independent of the ads. My position is that Node is a terrible choice, and I will rebut these reasons.
Easy learning curve
This paragraph assumes you already know frontend. Yes, it’s easier to learn backend JS than another backend language if you know frontend JS; it’s not easier to learn backend JS than another backend language if you don’t know frontend JS. (Not all developers are full stack)
The V8 JavaScript engine has been proven to be at least twice as fast as any other server-side language out there, including Java and PHP, while using far less memory than any of them.
This argument is bizarre. I have seen that Node is faster than other dynamic langauges, but have you forgotten that compiled languages exist? I would be astonished if you could find any evidence that Node is faster or uses less memory than say, Go (the backend language we use at my job).
One Language
Much like the previous point, this assumes the perspective of a developer who already knows JS and nothing else. If you know only JS, you might prefer to use that language everywhere. But let’s say you know two languages: Go and JS. Using Go would mean using different languages on the frontend vs backend of this particular application, but using JS would mean using different languages on the backend of this project vs your experience in other projects - neither side has the “One language” advantage.
Open Source and Community Developers
This is just silly as all relevant programming languages are open source. A closed source programming language would be a joke.
Scaling Up
The number of companies using it is irrelevant. The ability to scale is relevant, but it’s not a distinct benefit; it’s a consequence of being more resource-efficient, which almost any compiled langauge should beat Node’s ass on due to the intrinsic performance advantage of compilation.
Ease of Deployment
I have no idea what this is even talking about. I thought this was about web backend, where all languages can be deployed in the same way.
A great thing about JavaScript frameworks in general, and especially Node.js, is that they can be used across a variety of different platforms: desktop, mobile, and web.
This only applies to frontend. No one’s saying you shouldn’t use JS for the frontend of a web app as you have no choice.
Security
There’s no evidence that applications written in Node are more secure than applications written in another language such as Go or Rust, and the content of this point has nothing to do with “Security” anyway.
Ability to Use RESTful APIs
Any language can implement and use a REST API.
Lots of Modules / Plugins
It’s true that Node has one of the biggest ecosystems of available libraries, but it’s not the only one. Python, Go, and Ruby all have sufficiently large ecosystems that it seems impossible to find a task for which there isn’t a preexisting library.
Those are all part of it, but for a broad answer, just think about any other type of software that has various alternatives. What’s the difference between web browsers? Between text editors? Email clients? Not everyone can agree on one perfect way for an app or desktop environment to be. There’s always some people who think they’d be more productive with a different design, or that a different design would be more intuitive to them, etc.
I think you might be interested in this btw: https://drewdevault.com/2021/12/05/What-desktop-Linux-needs.html
Idealism, if Linux was going to take over innately it already would have
I don’t understand, you could use this argment against anything, just pick something that took off and imagine someone saying this before it did, why is Linux different?
History (let’s be honest it’s like a discord server if it doesn’t take off all at once it never will)
Why? Lots of things take off only after a long time. Why is Linux like a discord server? You don’t explain how you’re arriving at these conclusions
It’s inaccessible (terminals cannot replace everything. I’m talking to you if you say “bloat”)
No, terminals can’t replace everything, nor are we trying to make them do that. Linux has GUI applications and conventional desktop environments. I’m one of the ppl who’s constantly raging against bloat and I use apps like eog. Terminals are great but they are meant for a certain set of uses, not for everything
There’s only corporate funding, so they will appropriate it
I’m not sure what this statement even means, are you saying only corporate things get funded or Linux only gets funding from corporations? And what is ‘appropriation’ mean here? Corporations using Linux is not a problem
We tolerate people who don’t tolerate others (including the less tech-savvy)
Sure, there are bigots and toxic ppl in many Linux communites… just like there are in non-Linux communities. I’m not convinced that Linux communities have an especially high concentration of toxic ppl, especially since you specify “the less tech-savvy”. I don’t think there’s a widespread problem with how Linux ppl treat the less tech-savvy. I think a lot of ppl have this opinion because they do things like ask questions that are answered in the documentation, or send bug reports without any information, or act too demanding of maintainers or free software.
Useful link: http://www.catb.org/esr/faqs/smart-questions.html
Microsoft has way too much power (money)
Yeah, I hate Microsoft too and I wish they had less power and money than they do. But this is just a despair argument. There’s no reason free software can’t win people over, especially with Microsoft going ham on anti-features in recent versions of Windows and more people becoming more critical of capitalism. Money lets them make products and software effectievly, but it can’t let them replicate the things that make free software special.
Few people remember RMS started copyleft as a political goal (too many people are uncomfortable challenging their beliefs, so they want Linux to be “apolitical”)
I don’t see what this has to do with the Linux desktop taking off. Yeah, copyleft is a great idea and to me it is a deeply ideological thing that I support, not just a praxis. But, as someone else said, letting people enjoy Linux apolitically is good because it expands the user base.
No one is doing the political organizing
What political organizing?
Copyleft is flawed and needs to be improved (here’s a template example https://thufie.lain.haus/NPL.html) [also mind you that there’s a need to prevent corporate appropriation]
Copyleft isn’t a magic solution to all problems, and maybe we could do better with different licenses… but that NPL seems like a terrible idea. First, I don’t think you can define terms like “tracking individuals” or “discriminate”/“hate speech” in a legally sound way (the given definition of Discriminate is absurdly over-broad, and the given definition of Hate Speech is both too open to interpretation, since it hinges on the word “hatred”, and too narrow, because of the word “solely”). But even if you could get around the definition issues, you shouldn’t just load a license with your entire ideology. The more stuff you add to the license, the fewer people will agree, and the harder it will be for your software to take off.
People worship RMS instead of realizing he alienates women, people with down syndrome, etc.
Do they? You can be in a lot of Linux communities for a long time without hearing about RMS, and lots of Linux users don’t even like him.
Depends on what terms you want. Summary of popular options:
I sympathize with his pain, but some of the solutions he mentions are very bad and unnecessary. The proper solution is to simply stop treating the issue tracker as a todo list for the maintainer; treat it as a todo list for the community. Automatically closing issues is harmful: https://drewdevault.com/2021/10/26/stalebot.html
The vanguard investment broker login doesn’t work in firefox except under certain specific conditions. It doesn’t work in my own firefox profile, even after disabling enhanced tracking protection and disabling ublock origin and noscript, which should be the same as the default profile, yet it at least sometimes works in the default profile. I did some more experiemnts on it today and it seems to have something to do with clearing all site data.
What a terrible article.
Whenever I read the claim that copyleft ideology is hypocritical because it imposes a restriction on acceptable use of the software, I pretty much just stop paying attention. The ideology of copyleft is very clear and consistent: making non-free derivatives isn’t a valid freedom because it takes freedom away from others. No, just because you don’t like something doesn’t make it hypocritical. Compare copyleft to defensive force: everyone agrees that it’s wrong to punch someone, but everyone also agrees that you can punch back against someone who punches first.