Get the top HN stories in your inbox every day.
willbw
varispeed
From my experience out of the box you get poor performance and you have to spend a lot of time figuring out how to change configuration to improve it as knowledge is scattered in many places and not always up to date. Then it still likes to stall from time to time or sometimes doesn't register key presses properly. It's a poor user experience, but even worse is that alternatives are often worse. I wish there was an editor with low latency, smart search, some proper file system database, so it doesn't take ages to open a directory and built in VCS support, that works quicker than manually issuing commands in a terminal.
I think the success of VSCode is because you can easily open it in your current directory from the terminal and it will show you your folder etc. without having to setup a project first and that you are ready to type you code quickly after opening. If I had to open PyCharm every time I want to try some Python in a new directory, I would probably start questioning my life choices. Before VSCode I would just use nano or Sublime.
nightowl_games
JetBrains products _are_ pretty much the best. I think Android Studio + Kotlin is the best, most impressive IDE experience I've ever had. Mostly because Android Development in general is kinda hard, and Android Studio cleans it all up so nicely for you. It really outshines XCode in this regard.
I've never used CLion but I really want to.
That being said, I think it's clear that VSCode is, and will remain, dominant.
First: its free.
Second: it's simpler.
That alone is enough to make any product dominant. The fact that's it free, simple, and pretty much just works is pretty stunning.
VSCode for Unity Game Development kinda shocks me how you can literally install the IDE while the game is running and successfully attach a debugger. It's pretty wild how reliable it is.
I'm not a VSCode fan boy. I find that it lags on my PC sometimes. I kinda hate the "notifications" that it pops up with. And I don't like the auto update mechanism or the Welcome screen, but overall VSCode (or Codium) is clearly the next level of IDE.
I think Microsoft is going to build some really wild stuff on top of VSCode and Github.
I think there gonna come up with way to leverage the amount of data they can mine out of github repos to write code for you.
I'm pretty sure that's a big reason why they bought github.
mycall
Today, Microsoft received an exclusive license for GPT-3. It is already known that it can write code if asked in natural language declaratively (in certain cases). I could see an integration with github's code (specifically retrained with) and see some really interesting stuff.
renox
> I've never used CLion but I really want to.
Well, it has the best indexing of C++ I've seen but it's also the slowest IDE I've used (I've stopped using it when it froze showing a blank page for many minutes when I was compiling, since then it has improved, it no longer do this, but it's still very slow).
What's 'funny' is that all C++ IDE suck: CLion is awfully slow, VSCode likes to use >29GB of resident RAM if you let it open too long (no Vim isn't an IDE, it's a text editor which you can use to build an IDE yourself..) its indexing is quite bad most of the time, and also slow (enough that when I double click on something to get to the definition, I usually have the time to find/grep the source and open it myself before it has displayed the target :-()
mcdevilkiller
Try Rider. I feel like it has all the usual JetBrains IDE features but it's faster than IDEA and the Unity integration is superb.
0-_-0
>I think there gonna come up with way to leverage the amount of data they can mine out of github repos to write code for you.
Somebody already did that in a plugin, trained a neural network on Github code to provide autocomplete for Visual Studio Code. I'm using it and it's great!
https://marketplace.visualstudio.com/items?itemName=TabNine....
weinzierl
> I've never used CLion but I really want to.
CLion user here and I think it is still behind IntelliJ and I wish JetBrains would put more focus to the product. That being said I believe it is way better for C/C++ and Rust development than any alternative that exists at the moment.
barrenko
Definitely. Fedora + Android Studio + Kotlin is bonkers simple, clean and usable.
throwaway8941
If you do decide to get a clion license, cppcast.com has a discount code for personal license which shaves 25% off the first year.
I won't post it here, just fish it out of the podcast, it's very nice.
aramix
They did something already https://github.com/features/codespaces
renewiltord
Well, I think you're right about performance being a problem, but I have 64 GiB and a 4790k and an NVMe SSD. It's like half a percentage of my pre-tax income and was even less when I bought it.
I don't need efficiency. I need something that, given fuel, gives me power. And as someone who has donated to vim, was an early backer of neovim's bountysource, and loves his terminal: vim is my ion drive, IntelliJ and friends are my conventional rocket.
vladvasiliu
I'm not sure how performance is a problem for Intellij. Granted, I've only ever used Pycharm but I've never felt it sluggish or "slow" or got the impression I was waiting around for the IDE to do its thing. All this on a 2013 MBP with 16GB of RAM.
I've found it also works very well on Linux on a laptop with a i5-8250U and 16 GB of RAM.
The only thing that seems "slow" is starting up and indexing libraries and whatnot. Now I've never loaded the same projects in VSCode, but I'm not sure indexing would be that much faster and the startup doesn't really bother me, as I don't launch it multiple times a day.
varispeed
I am running it most of the time with i7-8750H and also 64G or ram, plus a rather fast NVMe drive. Performance in comparison with VSCode is just bad. That being said I am using all JetBrain products (I have a license for all of them), because simply there is nothing better for my use case. But I wish they put some effort in optimising their code.
aschatten
(disclaimer: I am an IntelliJ fanboy)
> From my experience out of the box you get poor performance and you have to spend a lot of time figuring out how to change configuration to improve it as knowledge is scattered in many places and not always up to date.
I don't know if you are talking about IntelliJ or VCS, but IntelliJ can quickly start an empty project. And you don't to spend time to figure out how things work. I mean, there is literally no entry barrier for a bare bone project.
> I wish there was an editor with low latency, smart search, some proper file system database
You are describing an IDE here. Smart search and a proper file system database, it means operating not on a collection of text files but on a project and a code tree, which is the main difference between IDE and Editor.
> I think the success of VSCode is because you can easily open it in your current directory from the terminal and it will show you your folder etc.
IntelliJ is adding this functionality slowly: https://blog.jetbrains.com/idea/2020/04/lightedit-mode/ It's not on par with opening a folder in VCS, but it's a matter of time until the close the gap if they choose to.
fiddlerwoaroof
I know this is how a lot of people think of the text editor/IDE divide, but it’s just not true anymore: for specific languages like Clojure or Common Lisp, emacs has plugins that provide all the essential features of an IDE with minimal fuss. For JavaScript, VSCode or tide-mode for emacs have, in my experience, significantly better code intelligence than WebStorm. The only languages IntelliJ is better at than the competition, IME, are Java, Kotlin and Scala: and, even in these cases, the LSP tooling is catching up fast.
xmprt
I've used both VSC and IntelliJ and I understand where you're coming from but when the parent comments says VSC is fast they really mean it. It's almost instantaneous and I can get a lot done in VSC even without all the complex smart functionality.
sangnoir
I'm a fanboy of both JetBrains and VSC. In the many years I've used JetBrains IDE variants (IntelliJ, Webstorm & Pycharm), I was never able to get rid of the frequent project re-indexing that slows everything down and makes the fans go crazy; you'd think they would cache that info and write it to disk.
btown
I see them as complementary. VS Code shines if you’re jumping between independent codebases for distinct projects, and startup time matters.
But my startup monorepo I keep loaded in IntelliJ for days at a time and have never looked back. For the 1% of time it’s laggy due to a JVM GC or background indexing, the other 99% of the time it’s immensely productive to have e.g. full-stack debug breakpoints that Just Work, well-designed customizable gutters, integrated linting, and more.
Kwpolska
You can have multiple project windows open in IntelliJ, and opening a project from an already-running instance takes only a few seconds, so I don’t think that’s really relevant.
spullara
I wonder if ZGC in Java 15, now that it is GA, would clean up any lag folks see.
tomc1985
IntelliJ isn't really the IDE for dicking around with ideas. Projects or not, it's just too fat. I am an IntelliJ diehard myself and I usually have a copy of Sublime Text open as well, usually to use it as a scratch space, to peek at logs or somesuch, or for playing with code that isn't quite yet in a runnable state.
waheoo
The funny thing is that I can't tell if you're talking about intellij or vs code from the first paragraph.
I find vscode a horrifying experience that is forced upon me because of poor choices made elsewhere in the org.
I'm slowly picking up vim to replace it but I'd rather just not be forced out of my editor I still use daily (sublime.)
In hindsight I wish I learned vim instead of sublime.
dathanb82
I sometimes wish I hadn’t learned vim, because it limits the tools I’m happy using. Since I’ve built the vim muscle memory, every other text editing experience feels crippled, so I actively avoid products that don’t support at least basic vim key bindings. Luckily the list of products with vim bindings keeps growing.
GordonS
> From my experience out of the box you get poor performance and you have to spend a lot of time figuring out how to change configuration to improve it
This hasn't been my experience of JetBrains Rider at all - granted that startup does take a few seconds, but after that it seems to fly.
> Then it still likes to stall from time to time or sometimes doesn't register key presses properly
This was my experience with Visual Studio; I used it for over a decade because it is a great IDE - but performance and stability has never been great, and eventually I just couldn't stand the occasional lag any more and jumped ship to Rider. My experience there has been very different - it's rammed with at least as many features as Visual Studio, but has been rock solid, and never lags in use.
signal11
Jetbrains were doing some work with a lightweight editor in IDEA to help with the “quick edits” use case.
https://blog.jetbrains.com/idea/2020/01/intellij-idea-2020-1...
https://blog.jetbrains.com/idea/2020/04/lightedit-mode/
It only appeared this year so it’ll be interesting to see if it gets traction.
nitemice
As someone who uses all three of the editors you named, I think that each serves a pretty different purpose in practice. Each aspires to be the be-all, end-all editor/IDE, but that's just unrealistic to me.
For me, I use VIM all day, every day at work (C++), because while it doesn't have the full IDE experience out of the box, it's close enough, and can be brought much closer with various plugins and knowledgeable adjustments. I've stuck with it because "it just works" and I'm use to it. A previous colleague was a big VIM evangelist, so got a running start from him, and now I've tweaked it enough that it works well for me.
VSCode is my general purpose text editor at home. If I'm writing markdown, or fixing some script, or I just need to see what's in that file, I'll use VSCode. It is the obvious, far superior replacement for Notepad, and has plenty of niceties to make it that much easier to use.
But if I'm building something with a lot of moving parts in one of its supported languages, I'll use IntelliJ. I don't often write Java these days, but PyCharm is just a reskin for Python and I think it's great. It does so much junk for you, and it makes testing and debugging so easy. It does trip up my muscle-memory occasionally, but for the most part it's a powerful tool that's great at what it does.
Osiris
> I'm used to it
That about sums it up. People use what they are used to. I don't try to convert anyone. I use the tool I like and to each their own.
devilduck
Agreed. Converting other people is a fool's errand anyway. I am interested in things like EditorConfig to allow some similar settings between editors so that individual team members can use whatever software they like without affecting general code style. But I don't think EditorConfig is end-game and there's room to grow in this area.
cookiengineer
Your description pretty much sums it up for me.
I use vim primarily for around 9 years now, and with ALE as a linter plugin it's integrated with languages I even don't know existed until I need to fix something in it in a foreign codebase.
If I need to go typescript or web, vscode is very tightly integrated with the build toolchains, so the occasional fix in vscode is necessary for me when I need to fix a bug upstream.
I tried migrating to neovim a lot of times, but their syntax highlighting is always so damn broken even with a plain vimrc that I stopped bothering anymore.
Currently, I'm trying to migrate to kakoune because I've heard a lot of nice things, and the ecosystem seems to be better integrated with lsp and rust, but honestly my muscle memory is damn strong, so it's actually kind of a burden at the moment and I'm gonna need a while if I keep pursuing this.
One benefit though that both emacs and vim have is ssh usage. Debugging and reading logs on a remote server is pain sometimes, and my vim profile eases that sooo much up that I saved a shitload of time by using it.
modernerd
> I tried migrating to neovim a lot of times, but their syntax highlighting is always so damn broken even with a plain vimrc that I stopped bothering anymore.
I haven't encountered highlighting issues in neovim, but the treesitter feature in the upcoming neovim 0.5 improves highlighting a lot. (It's a plugin at the moment that requires a bit of configuration. This is the simplest setup explanation I have found: https://www.reddit.com/r/neovim/comments/iw9nx5/moonfly_nigh... )
I tried kakoune out for a while but missed Vim's window management, had the same struggle fighting muscle memory that you describe, missed the ecosystem from Vim, and I think some of the criticisms of Kakoune here are also valid: https://github.com/noctuid/dotfiles/blob/master/emacs/editin....
rustybolt
I couldn't stand VScode when I tried it. To be honest I didnt even get it working properly for C development. Visual studio on the other hand is awesome.
Madzen__
What kind of problems have you ran into? I am not having any problems using VScode for C.
keithnz
I find CLion really nice for writing C++ + Jetbrains Vim bindings are pretty good
nitemice
I tried it a loooong time ago, for C, and I couldn't get the hand of it, even though I had used IntelliJ a bunch.
I've heard it's much better than when they launched it, but our build system is so eccentric that I don't think it'd get along well at my work.
vips7L
IdeaVim always seems extremely buggy to me compared to what I'm used to in vscode-vim
drran
IMHO, the main stopper for vim/emacs to go mainstream is lack of packages for preconfigured flavors of vim. E.g. `dnf install vim-perl -y ; vip myprogram.pl` or `dnf install vim-c -y; vic myprogram.c` .
jameslk
I used to use Intellij for everything (and I'm not even a Java dev). It is indeed very nice and comes with so much out-of-box around languages and popular libraries. However, Intellij is _sooo_ very slow to load and edit with. This is more tolerable if you work on one project. But in the past couple years, I've had to work on many smaller projects, and loading up Intellij for multiple projects meant gigs of RAM disappearing, along with that sluggish start time wait for each project and slow editing.
I really loved Intellij and I wish it could be made to run more efficient. VSCode fills the niche of "loads fast, moving around code is fast, and I can have many instances open at once without crushing my computer"
I guess it depends on the type of project you're working on, but I think these tools still serve separate use cases.
mekster
Hardware can fix that. I'm on latest MBA but I see no problem with performance. Recent hardware does have gigs of RAM to waste.
Once IntelliJ is running, which takes less than 10 seconds, projects open instantly. Probably even better on desktop machines.
Frankly VS code isn't good enough yet. It's the best if isn't for JetBrains but for instance, SQL queries are still just a string (unless I've missed the obvious plugin to allow me to auto complete column names and such according to the live database schema) but IntelliJ can highlight, auto complete and check errors once I register my database (also through ssh tunneling).
I do like VS code being faster but feature wise, I only use it to edit server config files through sftp plugin.
In 5 years, maybe JetBrains might feel pressured from competitors.
But it's only less than $15/mo if you pay annually and from 3rd year for their all products pack.
fiddlerwoaroof
I think this is largely a matter of where on the stack you tend to work. VSCode is significantly better than IntelliJ/WebStorm for JavaScript projects: jump to definition and the various refactorings are, IME, more reliable on development environments based on tsserver like VSCode.
Igelau
You just have to get Nyan Progress Bar extension to make those wait times more fabulous.
willcipriano
Seconded. The Dilbert plugin can also make the wait times more tolerable.
justrudd
Are the projects related? Or all unique? If related, you can create a uber project and import each directory as a module. I’ve got a project right now with 5 modules - 2 JS, 1 Go, 1 Python, and 1 Ruby (Rails). I’ve found this keeps memory usage down.
jameslk
They're for separate clients. I've thought about doing something like a giant monorepo of client projects even though they aren't related. It's hacky at best, but ultimately I felt I should just use the right tool for the job and VSCode seems like a better fit for this scenario.
I'm sure someone else will benefit from this suggestion though. Intellij is pretty flexible and it is amazing what it can do, if you don't mind the performance trade-offs.
scarface74
IntelliJ still has that Java GUI stench that made me stay away from Java over 15 years ago.
sethammons
Ha! Every older point of sale software and every medical screen Seems to have that distinct java ui. Never liked it.
mdekkers
There are some pretty good theme options. Have a look at the material theme for example https://www.material-theme.com
derefr
Fancy IDEs are lubricants for high-friction languages. If a language is already low-friction, there won't be much benefit to be gained from an IDE, as even a plain text editor will already get you near to optimal productivity in said language.
Personally, I'd rather use a plain-old "code editor" (with at most syntax highlighting, but no snippets, let alone autocomplete), in part because doing so will actively steer me away from languages that weren't designed with the User Experience of writing them in mind.
Imagine if there was a hammer that was so badly-balanced that—despite being not too hard to lift—you needed to be wearing a powered exoskeleton to accurately hold and swing it. That'd be a bad hammer, right? Hammers are hand-tools; it's an expectation that they'll work when used "manually", i.e. with raw human capability alone.
Programming languages are hand-tools as well, in an essential sense. Like mathematics, the "interface" through which we manipulate a codebase is plain, raw text — sequences of symbols. We humans understand source code by reading it with our eyes; and then we write or modify it by editing it the same as any other text. We can do the whole thing on paper, or a blackboard, or even purely in our mind's eye. That's kind of the idea behind having a source code representation of a program in the first place, divorced from a machine code representation — to give us humans a formalism we can intuitively handle. A programming language is something you can think in.
Seen through that lens, a programming language that requires the cybernetic prosthesis of an IDE to read and write it fluidly, is a bad programming language. You don't have an IDE loaded in your head. So how will you think in it? (Usually: by thinking in a vague pseudocode instead; or even, by thinking in a different language than the one you're writing in. Obviously, this is going to be lower-productivity than coming up with a mental model of the problem that can be directly typed into a computer.)
(Before anyone makes a supposition about my language biases: both "complex" and "simple" language designs can be inherently high-friction due to their design choices. Scheme has very little syntax, but it's also high-friction, in that it's easy to get lost in a sea of parens unless your editor helps you along with a feature like Emacs' paren minor-mode. Most modern code editors do have something like that, but it's still a form of lubrication to overcome a point of friction in the syntax; one that some of Scheme's linguistic siblings—e.g. Clojure—avoid by increasing syntax.)
lmm
> Imagine if there was a hammer that was so badly-balanced that—despite being not too hard to lift—you needed to be wearing a powered exoskeleton to accurately hold and swing it. That'd be a bad hammer, right? Hammers are hand-tools; it's an expectation that they'll work when used "manually", i.e. with raw human capability alone.
I remember people making similar arguments when cars started to have power steering.
> Programming languages are hand-tools as well, in an essential sense. Like mathematics, the "interface" through which we manipulate a codebase is plain, raw text — sequences of symbols. We humans understand source code by reading it with our eyes; and then we write or modify it by editing it the same as any other text. We can do the whole thing on paper, or a blackboard, or even purely in our mind's eye.
I disagree; programming languages are primarily tools for programming on computers, and expecting them to be skeuomorphic to a particular approach may hold us back, just like expecting a CAD program to work the same as a physical drafting table or expecting a rendering engine to use a TV-like fixed framerate.
Being able to push secondary parts of a program to be foldable, or visible on mouseover but not by default, makes it easier to communicate understanding to other humans. And actually that's a more faithful recreation on how you'd communicate in writing - on a blackboard you might use small text, or footnotes, or a verbal explanation. A mathematical paper is almost never "plain text" in the sense of being a linear sequence of ascii characters and nothing more. A language whose design embraces IDEs can be a better tool than one that flattens everything into the binary of written in the code or completely invisible.
partyboat1586
With an exoskeleton I can lift a bigger hammer. A bigger hammer is more powerful.
derefr
> and expecting them to be skeuomorphic to a particular approach may hold us back
Whatever a programming language is, it has to be something you can hold onto in your head, because the human mind is where "programming" takes place. And there really aren't many forms that such a thing can take.
The step-sibling of programming languages, the mathematical proof, can really take any form we like; we're not limited to maths that can run on a computer, as long as we can "run" them in our minds. But we've still ended up with only two basic formalisms that almost(?) all mathematics is expressed in terms of: geometry (visual mathematics), and algebra (symbolic mathematics, including formal logic.) Because those are the formalisms that we have mental hardware to comprehend.
Anything that isn't in one of those shapes (say, an exhaustive computer-assisted proof-by-parts) might still be productive to prove; but we humans won't like it, and will always seek to replace it with something that we can get a mental "handle" on.
We'd certainly never take the formalisms that do work for us, throw them out, and replace them with non-human-mind-comprehensible formalisms instead. Why would we bother? What would we gain?
> Being able to push secondary parts of a program to be foldable, or visible on mouseover but not by default, makes it easier to communicate understanding to other humans. And actually that's a more faithful recreation on how you'd communicate in writing - on a blackboard you might use small text, or footnotes, or a verbal explanation.
Oh, I don't disagree. But all those things are useful for plain text, too. As you say, humans already think and manipulate text that way. And "advanced" text editors already provide facilities to manipulate text that way, without any understanding of programming-language syntax.
You can get very fancy about how you manipulate symbols... as long as "just manipulating symbols" is truly all you're doing. As pure symbol manipulation is something you can always also do in your head. Go much beyond that, though, and you stray from the land of "things humans can keep track of in their brains."
Can you think in terms of what a JetBrains codebase will look like after you refactor it, without actually doing the refactoring and seeing the result? How about with two or three such applications in play? It gets pretty hard, no? Because those aren't just pure symbol-manip. They're not just moving letters around on the mental blackboard that represents the current module. The non-local effects aren't strictly intuitive. Each layer of that that you have to hold solely in your head, bogs you thinking down. In a high-friction language, you just don't bother to try to work too far ahead with such changes; you just "take things one step at a time", applying each change and then re-learning the codebase in light of it; sometimes applying a change and then backing out once you realize you're got your sequencing wrong.
Sometimes working "with blinders on" like this is necessary (e.g. fixing up a big ugly three-way git merge); but why subject yourself to it if you don't have to? Wouldn't you rather be able to understand what you're doing, and where you're going?
> A mathematical paper is almost never "plain text" in the sense of being a linear sequence of ascii characters and nothing more.
I mean, they're usually written in LaTeX ;) But to be clear and precise, I was trying to invoke the concept of a https://en.wikipedia.org/wiki/Formal_language. Programming languages and (symbolic) mathematics are both formal languages. You manipulate them algebraically, by moving the symbols around, applying transformations that turn one valid statement into another valid statement.
Yes, there are isomorphisms, e.g. visual "programming languages" like Scratch. They're certainly neat, but as far as I've been able to ascertain, people can't really think in them the way they can think in symbols.
Ask a composer: what do you think about when you compose music? Do you think of the sound; or do you picture the score? Where music's concerned, I would guess pretty much everyone is thinking about the sound, because that's a lot more intuitive. Someone could probably write a song entirely by manipulating a score in their mind—and make it sound good!—but it'd be hell to do, in comparison.
winrid
Java doesn't have a lot of friction. In fact, IntelliJ is probably the closest you'll get today to the "golden age" of programming with something like Turbo Pascal.
Also, good luck doing major refactoring with a text editor. In 2020 we can do better than find and replace.
derefr
You're conflating the language and the prosthetic used to code in it. Java is a high-friction language. Write it in a text editor, and measure how long it takes to write some working nontrivial Java. What you're measuring there is the inherent friction of Java, as a language. The IDE adds negative friction — lubrication — to the process. But that's a separate thing from the language itself.
As I said, just try to think in Java (rather than Java-esque pseudocode.) Try to write a Java program in advance, in your head, that only needs typing-in (in a plain text editor!), such that it's valid the first time you type it in. Imagine how carefully and meticulously you'd have to think, to get that code right. That required meticulousness is another measure of Java's inherent friction.
> good luck doing major refactoring with a text editor
A language can also be high-friction or low-friction when it comes to how hard it is to refactor code in that language. Though this comes from more abstract architectural constraints the language imposes, rather than things like syntax or identifier naming conventions.
For example: Erlang code is low-friction for refactoring, because code that lives in a separate process needs to be spoken to through a messaging ABI; which necessitates that every such process have an API-client module to encapsulate that ABI; where that client API then offers a de-facto interface/contract for clients of that API to hold to; which frees anything underneath that API from stability requirements, as long as the API itself remains stable. The fact that this is done "in the small", per process, rather than in the large, per package/library, means that Erlang "refactoring" almost always just consists of changing the shape of a process state-function, and then adding some polyfill logic to its client API module-function to keep the process working.
dheera
The way people use Java is a problem.
Spin a blank "hello world" project in Android Studio and you get no less than 79 files, and it won't work the next time you update Android Studio because of some Gradle errors.
I don't know what went wrong, but "hello world" should not be 79 files, it should be something that I can hand-code in something less than an IDE.
tester34
>Seen through that lens, a programming language that requires the cybernetic prosthesis of an IDE to read and write it fluidly, is a bad programming language.
>Imagine if there was a hammer that was so badly-balanced that—despite being not too hard to lift—you needed to be wearing a powered exoskeleton to accurately hold and swing it.
You don't use IDE to be able to use language, you use IDE to increase your productivity. Instead typing whole for loop you just use shortcuts, instead of changing class name in 5 places you just change it in once. You save time.
>We can do the whole thing on paper, or a blackboard, or even purely in our mind's eye.
But do you remember that class `PurchaseHandler` has method `BegingPurchaseProcess`?
mdekkers
> Imagine if there was a hammer that was so badly-balanced that—despite being not too hard to lift—you needed to be wearing a powered exoskeleton to accurately hold and swing it.
Ah, like a jackhammer? One of those huge ones attached to a digger they use to break open the roads?
It’s a right-tool-for-the-job kind of thing. Some roads can be mended with a shovel. Some need a jackhammer.
If you limit your development to “what a human being can hold in their head” you are artificially limiting yourself. The whole reason we use higher level languages is so that the machine can exceed what a human can hold in their head.
derefr
A jackhammer is like a codegen tool, or maybe a code formatter: it “writes” or “edits” a lot of code for you, quickly, but it’s not doing programming per se. You can’t use a jackhammer to put together the pieces of a lacquered cigar box, faster. You can’t use a jackhammer to build much of anything, really.
(But I should note that a jackhammer also doesn’t required a powered exoskeleton to wield. The power is instead “built into” the jackhammer itself. Less like an IDE; more like a batch command-line tool. I’ve got nothing against batch command-line tools! But their presence is usually orthogonal to the design quality of a language, so they’re kind of irrelevant here.)
Back to the point: programming is something human minds do. Not by holding the whole codebase in your head at once; but by loading and unloading parts from your mind, where at any given time you need a useful amount of mental-model loaded at once in order to see your way through to changing it. (This is why structured programming using macro-assemblers was a revolution in productivity: modules, functions, and block-statements are intuitive units to be mentally loaded/unloaded as a whole, freeing programmers from needing to keep an unbounded mental buffer of JMP spaghetti.)
The more high-friction the language, the less of it can fit in your mental buffer at a time, and so the more “cold lookups” your mind will suffer, where you need to look something up about the codebase (likely evicting something else in the process.)
Consider a process running on a computer without enough memory to keep the entire process’s hot state loaded into said memory at a time. The result is swapping: a slow, high-overhead process of constantly reloading state from disk and evicting other state in the process.
On computers, we can fix swapping by adding more memory—enough to comfortably hold the hot state. But human minds can’t just be upgraded like that. Rather than making our memories bigger, we have to make the state smaller — to pack it more tightly and efficiently into our memory. A low-friction language is one that packs better.
Using an IDE to paper over the problems of a high-friction language, is like seeing a computer system that’s swapping, and “fixing” it by replacing its slow HDD storage with fast RAIDed NVMe storage. Sure, performance increases. But the program is still doing something stupid — a bunch of needless swaps-to-disk. It’s just doing them quickly. The money that had been spent on that RAIDed NVMe storage, could have been much-better spent on just adding more RAM to the system.
And the effort that a human goes to to learn an IDE, could have been much-better spent on learning a language the mental model of which packs better into the human mind.
scarface74
I haven’t used IntelliJ, but if it gives Java developers half of the refactoring options and shortcuts that JetBrains Resharper gives C# developers, it must be worth its weight in gold.
C# is the only language for which I have had to deal with large monolithic codebases.
For smaller codebases, I prefer VS Code. Especially now that I go back and forth between JS, Typescript, Python, and occasionally Go and Java. I’m also frequently editing yaml and JSON. Having one editor is more ideal.
sethammons
The one editor thing is key. I’m in and out of different languages and file formats. Many times, I just need to edit text. Today, I was navigating perl in Goland just because I don’t want to dance between editors.
useful
All of this is fine if you don't work with others. The point of these tools is to standardize around something to reduce the cognitive load someone has to experience contributing to code that they didn't write. The amount of possible paths are commonly reduced for the reader.
Linting, snippets, autocomplete, are all things that prevent you from bending the nail or breaking off the head which makes maintenance harder for the person who has to find the nail and remove the nail. If I don't have to redo the nail, the cost of the nail and my time are also saved.
derefr
High-friction languages allow you to pump your codebase full of unbounded coupling and complexity, to turn your codebase into a hypercube of connections (subclasses; interfaces; macros; annotations; DSLs; monkey-patches; etc.) IDEs for these languages give you a fancy N-dimensional submarine to efficiently navigate this "wondrous" landscape.
Low-friction programming languages just don't give people all those N dimensions of inter-module connectivity in the first place; and for what dimensions they do provide, they steer people away from using them too often, perhaps with opinionated linting, or by building the standard library out of the simple stuff, such that all code that interacts with the stdlib keeps to the same simple style to avoid style-clash.
This approach will also "reduce the cognitive load someone has to experience contributing to code that they didn't write"; but it reduces that cognitive load even for people reading the code in a text editor. Or for the maintainers throwing snippets of the code around in a PR / patch-submission mailing-list.
fomine3
C# is designed for comfortable with using IDE. I like both approach.
asxd
I can really appreciate the approach of designing a language to work alongside an IDE to allow both complexity and ease of use. That being said, in my heart of hearts I would rather have a language that I can use effectively without depending on a specific IDE, but I'm glad there are folks exploring that route.
yowlingcat
This is part of what led to me originally choosing Python in the first place so many years ago. I really liked Haskell but I found it hard to get things done with it. I tried to build out a large project in it, and with a deadline looming, decided to try building the rest out in Python. Python got out of the way for me and made it easy for me to "think out loud" -- perhaps this is what you mean by "hand-tools".
I was a lot earlier in my maturation at that point, but I still think my intuitions were sound. I like languages like Python which lack syntactic noise and make it easier to write compact self-explanatory things. I used to hate JavaScript but with ES7 onwards, I've begun to like it much more because it's easy to write compact, self-explanatory things.
I was forced to write Java for work a few months ago and rudely awakened in a painful manner. Yes, you adapt to it but deep down inside, you know that it sucks and you prefer going back to your better alternative.
claudeganon
Python is one of the few languages that I feel I can think in. I measure this by my ability to have “a ha” moments when away from my desk, where my brain has puzzled out how to solve something in idle moments (with at least a rough outline of the code).
I don’t have trouble working things out in other languages, as needed, but rarely find myself having these little bursts of inspiration.
paxys
While editors like IntelliJ are definitely more polished out of the box, something that may not be apparent is that internally they are all standardizing on tooling and protocols put in place by VS Code in the last few years.
Language toolchains are now expected to provide IDE-specific features on their own (by implementing a language server), and so IDEs themselves don't need to focus on making the language better. So the biggest sell of IntelliJ, reSharper etc. won't be relevant for too much longer, since every editor can (or will be able to) e.g. understand Java and provide basic fixes and refactorings.
hocuspocus
In practice we're pretty far from that. Most statically typed languages, even fairly recent ones that took on LSP compatibility early, are still better supported by JetBrains' IDEs.
spullara
Those features are terrible comparatively. If anything I would buy jetbrains server implementing those features if they offered one.
thu2111
Most language toolchains are held together by small teams of volunteers or corporates (Apple, MS) that sell their own IDEs. They struggle to provide even the basics like solid fast compilers, portability, debuggers that aren't gdb, profilers that work and so on. Look at Go, Rust, Swift. All of them are fighting with basics like performance and language evolution. And now you want them to implement most of an IDE as well? How will they handle that? The only real exception is Kotlin (by JB!), but that was possible because the compiler and IDE plugin are a unified codebase and because they built on the JVM, so they get top quality compilers and profilers, portability layers etc for free.
The key to JetBrains' success is not any particular software architecture, although having language analysis plugins run in-process with direct access to AST structures is an obvious advantage, it's that they're a company that charges money for their tools, which has kept their cost overheads low (very low relative to never-profitable SV startups that snort VC capital like party hounds), and which are building on an already very productive platform to begin with (Java).
This combination means their feature throughput is very high but more importantly, sustainably high. They've been doing this for 20 years and aren't about to hit a tech debt wall where they suddenly need to rewrite their product from scratch.
Contrast this to their primary competitors, Microsoft and Apple.
Visual Studio has a comparable feature set to JB IDEs. But it's Windows only, totally un-portable, hardly supports web dev outside of the .NET stack, and the plugin model is native. They badly struggled with the transition to 64 bit because of this, which in turn meant users regularly hit its internal architectural limitations like project size limits (cuz of the 32 bit address space). VS doesn't scale well because there's no good way to stop plugin crashes taking out the whole IDE. Even though MS have been pushing .NET for 20 years, VS itself doesn't use it. IntelliJ built on Java which hurt them in the early days, but now Java's perf issues are mostly solved and they benefit every day from portable plugins, a seamless 64 bit transition, cross-platform portability, etc.
XCode is under-funded, has very few plugins and can't compete for any task outside of Apple's own ecosystem. It doesn't even try, really.
VSCode is a text editor with plugins. It is at least trying to compete with JB, but I don't forsee much success in the short term, especially if JetBrains pull their finger out on light mode. It at least uses managed languages. But the most mature JB plugins have been developed over a period of decades by now. The feature-set is overwhelmingly huge, and they have hundreds of employees that do nothing else but add them. How much money is MS willing to throw into the VS Code project? Its lack of revenue model limits them, even with a sugar daddy funding them. It's unlikely they can scale to JB size because a free IDE that competes with their own revenue generating VS product is simply not something they will tolerate long term. VSCode is going to be stuck focusing on the JavaScript/web stack for a long time and won't receive a lot of funding to grow out of that.
dragonwriter
> How much money is MS willing to throw into the VS Code project?
A lot. Not that they have to do it alone, because a lot of the work on VS Code features is done by other people with their own motives (some volunteer community types, but also each of the major cloud platform vendors is investing in VSCode integration into their systems, too, and the same is true for lots of other firms.)
> Its lack of revenue model limits them
If they are imminently going to be selling a hosted editing environment built around it (Github Codespaces), does it really lack a revenue model?
> a free IDE that competes with their own revenue generating VS product
Even with VS, they've long focussed on subscription services not software licenses as the main revenue source. “Visual Studio” subscriptions (formerly MSDN) are the big push, and most of what comes with that isn't the IDE.
And VSCode is very well integrated with lots of the services they are selling.
> VSCode is going to be stuck focusing on the JavaScript/web stack for a long time and won't receive a lot of funding to grow out of that.
It's not stuck there now, and right now MS’s biggest push in terms of domains seems to be ML/AI. I think VSCode is poised to do quite well for— in fact, has largely already won much of—everything that isn't enterprise Java, where, yeah, there’s a lot of time and money on the alternatives and not a lot of MS resources devoted to competing.
737maxtw
On the c# side though Jetbrains has possibly suffered a little bit. I know a lot of people have ditched ReSharper because it's just too slow in VS2019 and the built in stuff is often 'good enough' for them. Others either deal with the pain or have switched to Rider (I'm in this latter camp and happy about it).
On the other hand Jetbrains is a lot more diversified now than before (when their main products were IntelliJ, ReSharper, and teamcity)
headcanon
Other replies have expanded on this quite a bit, so I'll just add my 2 cents:
When using a strongly typed, object-oriented language like Java or C#, Jetbrains tooling, namely the intellisense and refactoring is well-worth the cost.
However I'll still spin up VSCode for most all other languages since the tooling advantage diminishes when using a loosely-typed language like JS or Python.
Also consider that VSCode is free compared to Jetbrains, and the tooling is "good enough" for most cases. Even the C# tooling is passable with the right plugins.
thrashh
I use refactoring and IntelliSense for Python and JS pretty often and while it’s not as good as for Java, I find that it works pretty well.
Granted when we write code, we keep in mind whether an IDE will be able to refactor it later.
MiroF
I agree - but I also think that strong typing is the future.
j2kun
I write Java in vim all day and it's fine. I'm also one of the top code contributors in my org by any metric (LoC submitted, bugs fixed, tech debt reduced, etc.) And everyone else uses IntelliJ.
You devote time to learning your tools and improve the efficiency of the parts that matter, and the tool itself becomes mostly background.
rawoke083600
THIS ! As a "professional" you owe it to yourself, to spend some time and actually learn you tools ! Not just "how to get by" but actually schedule time in your week to learn about the tool ! Shortcuts etc !
guytv
Could you explain how would you go about renaming a method with a few dozen usages using VIM? (curious what's the "right" way to do this in Vim)
game_the0ry
> To me the future is IntelliJ for Java and all other languages should seek to have such a nicely integrated experience with an IDE.
If you think Java + IntelliJ is well-integrated, you should try C# + VS, C# + Resharper.
I am not joking or being facetious - modern C# IDE support is on another level.
And I don't even like C#.
winphone1974
If you think c# with resharper is good, cut out the middleman and just go with rider.
fomine3
Rider is good but a pros for VS+Resharper is it can avoid to use Java GUI app.
sk5t
Conversely, I always hated the bloaty, intrusive ReSharper on VS.NET, and find IDEA very much nicer, even though C# is more naturally ergonomic than Java (but less ergonomic than Scala).
baby
Or swift/objective-C and Xcode
frankjr
I completely switched to VS Code once I discovered the remote development feature [0]. It allows you to run VS Code locally but work on a project in a different environment (via SSH, Docker, WSL). The integration is seamless - search, debugger, terminal, extensions - everything looks and behaves as if it was running locally but is delegated to the configured remote. You can even have different remotes opened at the same time.
I use this setup primarily to have at least some sort of a barrier between my system and the gigabytes of NPM packages that get downloaded as dependencies. Moving between systems easy as well - I just copy the VM images. It also makes it easy to experiment a little bit. If I want to e.g. upgrade an important package and something goes wrong, I just revert the VM and I'm back in business. Having Arch as the distro is a nice bonus.
There's a chance that IntelliJ IDEs will get the same remote functionality as well but the timeline is unclear [1].
[0] https://code.visualstudio.com/docs/remote/remote-overview
stefan_
This is such a hugely undervalued feature, and no other editors seem to provide anything remotely close. I found it particularly useful for the COVID work from home - I yeeted my work laptop into a corner and just SSH into it to continue working with the ergonomics of my home desktop machine.
necubi
Not to be that guy, but emacs has had this for years via tramp.
xxpor
As someone who used tramp and switched to VS Code, it's absolutely not the same thing. The difference is plugins work on the remote side of the connection without having to be aware they're in a remote connection. VS Code makes this work by having an agent running on the remote host. For the first time I actually got autocomplete and code jumping working without a horrendous amount of effort.
guytv
... and now he's the president. that shows ya!
fmakunbound
That's cool, but you can just "screen emacs" since it's not implemented inside a giant web browser.
TylerE
jEdit has this 15 years ago.
5d749d7da7d5
Remote has been a game changer for my development as well. Work forces me on a Windows machine with the full suite of corporate spyware. Said spyware loses its mind when compiling, debugging, language server inspection, git actions on large repo, etc. Performance loss is somewhere in the region 2-10x.
With remote, I am able to do all coding on a non-infested Linux server with almost seamless usability.
easton
Your company is equally cool with you just having all of your code/IP on a unsecured (i.e. not running crazy large antimalware, not actually insecure) Linux box?
tda
sounds like my company: any windows machine is infested with a dozen or so McAffee things that make it unworkably slow. But none of the drones that role out McAffee has ever touched linux or osx, they prefer to leave that alone. So even though I actually prefer windows as a desktop OS, I mostly worked on a MacBook (until the pandemic, now I WFH on a my personal windows machine). But since WSL2 is finally backported to whichever outdated windows my corporate laptop runs, it is actually quite usable with VSCOde/remote containers + docker
ezluckyfree
Note that this feature doesn't work in open source builds of VSCode, it's an MS only thing.
avremel
I use this feature in VSCode (free version), with this Microsoft extension: https://marketplace.visualstudio.com/items?itemName=ms-vscod...
laqq3
I read about this fact elsewhere also. Could you expand on this a bit? My impression was that VSCode and its associated extensions are open source, so I'm curious how Microsoft could make certain parts exclusive to its own build of VSCode.
bostonvaulter2
> I'm curious how Microsoft could make certain parts exclusive to its own build of VSCode.
By packaging it as an extension that isn't licensed like the rest of VSCode.
Also on a related note, if you're using an open source build of VSCode (such as VSCodium) then you cannot use marketplace.visualstudio.com/
https://github.com/VSCodium/vscodium#extensions-and-the-mark...
cercatrova
Because VSCode is under a permissive license (MIT) rather than a copyleft license (GPL), Microsoft can add any proprietary extensions it wants. "Permissive" licenses are only permissive for the creator and other developers (only sometimes), not for the end user.
toupeira
The situation is similar to Google Chrome/Chromium: Most of it is open-source, but the release binaries contain some proprietary bits for telemetry, marketplace access, etc.
A FOSS build is available at https://vscodium.com/
zelphirkalt
I am no VS Code user, but if this is true, we are at phase 2 of EEE. What will be next?
chipsa
Can't be at phase 2, because VS Code was written by MS.
srikz
Eclipse foundation has a new project, Theia[1], which forks VSCode and one of the reasons they state is that the extension ecosystem is not opensource.
They want Theia to be a tool to build your own editor and it can be built as a hosted solution (like code-server) or a standalone editor
Edit: I see that the article also mentions Theia but this point about Theia vs VSCode is not mentioned.
MikusR
The beauty of open source. Take code written by others rename and call it an alternative to the original product.
sebmellen
I was very disappointed to find that VSCodium wasn't able to do this. It makes me consider switching back to VSCode.
nnt38
VSCodium is able to do this, it is just more work.
https://github.com/VSCodium/vscodium/blob/master/DOCS.md#pro...
vixit
Ooh, if IntelliJ gets remote functionality I'll be very happy.
rckoepke
I use JetBrain's remote python interpreter functionality[0] with great success and convenience. For anyone whose development environment is appropriate for its use, I honestly cannot recommend it highly enough. It's only available under the full "Professional" license version, however.
This uses SSH and SCP to automatically deploy the code to the remote environment and run it with the interpreter on that machine, rather than your own local laptop/desktop. One advantage is that it does not require any special software to be installed on the remote server. I believe VS Code's solution requires a pretty hefty installation consisting of basically an entire copy of VSCode onto the remote server.
The downside of JetBrain's approach... I believe that it requires a local copy of the files in order to perform the "LSP"-like syntax error highlighting / suggestion functionality that JetBrains software is so lauded for. This could be difficult/inconvenient if your codebase is particularly enormous, or if you aren't allowed to mirror it locally.
However, given the amount of support that JetBrains has for this kind of setup, I wouldn't be shocked to see an additional option for something more in the style of "VS Code Remote Development"
0: https://www.jetbrains.com/help/pycharm/configuring-remote-in...
kamhh94
I spoke to the team in KubeCon last year and they said “our research team is looking into it” with a hand wave. I doubt IntelliJ will actually implement this anytime soon, sadly.
enjoylife
I agree and not saying they would get to it, but considering that was pre-COVID, I would imagine/hope they might reprioritize.
FridgeSeal
Remote and Docker based Python environments have worked for a while in PyCharm.
tda
It is also great for string all dependencies for development together in a docker-compose file. On any machine you just have to git clone and open vscode in the container and you are good to go. Even if you require a particular version of postgresql, some compiler version or a complete Kafka cluster; everything can be configured in a Dockerfile/docker-compose file and stored with the code. No more pages long readme's of how to get all dependencies set up just right. Especially when often switching between projects and machines this is a godsend. And for onboarding it is so easy to get someone a fully configured working environment.
scoutt
Absolutely. I build Android images (AOSP/kernel/lk customization) and at the beginning I was using Eclipse over a shared network folder (I have dedicated remote hardware to host and build these monstrous images), but everything was a chore. Then I switched to VSCode + Remote Development over SSH.
Imagine placing the workspace at the root directory of the entire Android source tree, pressing ctrl + shift + F and finding anything in less than a couple of seconds. For C/C++ code, press F12 just ANYWHERE on the code to go to the definition, no matter if it's the entire kernel code, or vendor or AOSP code: it just finds the definition at lightspeed.
For building I use the integrated console. If there is an error or a warning anywhere, you can just click on the console an it takes you to the file with the error/warning. Also it integrates perfectly with Git and has extensions to parse DeviceTree files.
And everything was just much more appreciated while working at home during pandemic.
It sounds like a testimonial advertising, but it's the way it is.
lima
> I use this setup primarily to have at least some sort of a barrier between my system and the gigabytes of NPM packages that get downloaded as dependencies.
You can do something similar with IntelliJ by running npm inside a Docker container with your working directory mounted into it. IntelliJ will happily index the resulting node_modules folder without executing any code on the host.
Vinnl
The only thing that's been preventing me from fully adopting this is that I don't have my local shell environment (autocomplete, syntax highlighting, etc.) anymore. Maybe I'll have to look at getting that setup in a container sometime, and then copy that over to every container I use.
sebastos
You can add "-v" flags in the .devcontainer/ json file that map host stuff in so that you get all of that stuff!
andrewstuart
I'm not a fan of VS Code because everything is a plugin.
And plugins are inconsistent, buggy, inconsistently documented, hard to use and find and update and goodness knows who developed them. Plugins can be duplicated, outdated, abandoned and incompatible.
But worst of all, a big pile of plugins isn't a consistent integrated product vision.
I gave VSCode a solid go, and I had to keep installing plugin after plugin, but it was truly painful trying to find where in the interface to use the plugin and how to use it.
It reminded me of using VIM as an IDE - not an IDE, a big pile of stuff that isn't integrated. I started using VIM as an IDE when I started programming and I believe it cost me a year of time - I should have gone straight to a consistent integrated IDE.
I prefer a batteries included approach such as the Jetbrains IDE's.
I absolutely do use VS Code - it's always loaded, but I only use it like a simple text editor.
barkingcat
You don't need all the plugins. You just need a curated set. And some of the plugins are fantastically high quality.
The Microsoft Python one is excellent, as is the Remote development one.
I'm a fan of VS Code because in spite of it having a plug in system, there are great plug ins there. And that one single great plugin is all that is needed (for that specific purpose)
andrewstuart
I'd be more interested in VSCode if Microsoft's strategy was to relentlessly implement the most popular plugins into VSCode natively such that the most commonly used and needed functions were built in and did not require plugins.
The problem with systems that are really just frameworks for other to build on is they become reluctant to build stuff that plugins exist for. The philosophy becomes to depend on the plugins rather than built out needed features. This entrenches the spaghetti pile of plugins.
Plugins are great and necessary - Jetbrains IDEs have plugins. The difference is a philosophical one - are plugins there to provide core functionality, or are they there to provide uncommon use cases? VSCode uses plugins for basics, JetBrains builds basics in - with JetBrains you can never install a plugin and happily work away. With VSCode, the very first task you must carry out is to start managing your inventory of plugins.
jcrben
No way, it sucks when you've got a monolith full of unnecessary gadgetry. Right now VSCode is already getting pretty bloated w/ builtins
syshum
This is the difference between an opinionated vs non-opinionated IDE
You seem to prefer opinionated, where other people like the fact they can pick and choose from various plugins to my their IDE their own, and if they do not like the default implementation of a feature there likely is another plugin that may work for them.
For example there are a couple of git plugins, all of them act slighty different based on the workflow of the users of that plugin, if MS came in and said "No this is how git workflow is in VSCode and no other way is possible" that would turn off alot of users
Further you stated another glaring problem, Jetbrians mikes IDE's plural, specialized for each lang they are targeting, VSCode needs to work with many lang, there is not a VSCode:Python edition, and VSCode:Powershell edition, etc et c etc
It is just VSCode and plugins add the Languages you need / want support for
leetcrew
> I'd be more interested in VSCode if Microsoft's strategy was to relentlessly implement the most popular plugins into VSCode natively such that the most commonly used and needed functions were built in and did not require plugins.
microsoft already has an IDE like this for their core languages; it's called visual studio. it's kinda bloated, but it's still a great tool for languages that microsoft has deigned to grace with its direct attention. for anything else, you're SOL; the plugin ecosystem is pretty limited for VS. the more VSCode reimplements plugins "natively" (isn't it all JS anyway?), the less it has a reason to exist.
thebigspacefuck
It’s pretty easy though. You open a Python file, it asks if you want Python plug-in installed. Then you’re pretty much done except specifying your virtualenv. If you have linter settings it will ask if you want the linter installed.
The big thing with Jetbrains is the cost. PyCharm is $9-$25/month and VSCode is free
SAI_Peregrinus
Or, better yet, to re-implement the best plugins as installed by default plugins that could then be enabled/disabled by the user.
moron4hire
>> I'd be more interested in VSCode if Microsoft's strategy was to relentlessly implement the most popular plugins into VSCode natively such that the most commonly used and needed functions were built in and did not require plugins.
Unlike the FANG companies, Microsoft doesn't tend to rip the carpet out from under independent developers like that.
0x008
Sorry to spoil the party here but I wouldn’t call it excellent. I need to set environment variables and PYTHONPATH in 3 places (for the integrated terminal, for background processes and for the debugger). New environments are only detected after restart of the UI and It doesn’t Index or allow go to definition for libraries downloaded via pip most of the time. Also no refactoring support...
This is really frustrating. Am I doing something wrong?
_rerr
In my company we use pyenv with virtualenv and everything works seamlessly. VSCode automatically runs the activate script from pyenv in a new terminal (in my case it is even the fish shell), debugging works fine, and I can go to definitions.
Note that a new extension, that works alongside the original python extension, has been developed by Microsoft: Pylance. It speeds things up based on pyright, a python type-checker.
For refactoring you can use rope [0] as a VSCode extension.
joppy
Yeah, my experience of attempting a very simple refactor (change variable name) with the VSCode Python plug-in is:
“Rope is not installed. Install?” - so I need a package in my virtual env just to rename variables?
“Rope is installed. Refactoring failed”.
jyriand
Does VSCode have something similar to emacs’s spacemacs, doom or prelude?
smohare
I only dabble in VS Code on occasion, so only saw this in passing: https://github.com/VSpaceCode/VSpaceCode
ampdepolymerase
They do have extensions that install multiple other extensions.
chillfox
I think Facebook did make something like that a few years ago.
barkingcat
are you asking if anyone implemented the 3d first person shooter DOOM inside of the vscode plugin system? that could be a summer of code project for some aspiring coder.
bsder
> Remote development one.
Careful with the Remote Development plugin. It does NOT have an open source license.
throwaway17_17
I’m curious, why does this fact require that on be careful. I’m not trolling, I’d like to understand the cautionary stance.
drdaeman
I think it's the core product values for me.
JetBrains IDEs are development environments, meant for editing code, in specific primary language. They really try their best to understand code that user works on (which is a hard problem, because code is frequently invalid while it's being actively edited), and make it as convenient as possible.
VSCode is - in my understanding - essentially, a step over older glorified extensible notepads on steroids. Unlike those older extensible notepads, it does have built-in programming language editing features, but mostly it's still not the core product but rather a job for extensions and language servers to fill that niche.
So for me VSCode wins over editors like Sublime or Atom, that don't have core programming language processing concepts baked in, but still loses to the specialized IDEs where specific language support is a primary feature (like PyCharm or GoLand).
TheRealDunkirk
> JetBrains IDEs are development environments, meant for editing code, in specific primary language.
I've used RubyMine and IntelliJ. IntelliJ kept me sane for the thankfully-short time I worked with Java, and I appreciate it. But I can't get past how SLOW RubyMine is. Even on my $4,000 MBP, it just feels sluggish. Maybe that's because I'm at home on Rails, and I can think faster than the IDE, but there's really not much excuse to my mind for being that slow, especially on top-end hardware. It once helped me debug a plugin of plugin of a gem, and I'll be forever grateful for that, but I keep trying it every so often, and failing to part with my cash for it. I pay a lot for software, in general, but that one's just too steep for my taste, when tools like vim, Sublime, and VS Code exist.
jdrobertso
How are you guys all working in one language?
I work on a stack that has ruby on rails on the backend, javascript on the frontend, .NET Core apps to do data transformation, and some NodeJS thrown in there, too. I have to switch back and forth between these projects regularly. There is no other tool like VS Code that provides me the flexibility to have snippets and highlighting and the things I need to maintain these projects, while also giving me the flexibility to switch between languages and syntax on the fly without having to wait 20 minutes just for the IDE to load up.
int_19h
PyCharm is also a common IDE core with a bunch of Python-specific extensions on top. It just so happens that JetBrains ships those extensions pre-packaged under different names for various target audiences, and they - especially the Java ones - have a lot of features, and decades of polish.
drdaeman
That's true, but that's Jetbrains core product. They sell it as Python IDE, batteries included, and they develop it with that intent.
VSCode does not get that kind of love, it is marketed differently and has different core values.
TeMPOraL
Use Emacs - it's a big pile of stuff that's very well integrated, because the platform lends itself to deep interoperability - thanks to a strong conceptual model and extreme reprogrammability. :).
Jokes aside, I guess what VS Code needs is to grow a strong community of people who care about the editor as much as what they do using it. Emacs has managed to do that, so it's possible.
jimbokun
It seems like Emacs shares the same product philosophy of VS Code. Outside of the core functionality everything is an ELisp/Javascript plugin.
That explains Emacs amazing longevity, but as the article points out, Emacs longevity is actually a problem as its keyboard and UI conventions predate the modern conventions that came with Windows and MacOS.
TeMPOraL
It's a slightly different philosophy. Emacs is best viewed not as text editor with plugins, but as a Lisp Machine emulator with a text editor. The joke about it being an OS is more true than people think: what you get is a (2D, not 1D like shell) text-oriented programming environment, back from the times where "a programming environment" meant a fully end-user-programmable OS.
This has an important downstream consequence on the "plugin" ecosystem: since these "plugins" are better seen as small applications running on in a shared, restriction-free OS, they don't need a fixed and restrictive API to interoperate. The entire Emacs is the API, and as long as an elisp app follows conventions and plays nice, it will almost seamlessly interoperate with every other app. And in cases where it doesn't (e.g. you try to use two apps that do roughly the same thing), it's relatively trivial to patch out the conflicts yourself. Having an integrated debugger and REPL is also helpful :).
VSCode philosophy feels more restrictive compared to that.
As for the keyboard conventions, it's true and it impacts the market share, but that's a problem for almost any software that reaches longevity. Conventions come and go, so it shouldn't stop one from learning a tool that keeps proving its worth over decades. And in case of Emacs, if you don't like the default keybindings, you can quite easily patch them up to follow whatever convention you fancy :).
Terminology is a slightly worse problem because you can't patch that out if you don't like it - but then again, it's just a bunch of terms you need to learn; par for the course for any developer.
bitwize
The difference between VSCode and Emacs is the difference between an extensible text editor, and an editor that was designed to be extended, molded, and shaped as you work. At any time within Emacs, you can evaluate Lisp code to extend or modify its functionality. What's more, the always-on presence of Lisp turns Emacs into a computing environment with strong editing primitives, rather than a text editor with stuff bolted onto it. I use it to automate tedious tasks, where it serves as a sort of Lisp-programmable super-shell that can ingest data from processes and network connections into buffers, as well as the inverse, all under the control of a powerful programming language.
bloopernova
I've recently switched from Spacemacs (vim-style modal editing and keyboard commands, in Emacs) to "Vanilla" Emacs.
I've been finding that once I changed capslock to become control, the various keyboard commands in Emacs make a lot of sense to me. In fact, far more than I thought they would, to the point where I'm feeling a lot more comfortable and competent performing the shortcuts, which means I remember a lot more of them. (Remembering shortcuts has always been a problem for me because I have various Adult ADHD issues.)
Sure, it's just one person's anecdotal and subjective, experience, but I've found myself using Emacs to edit my code (mostly Terraform and Ansible) much more than VSCode.
geraldcombs
There are two aspects of this that I run into:
- Features that should arguably be built in require searching for, evaluating, and installing a plugin.
- Some plugins spam you with a "What's New" page with each update.
Bookmarking is an example of these two in action: https://github.com/alefragnani/vscode-bookmarks/issues/175
lloeki
> It reminded me of using VIM as an IDE - not an IDE, a big pile of stuff that isn't integrated.
I prefer to use Vim as a powerful editor, within Unix as my IDE.
oceanghost
I have to reinstall PlatformIO every time I use the program.
It only takes a second but its absolute madness.
ldiracdelta
I wanted to replace Arduino IDE so bad, but it kinda works. Certainly compared to the pain I experience on PlatformIO.
sorenjan
Arduino also has "Arduino Pro IDE" that's based on Theia, a VSCode fork.
https://blog.arduino.cc/2019/10/25/new-arduino-pro-ide-a-clo...
diydsp
Yes it seems to be different everytime I use it. But the one time that the debugger worked was amazing. Wish I could make it happen again.
PascLeRasc
It's always worked well for me on Atom, for what it's worth.
ClikeX
I disliked Rubymine because it tried to do too much. And it didn't work well with my docker stuff. Which ultimately made a lot of it useless.
My VScode is tweaked to the languages I need and I can use one editor to switch between them.
And the linting and formatting just works.
city41
Curious what language/env you tend to work in? I have found that working in JavaScript and TypeScript, I don't really need any plugins when using VS Code. I do install a couple, but none are essential, just some small niceties.
koolba
VS Code is awesome. If you told me ten years ago my daily driver text editor on Linux would be a Microsoft product, well, you’d have been right.
Sane defaults. Snappy interface. Universal UI on multiple OSes that doesn’t suck. First class and best in class TypeScript support. It’s going to be hard to beat, now or five years from now.
BossingAround
It's good for JS. It's ok for Golang, since there doesn't seem to be anything better that's free. But I still feel it's an editor trying to be IDE. I love it for markdown/asciidoc though.
Teknoman117
I'm a long time Linux user/developer, and I've completely switched to it for C++ on Linux.
I've used vim and various simple text editors for a long time, but wow is VS Code nice. The Linux port of IntelliSense (at least for me) works more consistently than any of the of the code introspection tools plugins for vim I've tried. It works especially well if you're using CMake - it can pull all of the header paths out of the generated build system without you having to touch anything.
(using Microsoft's C++ plugin and the vector-of-bool CMake plugin (which Microsoft took over development for))
abhijat
Have you tried out the vscode-clangd plugin?
jhoechtl
Using NVim with go-vim, disabled gopls instead using gopls from native lsp. I am fine with that combo.
Markdown on Vim requires fiddling with formatoptions but combined with live :MarkdownPreview in the browser while you type in Vim is fine and displays mermaid among many other markdown extensions.
RMPR
For markdown I don't use/need a plugin, with entr[0] and Pandoc you can emulate the live preview feature easily, without even needing a browser.
kushalpandya
My only problem with it is performance when you load large repos and occasionally large files because it is an Electron app eventually. I know the extension ecosystem has thrived just because it is Electron but I wish MS worked on a native editor to achieve it.
enlyth
People like to bash VS code performance, but try opening a 60MB JSON file in different editors on Windows for example.
Notepad doesn't even load and crashes, Sublime will takes minutes to even load the file, Notepad++ will be unusable as scrolling will take a few seconds, and in VS Code it opens immediately and you can seamlessly scroll to any one of the 600k lines without any delay.
cercatrova
Load it in Vim and it works as smoothly as with a single line file.
gfody
there's a great but not well known editor for windows called EmEditor that has a strong emphasis on performance and large file support. afaik the author has a background in low level performance optimization from Intel. if you work with large csv and/or json files you want this editor - it's amazing!
altdatathrow
fwiw, I have the opposite experience with JSON files and sublime vs. vscode. Sublime opens fast and seamless, VSCode basically ceases to operate while it struggles to figure out syntax highlighting of such a "massive" file. I have near barebones installs of both, I do not believe it's plugins nor settings related.
Ultimately VSCode is my daily driver but I use sublime3 when I need to do fluid text editing, anything column/multi-select based, regex replaces, or manipulating large files. VScode has those features but they feel slow and buggy in comparison.
beart
I can't agree on Notepad++. It is my go-to for opening very large log files and I've never noticed scrolling issues. I love VS Code but I've found notepad++ to be the better solution for 'read-only' situations (opening very large files, searching files / directories).
Aperocky
That's why... (insert brain's attempt to argue for vim)... you don't open files on Windows.
AlfeG
With some reasonable delay VSCode will even manage format and highlight this 60mb json. Search will work instantly.
mattlondon
For what it is worth, I have never experienced this issue on modern hardware, and I regularly work with a very large monorepo.
Perhaps it is my habit of opening a subset of the repo into the workspace rather than the whole thing (e.g. only the bottom 4 or 5 directory levels so there is at most only a few hundred files in the workspace - builds etc just run from the usual command line so not having the entire repo in the workspace is not an issue for my workflow) but I have been nothing apart from really happy with the performance and have never been found wanting more, apart from loading time but that only happens once or twice a week so I can live with that.
lioeters
I use VS Code daily, and most of the time I have a single workspace open with everything in it, probably more than a thousand repos.
Checking now, the workspace contains ~3.7 million files. I have had no perceivable performance issues with the editor, it works like a champ. Granted I have a beefy machine, but VS Code has been a pleasure from my first impression. For my needs, it's a great development environment.
Recently I onboarded someone to set up remote SSH editing. It did require a few technical steps, but after that they were joyous to see how well it works - a "game changer" in their words, saving them a lot of time and effort.
bad_user
It has the rendering engine of a browser and that also has some advantages in rendering capabilities. Browsers are really good at rendering rich text, it's what they were designed for, and a native editor can't beat that.
There's the occasional big text file that I have to open, in which case Vim would do a better job. But usually VS Code has no performance issues for me.
jhoechtl
Me as a Vim fan I thibk its save to say that even vim doesn't handle large files well and is especially bad with files containing long lines.
stu2b50
See, I don't think that's possible. VSCode only has 10 or so employees full time. I don't think they could make a good text editor with this kind of dev speed on 3 different platforms natively.
Sublime is great but it updates once every other blue moon for a reason.
laqq3
> Sublime is great but it updates once every other blue moon for a reason.
I like both editors (VSCode and Sublime) and just want to point out that Sublime Text 4 is in semi-public alpha. It is "semi-public" in the sense that the download link is given in the Discord channel, but anybody could join it.
For nine months or so, there has been a new release of ST4 every 2-3 weeks. Development is definitely ongoing (though I'm quite happy with ST3 as it is).
rektide
> My only problem with it is performance when you load large repos and occasionally large files because it is an Electron app eventually.
Discovering & pre-loading hundreds of thousands of files is slow on native too. I'm not particularly pleased with how easily folks write off web platform tech as somehow being the source of problems or slowness.
The one complaint that does seem fair is that the memory usage can be high, because there's so much runtime to load. Also, I just keep thinking about your ask here. You want a native editor. But it wouldn't be a native editor. It'd be a native Windows editor, a native Mac editor, a native Android editor, a native iOS editor, a native web editor, a native Gnome, a native KDE editor, &c &c; your preference seems to be that Microsoft have made at least 5 editors. I'm not sure how the plugin system could exist amid such a diverse amount of native runtimes.
gameswithgo
the electron overhead is fixed. if it has problems with large repos it wouldn't be due to electron. it would be due to vscode itself or some extension you are suing.
undefined
undefined
qppo
There's a couple big knocks against VS Code that don't get brought up enough
The extension API is underdocumented. It's very difficult and time consuming to onboard yourself as an extension author with just the MS docs, since they don't cover the entire API and the vast majority of data structures are undocumented entirely. This is really annoying when functions take structures as arguments and have optional fields. Descriptive naming isn't descriptive if it describes how the argument is used by the callee, not what it means to the intent of the caller.
VSC also inherits the core weaknesses of Electron. Not overall performance/memory so much as startup time (just a second ago I had to wait 3 minutes for VS Code to boot because I had too many workspaces open when my laptop's battery died on me). It can't open multiple windows in the same workspace (this is actually a fundamental flaw when debugging any kind of extension that needs to open its own workspace). It's possible to build an extension that uses compiled node modules, which is great for performance and usability, but it's officially unsupported because those modules are only compatible with the node version of a client's VSCode.
But when all is said and done, VSC has shown that it's a great platform and easy to target as an extension author (or easier than others), LSP and DAP are huge milestones, and the architecture itself is just so friendly to extension that it's created a fantastic and lively ecosystem.
But petty gripe: please kill the git username/password fields when I git clone a private repo over HTTPS in the console. I don't like being aggro towards what other devs find cool, but I think hijacking a CLI with an extension incredibly annoying. And I can't find a way to disable that specific "feature" without disabling all of the git integration, which I use all the time.
joaomoreno
Hi, VS Code dev here. We actually put a lot of effort into documenting API and extension development. This is why `API` is one of the main sections on our home page: https://code.visualstudio.com/api. It's also why we have very restricted API guidelines: https://github.com/microsoft/vscode/wiki/Extension-API-guide...
We'd love to hear more about the lack of documentation you're referring to. It's definitely a solvable problem. Could you create an issue so we address the problem? https://github.com/microsoft/vscode/issues
Also on
> But petty gripe: please kill the git username/password fields when I git clone a private repo over HTTPS in the console. I don't like being aggro towards what other devs find cool, but I think hijacking a CLI with an extension incredibly annoying. And I can't find a way to disable that specific "feature" without disabling all of the git integration, which I use all the time.
This can be disabled with the `git.terminalAuthentication` setting.
qppo
Thank you!
stu2b50
>Not overall performance/memory so much as startup time
Is this actually a problem, though? I typically use VSCode as a "focused" text editor; it's for working on a codebase for a long period of time (relatively speaking). A minute or do startup amortized over hours of work is not much of a bother really.
For quick edits, vim is still my go to. Different tools for different needs.
qppo
Yes, because of how VS Code has evolved we're not using it for quick edits but as a front end to entire systems. If I need to check something quick in a remote session that is configured through some extension in VS Code without simple terminal access and for one reason or another I haven't left it idling all day, those times will hurt my productivity.
munificent
I like the enthusiasm, but this article is a little too breathless to be fully believed.
> The most important thing I look for when choosing which tools to use is longevity.
In my time, I've programmed using Director, Microsoft QuickBASIC, FutureBASIC, THINK C, CodeWarrior, BBEdit, TextMate, Visual C++, Visual Studio, Sublime Text, Eclipse, Atom, VS Code, IntelliJ, XCode, and probably a few others I'm forgetting. I don't have any particularly strong attachment to any, except for maybe Sublime (which supplanted TextMate, which supplanted BBEdit).
Instead, what I've found is that IDE evolution is converging such that hopping between them gets easier and easier over time. The shortcuts and mouse behavior is becoming standardized, and the feature sets are getting more similar. These days, I just use whatever IDE is the "main" one for whatever language I'm developing in. Within a day or two, I'm up and running fine.
The only one I particularly enjoy using is Sublime and that's mostly for what it doesn't do than what it does. Sublime is fast and unencumbered, so it stays out of my way when I use it. I strongly prefer it when I'm writing prose for that reason.
richiebful1
I agree. With language server protocol becoming commonplace for auto-complete and static analysis, I don't see a huge difference between various text editors.
TheRealDunkirk
I've given VSC several months. I just went back to ST3. I find it refreshingly clean.
toastercat
I'm in a similar boat, except I used VSCode for two years before switching back to Sublime Text. I remember watching [this funfunfunction video](https://www.youtube.com/watch?v=dIjKJjzRX_E) and thinking how much I related to what he says about becoming addicted to tooling. This was me with VSCode; I was spending a large amount of my work time tweaking it, adding plugins, tweaking plugins, troubleshooting plugins, removing plugins, looking for new plugins, etc.
However, the main kicker that made me switch back to Sublime was that I started it up one day and was astounded by how much snappier and responsive it was compared to my plugin-ridden VSCode. Admittedly, I do miss a lot of the plugins I used to use with VSCode, but at the same time, I'm happy to no longer have to rely on them.
switch007
The UI is an absolute mess.
"Check for updates" immediately shows "Downloading updates". That's not what I expected. How about some confirmation?
Start a .NET project and you see "Downloading package 'OmniSharp for OSX' (49713 KB)", "Downloading package 'Razor Language Server (macOS / x64)' (51227 KB)". No prompt. Just starts downloading 100MB of deps.
For some reason the Output tab down the bottom has 20 options in a dropdown menu to switch to different outputs ("Github Authentication", ".NET Test Log", "OmniSharp Log"). I'm not sure why I care about any of these - if I do, why are they hidden in a dropdown menu?
F# gets its own icon on the left menu for some reason.
"Accounts" in the left menu has a notification badge with a count of 1 because I'm not signed in to sync my settings.
The settings icon on the left brings up a menu of 12 different options, some of which launch a settings editor, some launch a pre-defined search of extensions, another pops up a modal dialog.
In a .NET project, if I "Start Debugging", it opens a launch.json and in a comment tells me "Use IntelliSense to learn about possible attributes", making me define my own launch configuration instead of a default
mas3god
Compared to jet brains though? Id argue its a huge improvement.
no_wizard
In what way?
When I used Rider at my last job, it would pick good auto defaults that you could customize based on the project configuration, including automatically generating IIS express configuration values.
Are there more explicit downsides you can mention?
switch007
Comparison of what exactly?
JetBrains' IDEs have built-in update managers. They present you each plugin, giving you a tick-box of which ones to update. The Toolbox app manages the IDEs, allowing to update automatically or not, install pre-releases, and roll back. It's polished.
The IDEs use the established desktop UI norms of toolbar menus.
They come with pre-defined 'Run' templates for many languages/frameworks.
There is a single Event Log for output of updates etc.
The left menu has words so I know what the icons mean, and isn't obnoxiously large due to over-use of large icons.
mas3god
I agree its good for a single framework. But the amount of features/ui for things I'll only use once on a blue moon is too high. I'll take config files and shell commands over multiple layers of buttons and menus any day of the week.
sedatk
Yes it’s subpar compared to Visual Studio as a .NET IDE, but that’s probably one of the reasons .NET hasn’t been prioritized yet: There is Visual Studio.
macinjosh
If you want a text editor with longevity try vim or emacs. They aren't dependent on the benevolence of a greedy corporation. Over time VSCode _will_ be raided by the bean counters at MS and it will begin to track you, give you ads about MS products, and lock you in to their ecosystem.
I'll never understand why a professional developer would give so much influence over their work to the likes of MS, JetBrains, etc.
Sure vim and emacs aren't the easiest to learn but if you're going to write software for a living it is not worth wasting your time with toys like this.
zeroxfe
Two decades of vim here, and I switched to VS Code. As a "professional developer", it's just nicer to use, and makes me feel way more productive than ever. I definitely wouldn't call it a toy.
cutler
It's not like you have to give up Vim anyway considering the good-enough VSVim plugin gives you most of the Vim basics. Personally I have found JetBrains' Vim plugin to be the best.
theCodeStig
I've tried vim support extensively in VSCode, IntelliJ, and Emacs. The vim plugin for VSCode is sorely lacking; particularly with macro support. For my use case, it's unusable. The vim plugin for IntelliJ is slightly better. It's usable, but I still find it lacking. In my experience, the best (by far), is Evil for Emacs.
macinjosh
If you use vim to its utmost a plugin that emulates vim in another editor pales in comparison.
It is like learning to play an instrument. Some people stop digging into it when they learn to play a few tunes but the true beauty comes out when you really invest the time into it.
macinjosh
I regret using the term toy. Please forgive me :) From my perspective I just can't see investing my precious time in a commercial tool.
globular-toast
You should have switched to emacs. You could have kept the vim UI but got all the stuff (and more) that you get in VSCode. Unfortunately the vim -> emacs path is taken by very few due to religious reasons.
TaupeRanger
I find comments like this incomprehensible. Are you using a Vim emulator in VS Code? If not, how can you possibly be more productive? People use Vim precisely because it offers a faster more efficient way to write code. What is it about VS Code that makes you more productive?
cylon13
Not the parent, but I switched from vim+plugins to vscode+plugins for most development. I absolutely use the vim plugin because I can't stand to edit text without vim keybindings anymore. The reason I switched is that plugins in vim are more of a pain to configure and they are usually less maintained and polished than their vscode equivalents.
For example, let's say I'm not set up to program rust at all. In vscode, I just search "rust" in extensions, grab the most popular one, and it sets itself up magically. In vim, my experience was that I would lose a few hours to configuration, and the plugin would still be a little janky.
I still use vim as a plain text editor, and every once in a while I need to open a file in vim to do some serious macro editing (macros aren't perfectly supported by the plugin), but for the most part vscode+vimplugin is just nicer to use for day to day development. I should specify that my daily work languages are typescript & c#/unity on linux, but I've also been writing a fair amount of rust lately.
snarfy
I use both. If I want to look at a single file I'll use vim. If I want to look at a group of files in a folder I'll use vscode.
They are both text editors that support plugins to the point of becoming an ide, but it is far easier to make vscode work as an ide than it is vim, and that's coming from somebody that's been using vim since it's inception.
BeetleB
There are more aspects to productivity than typing efficiency.
mekster
I'd like to assume you're joking but 20 years of vim doesn't get me anywhere close to the productivity of JetBrains or even VS code on their first years.
Vim first of all has its default set so that only very patient people can live with it. So you need to edit the defaults so much to make it slightly more comfortable, and you need to pick plugins that only some work as expected, mostly not updated in years and they add yet more crazy shortcuts no one can remember and still don't work like modern editors do.
I only use vim to edit config files on servers but VS code can do that these days, vim is losing a position for me as of late. Glad it invented modal typing but it's as ancient as one would guess.
macinjosh
> 20 years of vim doesn't get me anywhere close to the productivity of JetBrains or even VS code on their first years.
If that is the case you only scratched the surface of vim.
mekster
I think vim is like a rock, so it takes quite an effort to even scratch it then.
But even if you use a drill, can vim even become as useful as IntelliJ or VS code? I doubt that.
brandonmenc
> I'll never understand why a professional developer would give so much influence over their work to the likes of MS, JetBrains, etc.
To flip it, I'll never understand why a professional developer won't spend a measly hundred bucks on an IDE that has everything set up out of the box.
Also, VSCode and IDEA are both open source.
macinjosh
> Also, VSCode and IDEA are both open source.
In both cases its open source like Android is open source. The core code is available but its pretty much useless compared to the commercial version. On top of that it is still owned by a corporation who probably don't have their users interests in mind.
bryal
VSCode isn't open source, but VSCodium (which comprises a significant subset of VSCode) is. See https://news.ycombinator.com/item?id=24561289.
criddell
It's not that hard to learn a new editor and learning new software is something I enjoy. Even if Microsoft does ruin VSCode, who cares? Vim and Emacs will always be there waiting.
In the meantime, I'm loving PyCharm for Python, Visual Studio for C++, Sublime Text and Obsidian for Markdown, VSCode for Javascript, etc... Different tools for different jobs.
yepthatsreality
Tracking and advertising already happens via telemetry and suggested extensions.[0] However currently you can turn it off.
untog
I don’t really understand “influence over your work” here. I agree that there’s a possibility MS will add some kind of monetisation I don’t like in the future... at which point I’ll switch editors.
But as it is, I’m much faster and efficient using VS Code than I am using Vim. It is in no way a “toy”. And it doesn’t influence my work. It’s a text editor!
higerordermap
I don't understand why a professional programmer sounds like a privacy activist. When they try to lock in, we would know, and someone will fork.
bigpeopleareold
The last time I opened VSCode was a few months ago. My work has shifted to other things, so I needed it a little less than before. I really hoped that VSCode could be an Emacs replacement, but I think that's a bigger job for me to pursue than I want to commit to.
For me, Emacs is not perfect, but it has always been the most versatile software I worked with. It's very much (and I want it to really be) the everything text editor. I got the interaction model (with a few good modes) burnt into my brain. I find it hard to get used to anything else (I usually also end up installing plugins to emulate Emacs in other editors/IDEs, but they never as good as Emacs itself.)
VSCode does get a lot of things right out-of-the-box: the interface is snappier when doing things like code completions and language plugins are rather consistent with little effort. But that's where it stops for me. At least I understand its popularity.
nickjj
The thing that bugs me about VSCode is it's labeled as open source but a lot of pretty critical and interesting components are closed source so you have no idea what's going on under the hood. Normally that's not too big of a deal (I use plenty of closed source apps), but when it's Microsoft it's hard to trust what they are doing with that data. That and I feel that this promotes vendor lock-in at multiple levels.
Overall claiming you're open source when a decent chunk of your code base is closed source is kind of like those people who always bring up that they are a non-profit organization and are doing things for the greater good, meanwhile it's mainly used as a way to evade as much taxes as possible while they live very generously. I have nothing against that personally but it's the way it's presented. It just gives off a bad vibe.
mdaniel
Are you aware of vscodium? https://github.com/VSCodium/vscodium#why-does-this-exist
I have not personally audited it to see if it's better or worse than upstream vscode, but I believe the spirit of the project is closer to what you had in mind
orange8
What are some of all these pretty critical and interesting components you mention?
nickjj
The biggest feature is probably remote. This is what allows you to have your code in a remote location (SSH, WSL and containers) and still get an integrated experience as if things were all running locally. If your app is Dockerized or you use Windows with WSL and you like intellisense, you're likely using this feature.
Some of the language servers for popular languages are closed source too, which is weird because I thought the idea of a language server was to work together so all editors could get excellent language specific features without having to reimplement the same logic in every editor.
That's not an exhaustive list, just what I know off the top of my head. I also vaguely recall reading something about a year ago about some core bits of the editor being written in C++ for performance reasons and those are closed source but I can't find a reference and don't know enough about the code base to track that down so I don't want to say that with any type of authority. Would be great if someone more knowledgeable in the area could track that down, or come up with a more exhaustive list of things that aren't open source.
orange8
What you don't seem to grasp is the difference between a project, and the eco-system that grows around it. SSH, WSL, Docker, third party language servers etc are not a part of VS Code.
> That's not an exhaustive list
What list? You haven't mentioned a single one of "all these pretty critical and interesting components" you talked about.
est31
I guess they are referring to the Microsoft provided plugins which are proprietary and their license denies usage with any VS code fork. Personally I've never felt the need to use them, but admittedly, I barely use VS code at all.
orange8
If I've never heard of those plugins, they cannot be that critical or even interesting.
zanny
Like the Chrome and Chromium relationship a lot of distros package VS Code as just Code for a version built by your distro without the proprietary extras.
no_wizard
Question I have for everyone who doesn't use an IDE
What is your workflow? I find the following to be true, in that one of 3 things happens inevitably:
1. The Text Editor becomes the IDE, (e.g., with VSCode, if you just live in plain HTML, CSS/SCSS/LESS and JSX/TSX/JS/TS all day, its actually pretty great, lots of well maintained extensions and Microsoft really put their energy into capturing into this market with VS Code I think. If you have more than ~10 extensions installed, I'd argue you got an IDE (not including themes or colorizers))
2. They have extensively curated vim or emacs setups that were built over time to add IDE-like features, in some cases I'd argue they become IDEs themselves via deep customization
3. They move to an IDE
So my question is if none of the 3 are true, whats your workflow like?
For context of my own workflow, it slowly over time is all around my IDE (JetBrains user, hardcore. You'll pry it from my cold dead hands). With the exception of running scripts (sometimes, like builds) and using git (git CLI is the best git interface IMO) I have moved it 100% into my IDE, and I'm so much faster at things, including picking up new languages
When I started, I used VS Code heavily professionally, and vim before that, and relied on the CLI for anything outside of editing the code (basically, I think I had some auto formatting setup too), but I hit a wall at some point where I never turned back and went full into JetBrains to this day
ben-schaaf
I run a pretty much stock configuration of Sublime Text alongside gnome terminal. I have no issues navigating projects as large as gecko/WebKit/Linux and getting spun up on a new language is really fast: Open the project, maybe install syntax highlighting if needed and you're good to go - as opposed to finding/installing an IDE.
My last Job had a large Java codebase and all my colleagues used Java based IDEs. I didn't see any performance disparity. I more than once saw a colleague take 5+ minutes making the same edit on a large number of lines because they hadn't learnt how to actually efficiently edit code in their IDE.
The way I see it, you need to keep the codebases you're working on in your head anyway (the parts you're working with anyway) to actually be productive. You do this by reading and understanding the source code on the screen. Until an IDE can provide a tailored human interpretation of the code it's analysing rather than some narrow static analysis I just don't see the point.
pier25
Same. I use Sublime with very few extensions.
I have my own extensions for JS/CSS snippets and my custom color scheme, but that's it.
I've used VSCode and Atom for a couple of years but they feel so bloated once you have multiple projects open at the same time.
It's probably because I'm getting older, but I also find the UI quite annoying and distracting.
dmitshur
I use a simple code editor with as few extensions as possible, and a terminal.
My goal is to keep my setup as simple as possible so that I’m able to switch easily, but I’m not really looking for more features or functionality.
kccqzy
I'm exactly what you describe at the end: a simple Emacs editor (with Evil) and CLI for almost anything else. Building and running code? They all happen in the terminal. Version control? I tried Magit, didn't like it, and went back to git CLI in a terminal. Auto formatter? Likewise in the CLI; in fact I have shell aliases that automatically run them when I commit.
I haven't really hit a wall, and I personally think I'm just as productive, if not more, than IDE-using colleagues.
luord
My answer is in this excellent series I read a while ago: https://sanctum.geek.nz/arabesque/series/unix-as-ide/
Which, admittedly, is essentially the same as the other answers you got, but that's how I've been working for three years, since I decided to use vim exclusively.
At the start, I was really tempted to install plugins, but ultimately I decided not to. Both to practice with the terminal (which has been immeasurably beneficial) and to make it as easy as possible to switch computers at the drop of a hat without losing productivity: just install vim and I'm good to go (and often not even that is required since vim comes preinstalled often enough).
Grue3
For Python work I use a pretty much out-of-the-box Emacs, with "magit" being the only plugin of note installed. And I also used "web-mode" when I was doing webdev. magit is the best Git interface ever, and a built-in Emacs feature called TRAMP allows for remote editing. I'm running ipython in a separate terminal. I don't really understand why you'd need something more than a text editor to edit Python code.
Now for Common Lisp I use SLIME, which I guess does count as IDE, seeing as it's much more powerful than most IDEs.
mixmastamyk
Geany plus Makefile with automated functions. Build keys can be assigned to avoid Window switching.
What walls were you hitting?
Disclaimer, I have used Pycharm on a really big work project but most of the time, don't.
no_wizard
Admittedly a lot of it is around things like built in documentation, viewing source code from inside modules (I’m a frontend software engineer so inside node_modules for instance) and the ability to simply let the IDE handle certain things with refactoring components or generating boilerplate.
I found I repeated myself less and improved my productivity this way
mixmastamyk
Yep, I set up aliases and scripts for similar needs.
undefined
pjmlp
Given the talks from Microsoft's own React Native team regarding the 300x performance loss from Electron based apps, I am looking forward to the day it gets rewritten in React Native.
gimboland
I'm looking forward to the day when you can have multiple windows open on the same project without going through some horrible kludge. Some of us (!) have more than one monitor and would like, say, to put the debug widgetry over on _this_ one.
(Edit: fixed three typos.)
colordrops
Speaking of which, as a light user of VS Code, is anyone else completely confused by the project / workspace interface? I'm always confused as to what project or workspace I'm in and what file is associated with what workspace, and what mode I'm in. The UX could use some love with the onboarding experience.
ClikeX
I open a new window for each project, so I don't share this pain.
mjayhn
I think there's a plugin for it but workspaces would be much more valuable to me if they weren't a file you saved. The idea, I assume, is something like "these 10 repos with these 15 plugins are how I deploy this project."
In the end due to its UX I think it's pretty useless. I do use it on BIG projects because sometimes vscode will update or barf and forget what I had open.
I mostly just do "open folders in workspace" then hope it never goes away.
IshKebab
Not at all. You can open a directory, or a workspace. A workspace is just a collection of directories.
If you want a confusing workspace/project system try Eclipse!
collsni
I am glad someone else shares my pain.
orange8
I bet you are also looking forward to the day when web assembly kills js, and everybody stops using html and css.
ssivark
You probably mean something in the ballpark of 3x or 300%, rather than 300x?
pjmlp
See the linked video, it is already on the specific moment they talk about it.
Arnavion
Yes, and your video shows Electron at ~700% of UWP C++ while React Native for Windows is at ~200% of UWP C++. That means an Electron program's reference set is ~3x as large as a RNfW program's, not 300x.
ssivark
Yes, I did, which is why I’m specifically mentioning it.
zamalek
That would be awesome but would have be a complete rewrite of Monaco, and text editor renderers are near the top of programming dark arts.
globular-toast
Can React Native run natively on Windows/Mac/Linux now?
pjmlp
On Windows/Mac yes, that is what Microsoft is implementing.
Linux, there seems no plans other than driving people into WSL instead, so.
globular-toast
"Microsoft loves open source".
Get the top HN stories in your inbox every day.
I find this post along with the comments in "A Picture of Java in 2020" https://news.ycombinator.com/item?id=24551390 to be incongruous with my experience as a professional developer.
My first couple of years writing software I used Vim, then VSCode, then worked in a Java shop and was forced to use IntelliJ. I didn't like it at first, but now after a couple of years I cannot see how I lived without it.
The idea that VSCode is the future doesn't seem right to me. JetBrains products allow you to do so much out of the box, without installing a million plugins that may or may not work. In IntelliJ I can write a half baked statement like `new Foo()`, and then Alt + Enter my way to it being `foo = new Foo();` as a private member variable of the class in no time. If you take time to set up configuration it becomes even more powerful. Even these basics are more difficult in VSCode.
To me the future is IntelliJ for Java and all other languages should seek to have such a nicely integrated experience with an IDE.
I am not even sure I could write Java from scratch in Vim - its really that I'm using IntelliJ, not writing Java. Is this bad? In some pure sense, sure, you are further from the language. But I don't care because I can write and edit code some multiple faster than if I was in VSCode.