Distro packages and to some extent Flatpaks, use shared libraries which can be updated independently of your app.
So for example, if a vulnerability is discovered in say, curl, or imagemagick, ffmpeg or whatever library an app is using: for AppImages, this won’t be fixed until you update all of your AppImages. In Flatpak, it usually can be updated as part of a dependency, or distributed as a rebuild and update of the Flatpak. With distro packages, you can usually update the library itself and be done with it already.
AppImages are convenient for the user in that you can easily store them, move them, keep old versions around forever easily. It still doesn’t guarantee it’ll still run in distros a couple years for now, it guarantees that a given version will forever be vulnerable if any of its dependencies are because they’re bundled in, it makes packages that are much much bigger than they need to be, and you have to unpack/repack them if you need library shims.
Different kinds of tradeoffs and goals, essentially. Flatpak happens to be a compromise a lot of people agree on as it provides a set of distro-agnostic libraries while also not shifting the burden entirely onto the app developers. The AppImage developer is intentionally keeping Wayland broken on AppImage because he hates it and wants to fulfil his narrative that Wayland is a broken mess that won’t ever work, while Flatpak developers work hard on sandboxing and security and granular permission systems.
It is very unfortunate. It’s fine to point out problems, but then when you become part of the problem, that’s not amazing.
He’s had the same meltdown with fuse2 being deprecated in favor of fuse3 which, guess what, also broke AppImage and we had a huge rant for that too.
Flatpak has a better chance of being forward compatible for the foreseeable future. Linux generally isn’t a very ABI/API compatible platform because for the most part you’re expected to be able to patch and recompile whatever you might want.
This may be a little bias but this is my understanding:
Flatpaks were the solution for reducing the duplication in Appimages and providing an automated way to do security updates. Flatpak got a chance to learn from Snap.
Snaps are basically a proprietary approach to creating and distributing Appimages that were created prior to the current Appimage tooling. They got to learn from the first generation of Appimages and decided to deviate from them early on.
Appimages were a stupid simple approach to a complex issue. Initial tooling was rough though and a lot of people, while they liked the idea, hated the requirements. Basically setting up an Ubuntu 18.04 environment for packaging was the only way to guarantee a truly portable image.
It left room for improvement and so decisions were made to try and fill that room. They were never bad, and devs weren’t really trying to do anything other than simplify the creation and distribution of existing Appimage functionality.
I still think flatpaks are the closest to the ideal solution but again, I’m biased.
openSUSE’s Richard Brown has given multiple talks over the years comparing these three. I’d suggest anyone to look at those for a great rundown on how these universal package managers compare to one another. His most recent talk can be found here; in which he actually does some kind of recap as well.
My problem with all three is that trust, security, quality comes from package to package. There is no standard, and packages are isolated from each other. If there is an issue between multiple apps, developers just start pointing at each other. With distro like opensuse I know everything is tested properly including security bug coverage and package interoperability. I can even check it myself at openqa.opensuse.org
With flatpaks I am at mercy of each developer not being lazy and well informed about all current issues.
Theoretically, when it’s up and running. How do you intend to get to that state, though? One has to install it first. And I think that alone is a massive filter.
inb4 someone says:
I did it, and I found it extremely straightforward.
I’m sure you did, Mr. “I hate how much Reddit is pandering to the braindead to the point that I joined an experimental social media platform”, I’m sure you did. Clearly, you are a qualitative sample of people who use Windows computers.
Sarcasm aside, look at how railroaded and coddling the Windows 10 installer is. I am certain a large plurality of Windows users’ initiative would completely evaporate having to navigate that. And now we want to throw a Linux installation at them?
Factor on top how the vast majority of computer users in all forms that computers take simply take for granted that the OS the computer comes with is a part of the computer. Normal people don’t upgrade OSes unless the OS itself railroads them into it (which Win10 already does aggressively whenable), or they buy a new PC that happens to come with it pre-installed. The knowledge required to negotiate an OS wipe and reinstall is not something most people possess, and I expect presenting that knowledge to them on a silver platter is something they’d hastily recoil from.
We’re in a catch-22 here. Even if all the pieces for the fabled Linux Desktop are arguably here, actually getting it into the hands of those who would benefit from it most remains prohibitive.
This is also ignoring the elephant in the room: A massive swath of these Windows PCs (Maybe even most of them? I have no backing figures, just a hunch.) are not personal computers, but office PCs that belong to a company fleet. There’s a reason Windows utterly dominates the office–Windows rules the IT sphere, at least where personal devices given to employees are concerned. Active Directory? Group Policy? Come on, guys. None of the companies who depend on these management tools are pivoting to Linux anytime soon, and you know it. And if their cheap, bulk order desk PCs don’t support Windows 11, they are absolutely getting landfilled.
The only effective mitigation I could think of would be to start a charity that takes obselesced office PCs, refurbishes them to Linux, and provides them at low or no cost to those who need a low cost or free PC. It would get Linux into more hands, but it would also strengthen a stigma that Linux is nothing more than the poor man’s OS. The Dr Thunder to Window’s Mountain Dew.
The way I see it is 240 million computers have two different courses. One is to just drop the hardware, the other is to update the software. What is granted is that, if you decide to update the software, you will have to research how to do it. You may end up just buying new hardware, or hiring someone to do the job, but there’s a chance to just go for it.
If people go for upgrading their OS for themselves, then they have to research how to do it, and when they do it, they will probably find out that some thing called Linux could fit their needs. If Linux enthusiasts don’t say shit, they will install Windows for sure, otherwise, maybe they will install Linux. I’m not saying this is the year of the Linux desktop and/or this is a huge opportunity to convert PCs to Linux.
I recently installed elementary os on a Dell laptop and Fedora on an older super shitty Dell laptop. Honestly I know it was a bit of luck but both installs could’ve hardly gone smoother. The install itself? Easier than windows and absolutely faster. Out of the two computers, assuming patience with learning a new thing, there was barely friction and this could’ve been done by most people with a little gumption.
I told the laptop owners that the touch screen wouldn’t work on the newer one. Just assumed that was a weird hardware software combination that would be very difficult if not impossible to get working. They were ok with that because essentially both computers were slow trash and we were trying to salvage them. Lo and behold though-- the touchscreen worked out the box with literally no effort. It didn’t behave how the owners wanted (like it did on windows), but 15 minutes of googling and a reboot and the touch screen was working exactly as it did on windows. Obviously Linux isn’t for everyone but when 1) it’s gotten this good and 2) the alternative is trashing a computer, it really saddens me to see a long diatribe shitting all over the possibility of salvaging a lot of these computers rather than throwing them away.
this could’ve been done by most people with a little gumption.
My point was not that installing Linux is intrinsically difficult, it’s that people who have “a little gumption” to figure it out are a far rarer breed than you seem to believe.
Also, I wasn’t intending to “shit all over the possibility” of salvaging old PCs. I support that! I think Linux (Mint, specifically) would be a perfect drop-in for most light use Windows users, as it is a stable and friendly solution to common needs. I was just raising the part most people overlook: actually getting it running. Not just the technical challenges, but the mental ones, too. The people who stand to gain the most from a free and stable OS are paradoxically the same people who are the least equipped to find and set it up.
We have a long road ahead of us to normalize the procedures of obtaining and installing a new OS in the public eye. Linux can be as user friendly as you like, but it’s all for nothing to the average Joe if he doesn’t understand how to get it. Or why he should even bother getting it, for that matter.
I guess by “Windows installer” I actually meant the setup wizard that runs the first time you boot an OEM machine from the factory. The thing 99% of Windows users actually see. Not sure if that’s significantly different.
And if you want to claim even that is terrible, I really have to question by what metric you’re measuring. Is it because it doesn’t give you the options you want, like creating an offline user account, or because it’s full of bloat screens for products like OneDrive? Sure, I guess. But I’d say having these criticisms are very specifically the kind of things that make you an outlier compared to the average person I’m talking about. These are things normal people don’t bat an eye at. Giving them more control just intimidates them.
And yeah, I’m sure you agree, “provided [they] can create a USB” is a huge ask for a lot of people. Child’s play for us, but weird and scary black magic to most. Guides can and do make it crystal clear what to do, but as long as it feels spooky to download and run the magic programs, no one will feel comfortable doing it.
the setup process for the first run of a new windows machine is called the out of box experience. its truely awful in the way it railroads you but a setup process is a lot more approachable than an installer.
Honestly people who can’t open a PDF and refuse to learn shouldn’t use a computer in the first place.
But, assuming most people aren’t complete morons and can actually do stuff if they decide to sit down, Google how to do it and actually do it instead of declaring “I am stupid” and not even try, then even just telling or better yet showing people there’s an alternative to throwing your perfectly functioning laptop and buying an expensive new one will go a long way to get new users and save some e-waste.
Of course, installing an OS isn’t easy, for linux specifically the hard part is entering the BIOS to disable secure boot and then go into the boot menu to select the USB. After that it’s a lot easier. Of course they can also be directed towards Linux computers, like system76’s, or Tuxedo’s or Laptops with Linux’s if necessary.
Naturally to get Linux to dominate the desktop we need the EU to say “know what fuck you, your PC can’t come with a preinstalled paid OS” paired with people learning Linux is an option when buying the PC and seeing that it is free vs what like 135€?
But, assuming most people aren’t complete morons and can actually do stuff if they decide to sit down, Google how to do it and actually do it instead of declaring “I am stupid” and not even try
Extremely charitable assumption, I’d say.
I do think most people do in fact possess the ability to follow instructions and succeed at installing Linux from USB. But it all falls apart at the key word “decide”. Very few people choose to devote the low, but nonzero, effort required to pull it off.
for linux specifically the hard part is entering the BIOS to disable secure boot and then go into the boot menu to select the USB
I would say, for the demographic I’m thinking of, the hardest part is actually getting the installation media in the first place. Not because it’s challenging to do, but just getting over the mental barrier of this (to them) extremely unorthodox method of installing software.
Like, first you have to find the thing and download it. Which, fine, that’s typical so far But the thing you download isn’t some .exe you run. No, you need to put it on a flash drive. So you need one of those lying around, either empty or with nothing important on it. But you don’t just copy the installl file onto it the ““normal”” way, nooo… you also have to separately download some strange utility that burns it onto the flash drive in some special way or else it won’t work. Only then do you have to tickle the BIOS.
I understand if you or anyone else reading rolls their eyes at that description because these steps are so boneheadedly simple. And I agree, they are. But it’s not so much a question of whether it’s hard to do, it’s a question of whether it feels safe and natural to do. Which, to you and me, it is. But to the kind of person who, as you say, shouldn’t even be using a computer in the first place (but they must anyhow, because trying to live in our modern information age society without one closes too many doors), it’s an uncomfortable, dark ritual.
Get them to flash it with Ventoy, then they can copy and paste the ISO. Bit easier for dummies and let’s them put more .iso files in it without the “but why can’t I do more than one”.
The BIOS is a lot scarier to noobs. You have to press a button very fast, go into a scary menu that looks different than anything else and full of weird options, to disable something that has secure in its name, and then something about boots to turn on the PC from the USB? But my computer has no boots!
Now this was made easier by windows which can be told to reboot directly on the BIOS or media drive, but it is still more daunting to newbies than to use a program to flash a USB in my experience.
Of course, that’s why we need to be there for tech illiterate people to teach them how to read, without assuming they’re mentally challenged because they’re not stupid they just lack the willingness to try something that looks scary the first time you do it (like most things in life). If I got my mother, who can barely figure out how to open the file manager on windows, to install Linux Mint and some software in it over a phone call, it’s possible with anyone.
I’m reading and agreeing, really vibing with what you’re saying. Then you have to go and fumble it on the last line. Come on, man! Every soda afficianado knows Dr Thunder is the poor man’s Dr Pepper
Edit: My bad. I did the thing where I read like the first two sentences and didn’t read the rest. Reading the rest of the reply basically acknowledged my refute.
The majority of this waste is coming from businesses that now need to upgrade. That’s why there are IT departments to figure it out for the tech illiterate. As long as they can open their email client, a text editor and excel, you’ve overcome 90% of what a business needs for their computers.
You are right, Grandma Jones with her 800x600 resolution screen, 10 downloaded tool bars and Microsoft Edge ain’t going to get it, but Grandma Jones is still using XP, a CRT and a Gateway Computer she bought back in 2006
But a ton of people can open a PDF and will be able to select an USB stick from menu and click next, next, next… It’s not completely different, you still use a mouse, a keyboard, you click on things, you get some feedback from it… When a new kind of mobile app arrive, I can see someone using no more than 5 apps in life having problems, but this doesn’t mean only them exists, we do not talk about switching everyone here. People change houses, how are they figuring out where is the toilet if doors have different color and are in different positions?
Also a reason why any software like Microsoft Windows or Office should be banned from public education, especially primary schools.
Pretty much this. Linux users often forget that, when it comes to specifically operating systems, the vast, vast majority of people are used to what they know, and literally instinctively reject change of any kind.
Most people do not even know what an operating system /is/.
Any one who has ever worked in IT knows this, that the vast, vast majority of computer users are laughably technically incompetent, to the point that they usually get angry when you try to explain basic foundational concepts to them.
Then add on top of that decades of marketing that conditions most of the small minority of people who bother to attempt to learn anything about software and hardware into basically believing slogans, tag lines, and going gaga for tech that has some acronym or cute name, which they understand nothing about beyond the most surface level description.
Summing up, while it is possible to convince a person to switch to a new OS, it is maddeningly difficult at best nearly all the time. People basically demand a perfect product, even though they cannot even come close to beginning to describe what its features would be, and will instinctively assume they know more than actual tech experts all the time.
That being said, if you could run a business of basically buying or acquiring used laptops for cheap, refurbishing them with a stable linux OS, and then reselling them, you might be able to have a successful business, but the problem is that flashing OSs all day long is extremely, mind destroyingly boring and unfulfilling.
My 80 year old dad has been using a XUbuntu for years and never even noticed. The only reason he knows he’s using Linux at all is because he saw a news story about Windows tracking and asked about it. He was quite happy not to be affected.
As a long-time Vi user I would highly recommend giving it a shot for a solid month to see if it clicks for you. It’s genuinely an excellent way to edit text beyond “just typing words” - it’s a huge productivity boost once you’re competent with even some of the basic commands. There are just soo many combineable short-cuts at your fingertips that once you get a few of them under your belt you’ll go nuts without them. And the simple macros you can write can allow you to do mass manipulation of multiple lines in ways that are just so simple (e.g. “add quotes around every line and a comma at the end”).
Dive in beyond the basic “hjkl:q” though.
Which version of vi you use won’t largely matter. As a bonus most IDEs support a good subset of vi commands so your skills become transferable. I use PyCharm and other Jet Brains IDEs all the time and ideavim is “good enough” for what I do.
My comment on Emacs is a bit flip - but it’s based on what I’ve seen and from my biased vi-using POV. Almost every IDE or developer-focused app I use has some sort of Vi keybinding either available as a plugin or built-in. And they’re often pretty good. Even joplin which is a note-taking app has Vi keybindings built in (though to be fair it also supports emacs keybinds).
If anything Vi keybindings have become more popular over time not less. “back in the day” getting any sort of Vi keybindings working with IDEs was either impossible or painful and limited. These days it’s a checkbox. The nice thing is I can take a good sub-set of the Vi bindings between many editors and IDEs. Ideavim’s implementation is quite good and even supports vim macros which are amazing once you get the hang of them.
Ah okay. It has become a lot more clear what you meant. And I agree; implementation for Vi(m) keybindings is ubiquitous while the same can’t be said for Emacs’. But, while Vi(m)‘s keybindings define a lot of what it is and why people love to use it, the same simply can’t be said for Emacs’ keybindings. I’m sure there’s someone out there that absolutely loves it, but it doesn’t come close to how Emacs’ modeless nature allows almost limitless extensibility or how ‘smart’, ‘useful’ and just plain excellent its org-mode is.
It’s a long tutor go through with some bonus advanced tweak, and the explanations clearly helps remembering everything easily. If I knew it when I’ve started that would have saved me so much time and helped me from getting into bad habits I then had to fight against.
I have used vim/neovim for years and cannot go back to a non-modal editor. But TBH I got sick of its configuration. You need far too many plugins and config to get things into a sane working order to be usable on a day to day bases for any type of development. It takes ages to learn and become as productive as you were before and a lifetime to refine.
For the past year or so I have switched to helix and don’t plan on going back to vim/neovim as my main editor ever again. It is a modal editor that is a mix between Neovim and Kakoune editors. It comes with batteries included, and supports an IDE like experience out the box with treesitter syntax highlighting and LSP language integrations out the box. My whole config is like 6 lines long yet it works far better then my old neovim setup with a multitude of plugins and hundreds of lines of config. It is like what AstroNvim, LazyVim, LunarVim and NvChad etc are trying to do to vim/neovim but instead has built in support for all the things they rely on plugins for. Which means there is no need to constantly keep them up to date nor weird edge cases where one plugin does quite integrate with another smoothly. It is all built in so things are designed to work well together.
But it currently does lack any plugin support. So if something is not built in that you want you have to make due without it (well, except language support, adding new LSPs is not too hard). And plugin support is being worked on so even this will be a non-issue hopefully in a year or two.
I have used vim/neovim for years and cannot go back to a non-modal editor. But TBH I got sick of its configuration. You need far too many plugins and config to get things into a sane working order to be usable on a day to day bases for any type of development. It takes ages to learn and become as productive as you were before and a lifetime to refine.
Interesting. Though I can definitely see where you’re coming from. Uhmm…, have you used any of the Neovim distributions to make maintenance easier?
For the past year or so I have switched to helix and don’t plan on going back to vim/neovim as my main editor ever again.
Both Helix and Lapce have certainly piqued my interest as FOSS alternatives to VS Code. However, both have issues related to how well their current Vi(m) implementation is. As you’ve touched upon it; Helix’ keybindings and ‘sentence-structures’ are different to those found on Vi(m).
Furthermore, neither of the two have existed long enough to be able to profess any statement regarding their longevity. Like, there’s no guarantee that I can keep using either of the two 20 years into the future. While no program is able to 100% guarantee that, undoubtedly, the track records for both Emacs and Vi(m) testify that -if anything- they would be the most likely ones to survive 20 years down the line; like how they’ve done for the last couple of decades.
I appreciate the input, but I simply don’t want to invest in a program whose future is very unclear to me at this point in time.
Interesting. Though I can definitely see where you’re coming from. Uhmm…, have you used any of the Neovim distributions to make maintenance easier?
I have, but dont like them. They all have weird install processes and need to manage their own set of configs on top of vim in your home dir. This makes them very hard to properly package or integrate with config management tools and require a different flow to keep them up to date from the rest of your system. They combine sometimes hundreds of plugins, of which only a few are designed to work together and while a lot don’t try to step on each others toes that many I often find issues in niche use cases. And when you do find an issue, or something you want to tweak you have 100s of plugin configurations that you need to learn about to figure out just what is doing what and which options you need to tweak.
It is all just far more hassle then I want out of my editor these days. Helix just works out the box and has basically everything I want from a editor nicely integrated into it.
As you’ve touched upon it; Helix’ keybindings and ‘sentence-structures’ are different to those found on Vi(m).
They are a little different and take a bit to get used to. But IMO I find them far nicer way to work. It is very nice being able to see what your action is going to effect before you do it - unlike in vim when you just hope you have hit the right movement keys. And it also pops up a small window for leader keys (like space) which show you what you can do with it making it far more discoverable then vim/neovim without needing to pour though hundreds of pages of manuals to even get a glimpse of what it can do or needing to go back to them to remember something that you dont use very often. It is not trying to be a 100% vim compatible layer, it is trying to give you the best experience it can out the box. And I think it does that quite well (at least once you get used to the new way of working - which does not take that long).
Furthermore, neither of the two have existed long enough to be able to profess any statement regarding their longevity. Like, there’s no guarantee that I can keep using either of the two 20 years into the future.
20 years is a long time. I can see it existing for the next 5 years at least, and looks to be on the trajectory to be a long lasting product. Though no one can say for sure. But, the more people using it the more likely it is to stick around for the long term. Just about everyone that I have seen use it over vim have highly praised it and it has quite a few contributors already (700+ on github), which is very impressive compared to vim (about 300), and neovim (more then 1100).
And keep in mind that vim has been around so long thanks to a single maintainer, Bram Moolenaar, who passed away this year. Which is not a great sign for vims future for the next 20 years.
I appreciate the input, but I simply don’t want to invest in a program whose future is very unclear to me at this point in time.
The investment in helix is far less then that you need to put into vim/neovim due to all the configuration you need for them. Well worth it for how active it currently is and how many people are putting effort into it.
Wow! Excellent and thorough response. Thank you so much for taking your time 😊!
It is very nice being able to see what your action is going to effect before you do it - unlike in vim when you just hope you have hit the right movement keys.
That’s awesome! Which does beg the question why the others haven’t implemented such functionality (yet)?
And it also pops up a small window for leader keys (like space) which show you what you can do with it making it far more discoverable then vim/neovim without needing to pour though hundreds of pages of manuals to even get a glimpse of what it can do or needing to go back to them to remember something that you dont use very often.
Interesting. If I’m not mistaken, both Spacemacs and Doom Emacs offer similar functionality through the emacs-which-key package. I would think that Neovim should have some plugin that does something similar, but perhaps not.
Just about everyone that I have seen use it over vim have highly praised it and it has quite a few contributors already (700+ on github), which is very impressive compared to vim (about 300), and neovim (more then 1100).
I didn’t expect for them to be so many 😜. Hmm…, food for thought; thanks for pointing that out!
And keep in mind that vim has been around so long thanks to a single maintainer, Bram Moolenaar, who passed away this year. Which is not a great sign for vims future for the next 20 years.
I definitely understand that Vim’s future is lot less certain compared to two years ago due to the passing of Bram Moolenaar. However, and I might be wrong on this, but I feel as if Vim has reached a critical mass of following such that it’ll probably continue to exist in some healthy form regardless.
In general I think you make a excellent case for Helix. I’m actually considering if I should reconsider it (if that makes sense). Uhmm…, but two questions remain:
I shouldn’t expect remote accessing some random server will allow me to use Helix, right? Is there any other way to make this work? Or…, should I just learn both Vim and Helix’ Vim + Kakoune amalgamation?
Vim is literally ubiquitous and plugins that enable its features can be found on almost any ‘platform’. It’s unrealistic to expect Helix’ adoption to be at that rate (yet). However, would you happen to know if at least the likes of VS Code and/or Jetbrains’ IDEs support it? And if so, how good their support/implementation is?
I shouldn’t expect remote accessing some random server will allow me to use Helix, right? Is there any other way to make this work? Or…, should I just learn both Vim and Helix’ Vim + Kakoune amalgamation?
That all depends on the server in question and if you can install things onto it or not. Some points to consider though:
If the server is restrictive on what you can install then you likely are stuck with basic vim or worst only vi - and without all your configs it is a very different beast of an editor anyway and something you will need to get used to everytime you jump on the server.
If you can install stuff to your home drive then it is quite easy to get helix running - it is a single binary with some language assets (requires one env var to point to them). So is trivial to get working from your home dir without a package manager.
IMO you should not be editing things on a server often enough to worry too much about what editors it has on it. Ideally with things like ansible you should not need an editor on it at all.
Vim is literally ubiquitous and plugins that enable its features can be found on almost any ‘platform’. It’s unrealistic to expect Helix’ adoption to be at that rate (yet). However, would you happen to know if at least the likes of VS Code and/or Jetbrains’ IDEs support it? And if so, how good their support/implementation is?
Do you mean vi input mode in other editors? That is one downside - you wont find it anywhere yet. Though since learning it I have not needed to go back to other IDEs like VS Code or Jetbrains, WIth inbuilt LSP support its language integration is just as good as VS Codes as it is working off the same essential language servers. Though it does seem that at least vscode has a plugin for kakoune keybindings which are more similar to helixs.
Though what you will find is a lot of the keys are very similar between vi and helix, so apart from the big action > movement vs selection > action and a few other things they dont feel too dissimilar from each other (things like basic movement, ie w for word, e for end of word, or text objects are essentially the same).
and without all your configs it is a very different beast of an editor anyway and something you will need to get used to everytime you jump on the server.
Good point.
If you can install stuff to your home drive then it is quite easy to get helix running - it is a single binary with some language assets (requires one env var to point to them). So is trivial to get working from your home dir without a package manager.
I’m impressed. Thank you for pointing this out.
Ideally with things like ansible you should not need an editor on it at all.
Hmm…, honestly, I haven’t yet done a lot of things with Ansible yet. Perhaps it’s time to go explore that rabbit hole as well 🤣. Thank you (once more) for pointing this out!
Which does beg the question why the others haven’t implemented such functionality (yet)?
Helix continues the work previously done by Kakoune (some people prefer Kakoune over Helix anyway). As to why - because it, like any other computer science topic, is a topic of active research, and Kakoune is the next generation of research into modal editing. Disclaimer: I use Neovim because it works well enough for me (it does offer more configurability, but I doubt I use it that much) and I don’t want to learn another set of hotkeys (which is similar enough, but still different).
I shouldn’t expect remote accessing some random server will allow me to use Helix, right?
That’s right, but as a Neovim user, it’s hard for me to use Vi, because it lacks many features, and I don’t know which ones. When you start going from basic to advanced knowledge, it sadly doesn’t translate. Of course, I would still pick Vi over Nano any day.
There’s a similar problem with many shells (fish, readline (bash)) that don’t fully implement Vim’s features, so their Vi mode sucks, but I still use it.
As to why - because it, like any other computer science topic, is a topic of active research, and Kakoune is the next generation of research into modal editing.
Interesting. First time I’m hearing this, but I’m very interested to learn about it. Thank you for mentioning this!
That’s right, but as a Neovim user, it’s hard for me to use Vi, because it lacks many features, and I don’t know which ones.
Very interesting. Did you first start with Vim or Neovim?
As you’ve touched upon it; Helix’ keybindings and ‘sentence-structures’ are different to those found on Vi(m).
Unless you really want vim bindings, try them out. At least Helix is based on the Kakoune editing model which is the editor I use, and I much prefer the way Kakoune works over vim, while still being close enough so that you can pick it up quickly if you already know vim and the other way around.
I kinda do for how ubiquitous Vim keybindings are.
try them out.
Regardless, I think I will try it out after I’m at least somewhat productive with Vim.
I much prefer the way Kakoune works over vim
I think preference is generally subjective. So you’re completely in your right to prefer Kakoune over Vim (and vice versa). Though, if possible, would you mind elaborating what you prefer exactly and why?
while still being close enough so that you can pick it up quickly if you already know vim and the other way around.
I kinda do for how ubiquitous Vim keybindings are.
Yeah, that’s a great reason to stick with it. It’s unfortunate that nothing really has Kakoune bindings other than Kakoune.
I think preference is generally subjective.
Of course, I know preference is subjective. That’s why I didn’t say “it’s better” :P Could very well be that vim works better for you.
The big reason I like them more is the concept of selections. Basically instead of a cursor you have a set of selections with start and end position (which could be the same position for a normal cursor), instead of having the object to delete as a parameter. For example, to delete two words it’s ‘d2w’ in vim, while it’s ’2wd’ in Kakoune. And after you type the ‘2w’, the selection shows what you’re about to delete, because it’s a separate command. It’s more useful when you’re operating on larger blocks of text, of course, or chain multiple commands together to create the selection you want. Sure, you can use visual mode in vim but it feels like an afterthought in a lot of ways.
I’ve already mentioned it but you can also have multiple selections at the same time, which I don’t think vim really does (I could be wrong though). This makes bulk operations really easy since they work exactly the same as operations on a single selection. For example, if you want to prepend let’s say “foo” to the next 10 lines, in Kakoune it would be ‘9CIfoo<esc>’ where C creates a selection one line under the current one, and I works the same as in vim. I believe you’d have to use macros for that in vim, something like ‘qqIfoo<esc>jq9@q’.
Those two are I think the main reasons I like Kakoune.
Doesn’t that disrupt muscle memory?
I haven’t really had problems with it, at least. Maybe because I’ve used vim for a long time before Kakoune. TBH I also don’t really use vim a lot anymore except on one remote machine that isn’t mine.
It’s unfortunate that nothing really has Kakoune bindings other than Kakoune.
That’s indeed very unfortunate…
And after you type the ‘2w’, the selection shows what you’re about to delete, because it’s a separate command.
That genuinely seems like very useful functionality. Thanks for pointing that out!
Sure, you can use visual mode in vim but it feels like an afterthought in a lot of ways.
Could you perhaps give some examples so that I can better understand/grasp why you feel that’s the case?
Those two are I think the main reasons I like Kakoune.
I haven’t really had problems with it, at least. Maybe because I’ve used vim for a long time before Kakoune. TBH I also don’t really use vim a lot anymore except on one remote machine that isn’t mine.
I am very grateful to you for sharing your experiences as a long time Vim user that currently prefers Kakoune over it. It has definitely impressed me and made me a lot more curious towards it. And I genuinely feel like I should think this over properly before I rashly commit to Vi(m). Thank you for raising such awareness!
Could you perhaps give some examples so that I can better understand/grasp why you feel that’s the case?
Hmm, one I guess is that it is not “permanent” and deactivates after one command (in Kakoune, you have to explicitly do ‘;’ to collapse the selection to its end (which you can flip with the start using ‘alt+;’) or move around without extending the selection). That’s really the only thing I can think of at the moment and I feel like often it really doesn’t matter tbh, so maybe I was just talking out of my ass there a bit lmao.
Apparently you can quickly reselect it in vim with ‘gv’ though, which I never checked until now. That’s useful to know.
One thing I’m really missing from vim though is that it can list directories, has a hex editor, and can read a bunch of other file formats. I think it can even edit remote files over sftp, but maybe I’m confusing that with Emacs. Kakoune just does local text files (though you can of course do stuff like ‘%|xxd’ to pipe the file through xxd to get a hex view, edit and then ‘%|xxd -r’ and save but that feels very very sketchy).
Hmm, one I guess is that it is not “permanent” and deactivates after one command (in Kakoune, you have to explicitly do ‘;’ to collapse the selection to its end (which you can flip with the start using ‘alt+;’) or move around without extending the selection). That’s really the only thing I can think of at the moment and I feel like often it really doesn’t matter tbh, so maybe I was just talking out of my ass there a bit lmao.
Regardless; thank you for mentioning this!
Apparently you can quickly reselect it in vim with ‘gv’ though, which I never checked until now. That’s useful to know.
Hehe, thanks for sharing that; might become useful soon 😅.
One thing I’m really missing from vim though is that it can list directories, has a hex editor, and can read a bunch of other file formats. I think it can even edit remote files over sftp, but maybe I’m confusing that with Emacs. Kakoune just does local text files (though you can of course do stuff like ‘%|xxd’ to pipe the file through xxd to get a hex view, edit and then ‘%|xxd -r’ and save but that feels very very sketchy).
Until yesterday I knew almost nothing about Kakoune. But I’ve since tried to do some reading; while there’s still a lot to uncover and/or explore, I feel as if it tries to offer a more focused experience (for better or worse).
Just download .exes for windows and run them with WINE. Don’t have a single snap or flatpack application. If it doesn’t run then u didn’t need it in the first place 👉😎👉
Edit: someone DMed me and took this comment seriously. Bless ur heart
It’s clearly a move to gain control of what people’s computers will be allowed to run and what information they’ll be allowed to see.
There were already attempts to implement this at the start of the consumer internet days by Microsoft and others, which failed then because many early internet users were paying attention and knew what was being attempted. This time I’m not sure that we’ll be able to stop it without structural changes to society.
I’ve had windows 10 tell me I can’t upgrade to windows 11 because my SSD was formatted incorrectly even though it had always ran windows 10 fine. None of this was properly explained to me or how to fix it. By the time I finally got it working I didn’t even want windows 11.
Vi (and other mode-switch vietnam-era editors with cult like followings of which there are none) really impaired my first few weeks of comp sci until a t-a showed me there are options. Modal editors were neat when required, but then we got full keyboards and control keys.
Man, does vi suck, but its thuggy PR volunteers do a good job of keeping people from assessing alternatives.
How long did you try using Vi (or any other “mode-switch vietnam-era editors with cult like followings”)? Have you experimented with any starter kit/distribution/config (or whatever) to ease you in? What do you use now?
Btw, I agree that stand-alone Vi probably is too far of a departure from modern IDEs. As far as I know, it’s not even possible to give it IDE-like functionality apart from a few basic ones. Both Vim and especially Neovim do a better job at bridging the distance. FWIW, Vim only exists like for three decades now, while Neovim’s first release happened in 2014; almost 10 years ago.
Hi. I’ve briefly shared my experience with neo(vim) and emacs here. Going into all the details would require writing an encyclopedia because they’re both so vast topics. I think the main factor of choice would be to know if you prefer to build your own perfect tool with just what you need and expand as you go (i.e. neovim) or just have a do-it-all ready tool right out of the box (i.e. emacs). Both will require some coding and maintenance anyway. In that regards, I personaly found neovim to be easier and more reliable but mileage may vary based on your needs and preferences. After years using vim 20 years ago, I made a break. Then I used emacs for a year before eventually going back to neovim. I would certainly recommend it vs vim and I would suggest starting from scratch (no lazyvim or similar) so you clearly understand how things work. This will certainly be useful in the long run anyway and that’ll eventually save you time. Note that I’ve also tried welcome screens (startup) but really couldn’t justify its use so I removed it after few months.
I’ve briefly shared my experience with neo(vim) and emacs here.
Thanks for sharing that! I’ve just read through it and it was a very interesting read. Would you mind elaborating upon the following statement?
“the lack of uniformity across plugins coding which sometimes created some conflicts”
I think the main factor of choice would be to know if you prefer to build your own perfect tool with just what you need and expand as you go (i.e. neovim) or just have a do-it-all ready tool right out of the box (i.e. emacs).
That is indeed something that concerns me regarding Emacs. Like being able to surf on the internet or using it as a email client isn’t quite what I expect out of my IDE 😅. I guess the extensibility should allow ‘minimal’ installations, but this is something I should read more into. Thanks for pointing that out!
My statement about the lack of uniformity was in regards to several issues I had with some plugins in emacs. Even my friend who codes his own plugins for emacs was of no help because 1) there is too many approaches and dependencies to write plugins, 2) there was no solution. Also, there are too many plugins to serve the same purpose and I found it difficult (compared to neovim) to figure out the difference between them. At least twice I also experienced conflicts between plugins. Finally, the level of customization was also less granular than what offers neovim. Again, I can see why emacs is appealing to some. It’s just not for me. As I like to say, the number of options available in the Linux world is one of the most beautiful things that makes this OS the only one you can tweak perfectly to any user’s needs and preference.
I would add that neovim and emacs both have a steep learning curve but I personaly found the level of support and core and plugins documentation for neovim more accessible, readable, and better organized.
I completely share your vision about what an IDE should be doing. I’m old school and adhere to the “do one thing but do it right” philosophy. Also, I hate relying on one tool for several needs because if anything goes wrong it has multiple impacts. As a side note, I use neomutt as my email client and you can nicely couple neovim to it to write your emails ;)
Also, there are too many plugins to serve the same purpose and I found it difficult (compared to neovim) to figure out the difference between them.
Interesting.
Finally, the level of customization was also less granular than what offers neovim.
Very interesting. I’d love to hear more about this. Could you elaborate?
I would add that neovim and emacs both have a steep learning curve but I personaly found the level of support and core and plugins documentation for neovim more accessible, readable, and better organized.
I wouldn’t be surprised if this is in part attributable to the fact that Emacs is both an older project and is generally-speaking a bigger and/or more capable piece of software.
I completely share your vision about what an IDE should be doing. I’m old school and adhere to the “do one thing but do it right” philosophy. Also, I hate relying on one tool for several needs because if anything goes wrong it has multiple impacts.
I’ve often heard Emacs users pose the argument that Emacs as an Elisp interpreter does just one thing. It’s just that this single thing allows the myriad of functionality it offers. So in that sense comparing it to a terminal/console seems more apt than comparing it to a text editor. I wonder what you think of that argument.
As a side note, I use neomutt as my email client and you can nicely couple neovim to it to write your emails ;)
Hehe, that’s cool! Currently I’m really happy with Thunderbird so I don’t expect to move away anytime soon, but I’ll keep it in mind.
I’ve often heard Emacs users pose the argument that Emacs as an Elisp interpreter does just one thing. It’s just that this single thing allows the myriad of functionality it offers. So in that sense comparing it to a terminal/console seems more apt than comparing it to a text editor. I wonder what you think of that argument.
I only used emacs for a year so I may be wrong but speaking only about how I used it and my current workflow I don’t see a difference. Looking at the usage (and not the code), my very first impression of emacs was that it’s acting as a terminal multiplexer which I was used to and so I liked this aspect. Anytime you need to do something that goes beyond the tasks of an IDE (calendar, email…) you switch window/panel (I’ve always been confused with the specific emacs terminology). That’s exactly what I’m doing with Tmux where I run neovim and call other apps with a single keybinding. Then I can freely switch from one to another, close one, recall it in the state I’ve closed it…
Again, this is related to the philosophies of emacs and neovim (i.e. do-it-all or do one thing). While neovim is “only” an IDE, emacs goes beyond, and for me this is not a negative criticism of either app. You build a tool with the coding language you need to implement some functionalities. In that sense, to compare apple to apple, emacs has to be compared to neovim coupled to a terminal multiplexer.
Hehe, that’s cool! Currently I’m really happy with Thunderbird so I don’t expect to move away anytime soon, but I’ll keep it in mind.
I used Thunderbird as well and did the switch mainly to allow me to achieve the workflow described above. I do most of my tasks in the terminal. Neomutt would certainly be one additional layer of complexity in your transition to an IDE, unless you chose to use emacs for your emails. Actually configuring emacs as an email client or going with neomutt is pretty similar. But at the end - and this is an example of the higher level of granularity I mentioned earlier - neomutt is more customizable.
Talking about the level of customization of the IDE functionality only, the plugins I use offer more configuration options in neovim as well.
Orgmode is also one (the?) big star player in emacs and neovim is trying to attract some users by developing a similar thing here or there but this is not something that would benefit to my workflow. This is maybe one of the reason why people choose emacs vs neovim and why I could quit emacs easily. Going back to the coding language, you can see that the use of lua opens new doors to the original vim. What I appreciate though is that you don’t have to implement any features if you don’t use them in neovim so I can keep my system limited to my needs. This is also seen as a bad thing by some when you start because emacs is capable of quite a lot with a fresh installation while neovim can barely open itself ;)
Overall we’re all sharing personal experience so no generalization should be extrapolated from single visions and I’m aware of my own bias and preference for singl- task, lightweight, fast tool.
I’m so grateful for the time it took you to write this down. Thank you so much for your contributions in this conversation! I’ve greatly enjoyed reading every one of your replies. While I am currently not in the state to make any promises related to sticking to Neovim in the long run. I do think that I’m at least very interested to explore its possibilities. Have a good one! Cheers!
It’s always difficult to find a good starting point but remember that you’re not married to your apps so you can easily switch from one to another and maybe come back later. Over the years, I’ve seen most of Linux users going that route because 1) it’s fun and you learn a little bit from each experience, 2) Linux users are generally curious, 3) some apps may be more suitable to your workflow at a given time but your workflow may change over time, 4) Linux offers us so many options so it’s like unleashing kids in a toys store, you want to try everything :)
Yup, I think you’ve hit the nail on its head. I’ve decided on using both and explore their possibilities and find how they can be best utilized for my workflow. Thank you for the excellent engagement!
linux
Oldest
This magazine is from a federated server and may be incomplete. Browse more on the original instance.