Can we trust Microsoft with open source?
dusted.codes
dusted.codes
My creep alarm went off a bit when I recently started a project to test the waters with TypeScript. I was asking on a forum how to deal with native JS dependencies without types, and he answer I got was "Are you using VSCode? It will just find the community maintained type packages for you".
It seems to me that VSCode's "just click the button to solve my problem" style of UX makes it very easy for developers to become reliant on proprietary workflows without even realizing it. If one were to pursue an EEE strategy, this would not be a bad way to start.
Certainly “making a better product that’s easier to use” isn’t something we should be discouraging.
I am primarily a vim user with VS Code as my secondary editor. I have never ever used their one-click solutions.
I have seen someone choosing "Yes" to everything VS Code said after installation, and in no time their machine was filled with bloat that they would never ever need.
But I see this as a good thing. It is making programming set up easier for the uninitiated, which is good.
The uninitiated should begin with a bare-bones text editor and a shell prompt. If you don't understand what is happening from that level, you will never understand what is going on in complicated frameworks. You will be the programming equivalent of your grandmother who thinks Facebook is the internet.
> We have to remember that that is the end goal -- spend less time programming computers, and less time solving problems, and more time with a working solution.
I of disagree that time-to-solution is the true end-goal. It might be, depending on your use case, but there may be other constraints. For instance, let's say I make a piece of software, and I have a choice between choosing an "easy" solution which takes me 100 hours to complete, or a hard version which takes 500 hours. And let's say the easy version allows the user to complete their task in 30 seconds, where the hard version allows them to complete their task in 10 second. That means every time my code is executed, I have saved 20 seconds of the user's time by doing things the hard way.
Now let's say my code is executed on average 1000 times per hour. That means every hour my product is out there, I save about 5.5 hours of user time for doing things the hard way. In only 72 hours, that 400 hours of productivity I "lost" is made up for, and for the rest of the lifetime of the product it's pure upside.
At the end of the day, programming is about making computer hardware do what you want. If we let ourselves get too far away from the computer, it's hard for us to do that well.
If you know the basics you can apply them to any tool. If you only learn to build software using a specific framework, IDE etc. you're probably going to have problems if anything in the setup changes. One day in a simple text editor and a shell taught me more about how Java builds work than years of formal education, because all those years were spent in an IDE and nobody even explained what the classpath is.
If your goal to solve a problem, then you should use something that helps you solve that problem quickly. If your goal to learn how to solve problems, then you probably shouldn't. Those are both valid use cases, but they are very different.
Get people excited and empowered, then teach them some arcana.
For instance, I think basically everyone can agree that moving from assembly to C and other high-level languages was basically a strict upgrade, and obviated the need for assembly programming in all but a few specific use cases.
By contrast, using the command line and shell programming is every bit as relevant as it was 20 years ago, and I don't see that changing any time soon.
Both assembly and the shell are difficult and alienating to newcomers. But learning is mostly academic at this point, while learning the other opens up entire new worlds in terms of what you can do with a computer.
In other words, learning assembly is like learning latin. Maybe interesting, but not particularly useful. Learning bash is like learning Chinese. Not particularly easy, but there's a lot you can do with it right now.
On the other someone could have said the same to your regarding assembly code and so on.
Just building more tooling to cover up pain points by wrapping them in more and more layers of bloat is just making a mess. You wind up needing a super complex system to do simple things, which nobody really understands, and which uses a ton of unnecessary resources. If you extend that strategy ad infinitum, you need Moore's Law to persist just to keep performance stable while running more and more layers of VSCode plugins.
I also don't necessarily think some barriers to entry are always a bad thing. Things like notebooks are great for giving people access to a simple programming environment which is easy to set up. But if someone is going to be committing code to a serious project I'm working on, I don't mind if they have to know enough about computers to at least run a few commands in the terminal.
Lower level technologies need to be more flexible to allow usage in many different cases. On top of that we build different abstractions that are suitable for only a restricted number of uses cases, but that make them much simpler to think about and work with. By thinking at this higher level we are able to build much more complex logics than we would have before.
I certainly wouldn't want to be stuck in a world where we still have to do everything in assembly because we were too afraid to embrace the compiler.
Progress isn't only about building and endlessly taller stack of abstractions such that we eventually can't see the computer underneath. Sometimes it's about looking at the stack we have, and building a smaller and smarter one based on the lessons we learned along the way.
If they're an enduser, btn click is exactly what they should use. If they are an engineer, and clicking btns is all they know, then they are going to be a very limited engineer. This too is fine and there is a place for that. But, if such an engineer starts to think that they are a great engineer because they solve all the problems quickly whenever there are btns, they are going to be a liability for teams when there aren't any btns to click. Because they are going to be too arrogant to listen to those who might know how to solve them which aren't necessarily btn clicks (because to them all solutions must be btn clicks). You see, it's more than a matter of principle. It's about the calibre of the engineer you want to produce.
I envision, with all this no-code babble, that the future "average coder" of 10 years from now will be a click-monkey.
Sadly, most people like not knowing things. I theorize that it empowers them to keep their brain free of potentially useless clutter.
Look at the case of the Web, HTML+CSS+JS standards and specifications (Drew DeVault triggered DDoS measures simply trying to access documentation), and the inability of even G-MAFIA scale companies from being able to sustain their own independent browser engine cores (Microsoft and MSIE).
Control is the ability to determine the options of others. A single entity providing an overwhelmingly appealing programmatic interface is a locus of control.
Most young developers don't care due to inexperience and coolness factor. As code becomes more sophisticated, build reproducibility starts to become a problem.
And, Microsoft is trying to own the toolchain's strategic points this time, making reproducing a build almost impossible without their tools.
And with the push towards remote development, I can see things moving toward a world where the default is not even running things locally. Lines get blurred, and sooner or later you're depending on proprietary Azure services without even realizing it.
Moreover, Eclipse has LSP support too.
Maybe these should be made more visible.
I say this as someone who had to search through a crazy large GitHub repository of community Types back in the day all the time. Then you end up having to send some PRs & wait for them to get approved if you hope to use the types in a larger team or as part of a build process. You could also create your own fork until they're approved & then go back & update the package.json.
So their acquisition of Github and the large effort invested in VSCode as well as privileging their own software stack over competing solutions makes perfect sense, business wise. It probably won't be good for free software though.
That said, the situation with W10+WSL reminds me a bit of the early days around OS X when we suddenly had a consumer grade desktop Unix experience. W10+WSL is clunkier, but trending in a decent direction.
Most corps I worked at had a specific setup I was required to use, which was generally windows.
It's further down the lock-in road, and if big corps want those handcuffs, good luck to them.
I still think macOS is the most user friendly UNIX, though.
As for WSL, I really don't care about it, I have been using VMWare with Linux distributions for about 10 years now.
Where are those philosophers?
I would like to know where would Linux be without Intel, Compaq, IBM and Oracle's money that started being pumped around 2000.
Even Wikipedia mentions it.
I really regret those years lost.
Microsoft is also one of the biggest gaming companies in the world (via the xbox platform) and zero initiative on free software anything over there.
Microsoft doesn't care at all about free software, or software freedoms. It's just a means to an end.
That said, this is also a legitimate interest. But what they did with the hot reload lately... I am not sure it is a smart move.
What do you mean by this?
The core IDE is all open source (except some closed source telemetry).
The common example I see quoted is that the super-old, legacy, C# debugger is closed source, but as far as I know there is nothing stopping people writing an alternative debugger for C# in VS Code. Jetbrains did it for Rider.
The SSH remote connection stuff, the Pylance Python LSP (you are not allowed to use it - the binary - in any other editor but VS Code, not even the OSS Codium) and some other extensions are CSS.
"""Can I load Pylance in Code – OSS? Pylance is licensed for use in Microsoft products and services only, so can only be used on official Microsoft builds of Visual Studio Code and GitHub Codespaces."""
https://github.com/microsoft/pylance-release/blob/main/FAQ.m...
Is your argument that if Microsoft develop any programming tool and then allow it to be used via VS Code they must open source it?
Would you place that same requirement on other extensions? (e.g. sonarcloud)
https://github.com/microsoft/pyright https://github.com/Microsoft/python-language-server
The only(?) one not by MS is Jedi: https://github.com/pappasam/jedi-language-server
This is the conclusion that most people don't ever reach. They assume that there is an altruistic element to things like open source within Microsoft (and other commercial organisations) and perhaps among the developers there is... giving back, helping out and all that.
But if Microsoft (or Google, FB, etc. etc) thought for one second that supporting, nurturing and building open source software and tools was affecting the bottom line negatively they'd drop it in a heartbeat: they answer to the shareholders and they only have one question - will this make more money?
In general it's always foolish to attribute altruistic intent to a corporation, and MS in particular given their history.
The average ice cream shop exists to sell me ice cream, they’re not on an ideological quest to improve the craft. And I can eat their ice cream just fine, because I like ice cream.
Microsoft sells Windows, but they are not content with just simply selling you an OS. There's plenty of privacy violating data collection and ads in the OS.
Windows 10 has tons of stuff that I don’t like. But the advancements in WSL and open source are a good thing.
By all means, apply pressure to Microsoft for things that they do wrong, and for bad decisions they make. But when they’re doing a good thing, maybe the default stance shouldn’t be to speculate about ill intent. Sometimes it’s nice to just enjoy the good thing.
The bad news come when you reach the "Extinguish" phase. [1]
[1]: https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguis...
A development environment and a production environment are inherently different in vast ways.
So even if your development environment is in the cloud, you still need a way to package your code and transfer to the environment similar to where it will run in production (whether it's bare metal, virtualized, container, or managed (e.g. serverless))
What the cloud providers are working on is making it easier and faster to continuously package transfer your development state to your prod environment.
But whether you're coding in a browser or locally it doesn't accelerate the deployment path.
1. Give away the Code Editor as Open source, but make important Plugins (Python Development, Live Share,...) closed source.
2. Make the life for developers easier/ more productive by integrating cloud offerings. Oh, you're starting a python project? Use our code space for development and click here to automatically deploy it to Azure, everything correctly configured. No need to deal with Ops.
3. Make $$$ with Cloud services and enterprise tooling.
git clone
nix-shell
# get developing[1]: https://github.com/PostgREST/postgrest/tree/main/nix#working...
pg_tmp [1] also helps
What about the author’s point that VSCode competes too well with visual studio, and that MS has intentionally underfunded Omnisharp, and that their own software stack continues to be poorly supported on VSCode?
The large effort in VSCode seems poorly invested if it’s used to push people to a paid product like VSCode.
> Throughout the last year we’ve been working to enable the best possible Hot Reload experience in Visual Studio 2022 and .NET 6. Part of our goal was to also explore making this feature available to customers through a variety of mechanisms such as bringing the full power of Hot Reload to as many .NET and C++ developers as possible when running through Visual Studio 2022 debugger, supporting Hot Reload when running .NET 6 apps without the debugger, and the very basic Hot Reload support we added to the .NET SDK tools through dotnet watch.
> As we reflect on what was accomplished, and what is still in front of us, the backlog continues to grow. This includes many high value scenarios that will benefit the broadest number of developers, including focus areas such as .NET MAUI, Blazor, adding support more types of edits, more optimized experience when working with XAML apps, and much more.
> With these considerations, we’ve decided that starting with the upcoming .NET 6 GA release, we will enable Hot Reload functionality only through Visual Studio 2022 so we can focus on providing the best experiences to the most users. We’ll also continue to pursue adding Hot Reload to Visual Studio for Mac in a future release.
So, first they wanted "bringing the full power of Hot Reload to as many .NET and C++ developers as possible" but now they shifted to "focus on providing the best experiences to the most users".
Best part of this whole thing is the pull request which was opened (https://github.com/dotnet/sdk/pull/22217) but " locked and limited conversation to collaborators" straight after opening it as Microsoft anticipated the backlash but still went ahead with the change.
Seems they still have a lot to learn before they can indeed be trusted.
If not for JetBrains Rider, dotnet development on Linux would be close to impossible IMHO.
When looking for my next gig I'll probably be switching to something else.
As a matter of fact, they implemented their own hot-reload functionality themselves [0][1].
[0] - https://twitter.com/JetBrainsRider/status/145148793146664961... [1] - https://www.jetbrains.com/rider/nextversion/
Whereas, Visual Studio... well, let me just say first that I know real people work on that product, some of them are probably reading this, and if so, I appreciate you.
Unfortunately, every time I've ended up having to switch from Rider to Visual Studio for some edge case scenario or to do an Azure deployment (before we moved that process into CI), I'd end up frustrated. Even with VS 2022, which is better, it's slow compared to Rider. Also, despite a couple of cosmetic coats of paint and new icons and such for VS'22, it doesn't really feel like a modern IDE or like it's changed noticeably since 2010 or so. Granted, stability is often a plus, but there's a ton of workloads in there that I don't think are relevant to a modern cross platform .NET Core 3.x/.NET 5/6 development experience and I suspect supporting all of that is a factor in why it's so slow.
I haven't even gotten into how much worse the performance in VS gets when you add ReSharper to the mix, and even with all the genuine refactoring improvements in VS in the past decade, I still feel like I'm working with a couple of broken fingers when I don't have ReSharper active. Better refactorings, better intellisense.
For years, the narrative has been that MS doesn't want to give away their tools for free because they don't want to undermine the commerical offerings of their ecosystem. There used to be a ton of companies making development tools, components, and so on. Microsoft mostly made money with Windows, Office, and so on, so they could give away their own tools almost for free (but preferred not to in order to keep the vibrant ecosystem running). It is really odd that anybody at MS cares about whether VS or VS code or an external tool is more popular.
Also this whole infighting between departments seems to be contaproductive. If I were top level management, I would tell people to get their shit together. If instead of working together to make the best products possible, a manager tells off an employee for working on the C# extenstion for VS (because it hurts his personal goals) I would at the very least reprimand the manager. That VS code has poor .NET support, or for another example that MS graphical toolkits have so much churn and they don't use them themselves, are really embarrasing mistakes. I'm sure people have been fired for lesser problems...
While we were there, Scott Guthrie (I’m 99% sure it was him) was supposed to lead us in some discussion but wasn’t there, and someone filled in for him. We learned later it was because he had been called into Bill G’s office and got dressed down a bit because Scott had basically created his own version of Apache web server to use within the dot net tools. It was rudimentary and temporary, but the reason he did it was because he had been trying for months to get the IIS team to give him a version of their server for use within the dot net dev tools, and they just kept putting him off. So he went around them and built his own. They found out, went up the chain, and Scott got dragged into the office to be told to cut it out and work with them instead.
Granted, this is 20 years ago, so my memory might not be as crisp, but it stuck with me as a lesson that Microsoft was not a single company, but like 10-15 different little companies, and they competed among themselves as much as they worked together. And as OSS was coming up at the time I thought, “they have no chance to survive what’s coming.”
I’m still not sure if I was wrong or not yet.
This is true for probably most – if not all – companies above a certain size. In my experience it really takes off at about 100 people, and it gets worse from there. My armchair psychology take is at that level you no longer know everyone in the company personally and "cliques" begin to form.
I am not affected by this as licensed VS user, but I also don't like how this story has been playing, and join my voice to those complaining how this was handled.
Therefore it really is a problem that MS has managed to get hold of github and npm. In my opinion it would be beneficial if this kind of "important infrastructure" belonged to a non-profit organization.
https://www.ft.com/content/01b7c7ca-71ad-4baa-bddf-a4d5e65c5... https://www.reuters.com/world/china/exclusive-china-readies-...
The only people benefitting from these mega-mergers are the handful of VC's and the C-levels involved. Everyone else suffers harm, including the government, which has reduced influence on actual governance. Money talks, even in Communism, and huge mega-corporations also impact China's government's ability to govern. I expect them to limit these sorts of arrangements more strictly than the US.
As a developer I'd love to be able to use .NET like I do Python, Go, JavaScript and Nim (ok, and Java, too). I love being able to write software that can run anywhere, using the editors and tooling that I like. VS Code is amazing in that it fits into my world. VS on the other hand, forces me to run a specific OS, and use a prescribed tool chain. FWIW, sometimes the prescribed way might be better, but it's not the way I want to do it.
Visual Studio is great for the common platforms/languages, but as soon as you try going cross platform or adding unloved platforms (UWP, Xamarin) it gets bad. Unfortunately, those also happen to be the things Rider is bad at.
There is a difference of degree, if not kind.
It's one thing for a smaller vendor to offer an 80% solution for free, and 20% enterprise features where there is competition to protect the market and the users.
It's quite another for a monopoly-level player that, for example, owns GitHub, to flex and threaten the market.
I'd support some serious anti-trust looks at what's going on across all of BigTech. MisterSofty is not alone in needing a review.
Microsoft wants to make money by charging for features. Unlike Apple, they consider developers to be actual customers. So I trust them to take care of our needs, and trust that their only ultimate motive is to get us to willingly empty our wallets in order to be more productive at work.
They won’t steal our data to sell to political relations companies like Facebook, create walled gardens and charge us 30% to import goods to our own captive customers like Apple, or arbitrarily try to control what can and can’t be done on the internet like Google.
They will just charge money for features like a normal business.
Don't look for companies intentions, look for their actions, as that's the only thing that matters.
Windows Home or Pro have mandatory "telemetry", as do a lot of their applications. It's even in the .NET Core CLI tools and has to be explicitly disabled.
> to sell to political relations companies like Facebook,
They own LinkedIn.
> create walled gardens and charge us 30% to import goods to our own captive customers like Apple,
They tried with Windows S.
> or arbitrarily try to control what can and can’t be done on the internet like Google.
They certainly tried in the 90s until they were stopped by the government. They saw the web (and Java) as an existential threat.
If they haven't been as successful as some of they competitors in doing evil in particular areas, that's not for lack of trying.
They own part of facebook, and they steal an incredible amount of data from Windows these days.
They have been trying to create a walled garden, with UWP and Microsoft Store. They have done poorly in the market but attempted a number of walled garden platforms.
Windows store is an attempt to charge 30% as Apple did.
They have tried in many ways to exert control on the internet, but have been outcompeted there by Google. One example of their control is SmartScan which scares users away from downloading programs they do not approve - a kind of walled garden. Many of their OSS plays are exerting significant control on users.
>> They won’t steal our data to sell to political relations companies like Facebook, create walled gardens and charge us 30% to import goods to our own captive customers like Apple, or arbitrarily try to control what can and can’t be done on the internet like Google.
It's just that if we want to say they're 'evil', I think they are so in different ways from FAANG. Could they do what Apple or Facebook do? Sure. But doing so would mean giving up their idnetity and becoming a pale version of their competitors.
In my experience it's also a resource hog. I have to quit and restart it every so often to keep it from bogging everything down.
But the reality is much more complex. You have competing teams of individuals each with their own interests. You have managers who come and go. You have sudden decisions that change everything during one afternoon. As an employee, you believe in something only to discover a few months later you were in fact mistaken.
I'm not cynical, but the best strategy is to be realistic. We all know Microsoft will do everything in their own interest and they are not basically different from any other company. That's a fact. Whatever they say about their love for Linux or Open Source is correct as long as it benefits them, not an inch more. Whoever goes in their way will be mercilessly crushed, as happened in numerous companies in the past like Lotus, Novell, Borland and so many others. Don't build your business based on their products, and if you do, have a backup-up plan and an exit strategy ready.
I own a VS license, so it doesn't affect me, but it leaves a sour taste.
People who release some software as open source and some software as proprietary don't believe in software freedoms. You can't mix and match without philosophical inconsistency.
#1 issue is that the extensions are all written in TypeScript and run in the background. When I click to go to a definition, rename, run, or even save, I get that "progress bar" and it takes at least a second. A lot of extensions are also buggy. Vs a "real" IDE like IntelliJ or Xcode, which does those operations almost instantly with significantly less bugs.
If VSCode isn't a "real" IDE, then it competes with other text-editors like Notepad++, Vim (not counting advanced versions like Spacemacs), etc. But those are way faster and less cluttered because text editing is all they try to do.
It's funny because I've been trying WebStorm and it brings my i9 16" MacBook to a crawl so VSCode feels much "faster". It doesn't help that simple operations like renaming anything are multi-step processes or are just apparently missing (no apparent way to delete a file or visit its parent folder from the command palette)
I agree with the rest. VSCode to me is just a little step up from Sublime Text for UI and base features, but it's still a far cry from proper IDEs like WebStorm (of which I like the proper refactoring features)
The only thing that comes close is TRAMP in emacs, but unfortunately since emacs is single threaded, any network blips means the UI is blocked.
If these operations take over a second it may be an issue with your machine or install of VS Code
The major silly thing with VS Code is that it has no support for floating windows.
Then you install extensions/plugins to move them slightly more towards the direction of IDE.
I see text editors as fast. IDEs as slow but full of features. This allows you to find a middle ground that works best for you. That is as long as you don't do the rookie mistake of installing 100 extensions, 90% that you'll never use but you read about them in a blog & they sound awesome! Kind of like we all do for books, videos, etc.. Someday I'll use them!
Me too. The problem with VSCode (and Atom and maybe Sublime) is that even basic IDE features are slow are buggy. And when I'm using an IDE, I constantly use "basic" features like jump to definition, find definition, rename, etc.
IntelliJ is impressive in that you can type, rename, type, jump to definition, rename, etc. and the operations are so fast that they don't disrupt your flow. Vs in VSCode where the operations will pile up in the background. Not to mention, IntelliJ's operations are usually successful, but VSCode's are usually not.
If VSCode could do basic things like jump to definition and rename properly, while still being super fast, then it would be really useful. But idk if it's just me but even in TypeScript I don't get those capabilities.
Definitely dents Microsoft's nascent open-source credit with me and, like so much of Microsoft's history, seems actively damaging in a monumental way to the history of computing itself for Microsoft's benefit.
The only thing I like with Visual Studio Code is that they were able to promote a cross text editor way to have auto-completion and other IDE-like features, thanks to the Language Server Protocol. Now I can use these features in Vim and Kate.
I don't understand how that is remotely ok. VSCode's main binary links statically against Blink (as it uses Electron) which is under LGPL, at the very minimum they should provide a way to relink that binary as per LGPL requirements.
no, the closed source part can stay closed source but relinking against a custom version of Blink must be allowed.
Just run "strings" on the code binary: you'll see symbols coming straight from Blink like this one: https://github.com/chromium/chromium/blob/72ceeed2ebcd505b8d...
$ strings code-insiders | grep HTMLFormControls
HTMLFormControlsCollection $ objdump -p /opt/visual-studio-code-insiders/code-insiders | grep NEEDED
NEEDED libffmpeg.so
NEEDED libdl.so.2
NEEDED libpthread.so.0
NEEDED librt.so.1
NEEDED libgobject-2.0.so.0
NEEDED libglib-2.0.so.0
NEEDED libxshmfence.so.1
NEEDED libgio-2.0.so.0
NEEDED libnss3.so
NEEDED libnssutil3.so
NEEDED libsmime3.so
NEEDED libnspr4.so
NEEDED libatk-1.0.so.0
NEEDED libatk-bridge-2.0.so.0
NEEDED libdbus-1.so.3
NEEDED libdrm.so.2
NEEDED libgdk_pixbuf-2.0.so.0
NEEDED libgtk-3.so.0
NEEDED libgdk-3.so.0
NEEDED libpango-1.0.so.0
NEEDED libcairo.so.2
NEEDED libm.so.6
NEEDED libX11.so.6
NEEDED libXcomposite.so.1
NEEDED libXdamage.so.1
NEEDED libXext.so.6
NEEDED libXfixes.so.3
NEEDED libXrandr.so.2
NEEDED libexpat.so.1
NEEDED libxcb.so.1
NEEDED libxkbcommon.so.0
NEEDED libgbm.so.1
NEEDED libasound.so.2
NEEDED libatspi.so.0
NEEDED libgcc_s.so.1
NEEDED libc.so.6
NEEDED ld-linux-x86-64.so.2But who knows.
And: That aside the role Microsoft nowadays plays in the open source world is reason for concern, while their current actions are mostly positive.
The Discretionary pricing comes in the Tiers, while the Moat is provided by VS Code reducing the chance of real competition against Tier 1 or 2.
The removal of hot reload from VS Code is to provide differentiation between Tier 2 & 3, to drive customers to paid versions.
--
Tier 1 .. Visual Studio Enterprise - expensive
Tier 2 .. Visual Studio - low medium cost for a business
Tier 3 .. Visual Studio Code - 'free' in exchange for your info (via telemetry) and reduces the chance of a truly open competitor challenging the above tiers. This one must walk a line between being less useful than above tiers so there's value to buy them, while being more useful than other 'free' competition in the short term so they attract mindshare away from other OSS that might otherwise grow to challenge the higher Tiers
IntelliJ IDEA is a competitive "open source based" product, with a significant market share (which qualifies as "viable competitor not under Microsoft's thumb").
VSC's "base open source" product is actually equally or more capable than IDEA - see VSCodium; its existence is proof that in worst-case scenario, a capable open source editor would still exist. Although there are some omissions, I think that given the MIT license, in theory a competitor could also build a series of commercial plugins - if I'm correct, this would actually be an interesting scenario.
What I mean by that is something without network effects. If your company uses Google Docs, you don't have much choice because that's where everything is (modulo apps that can sync to it so you can use a different editor).
For something like VSCode, at the end of the day it's still just a text editor. My use of VSCode doesn't stop my teammate from using vim.
For something like that, do you know how much of a pain in the ass it is at most companies to get them to buy something? The issue isn't even if it's $5 or $500. It's just going through the process of figuring out how to buy something, getting approvals, figuring out how to deal with the invoice, etc. Unless I'm already super committed to it, there's no chance when I can simply download any number of free options out there.
Then you have no competitors and can start charging the monopoly price, and no one tries to enter the market for fear you'll start dumping again.
Charging nothing for a product with no unit cost doesn't work like that. You're not forcing anyone to sell at a loss and the intent isn't to raise prices after they're gone.
The concern there is that you could come to dominate the market (even if the price remains zero) and then leverage that into other markets. If one IDE has more users than any of the others (market dominance) and it integrates with the vendor's hosting service and their proprietary APIs for their proprietary operating system and their app store and payment systems, that's more like tying than dumping.
IE and Skype were criticized for being terrible pieces of software, and people were desperate for something to come and disrupt their target markets. Now Chrome and Discord are being criticized for being so functionally superior to their predecessors - as well as every other option - that nobody is left with a choice anymore.
Developers don't want to choose anything besides Chrome because nearly everyone has been convinced to use it from the quality of the product, so sites are broken on other browsers, causing more people to move to Chrome. Critical information found nowhere else on the internet is locked within Discord, because almost everyone wants to use Discord, so you have no choice but to also use Discord to communicate with those people and view that information.
In the process, Discord becomes the sole owner of that crucial information, and Chrome becomes the single deciding factor in how web standards are developed.
Not "the best" per se.. Rather "good enough" and part of other tools the customers already use, while keeping them free so it becomes a matter of having to spend extra $$$ for another product.
Take Teams for example. It's a pig of an app IMO. Slow (takes almost a minute to start on my otherwise-fast M1 Mac), extremely high memory use, constant errors "Oops something went wrong + cute pic of ice cream", a mess visually and not dense enough UI. They focus all their time on adding new features rather than optimising. They also focus very strongly on the "for everyone", trying to be a jack of all trades, master of none.
Slack does a much better job at team collaboration IMO. Especially for tech users, it's fast, shows a lot in small screen space and isn't as heavy (though I really miss the IRC bridge!). But Teams comes for free with O365 and integrates fully with that ecosystem. So no hassle with integrating with your ID Provider etc, it's just plug and play. So if you'd want to have slack at work you'd have to make an unreasonably strong business case for all the extra cost and work.
Another example: Sharepoint. I doubt you could find anyone who would consider Sharepoint best at anything. Yet it's still used heavily in favour of other options, because it's again free if you're already in the MS ecosystem, and it integrates with all the other tools like OneDrive and Teams (both basically just layers on top of Sharepoint). So even if you're not using sharepoint, you're using sharepoint :P
I do agree they are the best at the VS Code niche. But usually this is not their game, they go for 'good enough'. Maybe it's because their developers dogfood VS Code so they couldn't stand it being slow :)
For example, VS Code is highly optimised and doesn't suffer the performance drawbacks that usually come with electron. They have optimised the hell out of it. However they never bothered to do the same with Teams, probably because they own that space anyway.
At the end of the day, you only employ so many top-tier folks, and you have a current corporate focus.
To be completely clear, I don't blame the guy. The approval process sucks, so if you get to bypass that, it's a huge win for your own sanity.
Why is having to demonstrate that something is worth the cost and effort of doing it "unreasonable"? Isn't that simply "a business case"?
Here is his keynote at VSCode day, https://www.youtube.com/watch?v=hilznKQij7A
You can not have the cake and still eat it. I guess the push of .NET and other tools towards Open Source would yield motre bennefits in the long term than trying to castrate it in the hope they will sell a few more Visual Studio licenses.
The company I work for is developing a big product using .NET. But it does it because it runs on Linux and it can nicely be integrated with many open source tools. If .NET wasn't open sourced, I guess they wouldn't have used .NET.
I used Visual Studio until now because I genuinely prefer the experience, not because I was forced into it because some features were taken off from open source .NET tools. I do understand that people want to develop on other OS-es than Windows and using other IDEs than Visual Studio. And Microsoft has to understand it too if they want .NET to continue to be successful.
NET only has two paths: to continue being open source and to flourish or to die. >NET running only on Windows and/or with only good tooling available on Windows will die. If they push .NET towards being closed - it's their right, they pay for the development - they might win a small amount of money on short term but they will lose everything in the long term. I hope they aren't idiots.
It is but it's been Microsoft's MO from the beginning. They seem incapable of not trying to lock people into their ecosystem.
This kind of decisions kind of confirms those actions.
I get the impression that its current state is something like CSS in the era of Internet Explorer 4 to 6: there's a published specification which Microsoft is nominally behind, but the de facto standard is "What Visual Studio Code does", and there's nontrivial divergence between the two.
Can anyone who works with LSP indicate whether that impression is accurate?
LSP appears to be alive and well with editors that are not VS Code. The entire point of LSP is to decouple the text editor from the language, and it works.
https://github.com/search?q=language+server+protocol
If VS Code has more support for LSP it is because Microsoft has poured money into it, invented LSP to begin with, and popularized it with VS Code to begin with.
If you want commitments from a company, get it in writing (in this case in the license).
I also don't get this part:
> They won’t develop cool features like these any more and most frighteningly, they won’t accept pull requests or community contributions which could add these features back into the SDK - and that is a bleak outlook for the open source community in .NET.
What stops someone from forking the SDK and adding this functionality? Or are there non-open-source components this all relies on?
I've felt the benefits of Microsoft's OSS push over the last decade, and I've been an advocate for their work. As such, I've never felt the need to run VSCodium, and I've been OK with sending Microsoft telemetry from my VSCode install (though I would prefer it was opt-in, rather than opt-out).
But now they are trying to have their cake and eat it too - they want to keep up the "developers, developers, developers" mantra, because they can deeply their tooling with Azure and nudge devs in it's direction. But they also still want to maximise revenue from their commercial IDE, Visual Studio. And as a result, they are half-arsing both goals, a strategy that is absolutely doomed.
And you know what, for a feature like `dotnet watch`, it's just so completely unnecessary, as VS would still be a very different and vastly more capable IDE than VSCode. This really feels like some high-head in the background is pulling new strings, and I really don't like it.
I'm also 100% certain that if `dotnet watch` is discontinued, someone will reverse engineer it (very easy with dotnet!) and release it as a third party dotnet global tool, which makes this whole situation even more pointless.
I hope VSCodium does start to add in functionality that Microsoft is trying to keep for themselves, starting with the dotnet watch code that was written and not merged - extra functionality would be a very compelling reason to use VSCodium.
Open Source: Too good to fail.
That's why Microsoft can't "own" open source. So they decided to "own" the open source developer by owning the source repository he uses, owning the editor, owning one of the most popular languages (Typescript) he uses, the command line shell, he uses along with grabbing all the Linux commands and make them available on their own platform.
This is not about proprietary code (owning the code), anymore, but about owning the platform and making people use it. I doubt, they have a clear plan, right now, instead they hope, that it will play out positively for them, in the future. A few years from now, I wouldn't be surprised, if you'd need a Microsoft account to log into Github.
And there's no company I trust less not to abuse that influence once they see the opportunity to use it in an anti-competitive way without consequences.
Microsoft finally realized standards and interoperability was the future. They also realized that a requirement of being able to extract profit in that future was having power to influence standards.
Consequently, open source tools (and more importantly, the dev/user share that comes with them) get Microsoft votes. Either explicitly or via mind share.
And when it's a corporate priority or matter of survival, they use those votes to advance Microsoft's interest.
We've seen this with Chrome / web standards for years now. Most of the time it's good for users, but sometimes it's just that important to corporate reveneue.
It's hard to say it's "copying google", it's more of a return to form now that the regulatory environment seems to have relaxed on anti-trust.
Granted, early versions of IE made a hash of the standards that did exist, and didn't place an emphasis on compliance.
But the more accurate phrasing would be "W3C wasn't prepared for web adoption, and wasn't as agile as the early web needed."
People forget we wouldn't have gotten AJAX and descendents without IE's non-standard XMLHttpRequest support.
FOSS, early on created a whole bunch of concepts and ideology that was very useful for framing the issue. Back then, it did make sense to focus on open vs proprietary code license etc.
That was a long time ago though, and most of what we know about the software industry wasn't known yet. These days we know software's best businesses are about control and power. OS can be used for strategic commodities, while convenient bottlenecks like app stores, cloud platforms or key dev tools.
A lot casual assumptions got made about links between norms at GNU, linux, etc and what OS is.
We need an update to OSS language. What does freedom, or openness mean today? As it stands, it's hard to say whether or not such and such violates such values, because the values are vague and unarticulated. We can fall back to 1980s FOSS, but that's somewhat dated.
As interesting as all the murky politics are, I didn’t need all of the long form prose to build to that question.
In fact you could have just straight up led with the question.
And then answered it even more simply. Any of
Nope
Probably Not
Hell No
Not Even
would have worked. I’m not sure why this is such a drama or surprise to anyone.
I have been primarily a Java/Go developer. I like C# as a language and have been actively following development of .net for some time with intention to play a little deep with asp/blazor for some side project.
If now Linux/Mac become 2nd class citizen I am no longer interested in the platform as no way I'll move servers to Windows and no near plan to change my dev machine to Windows. So better to drop .net as an option.
The developers build the 'support'... But why would they give a shit about the VSC experience when none of them use it? It's a shame.
C# support in Visual Studio Code is abysmal, hence no one uses it even if they use Visual Studio Code for other languages.
Irregardless of how anyone feels about using JS/TS on the server side it's really, really widespread - and VSC is the IDE of choice.
It is one of the few privileged pieces of software that is used daily. Not just for me, either...
The extensions owned by Microsoft are proprietary. So you can't run the c/c++, pylance, remote ssh, remote containers, c#, etc extensions in open source builds of Code - OSS like VSCodium.
And for some of those, if you manually try to install the extensions using the .vsix file, they fail because the extensions are hardcoded to work only on VSCode builds signed by MS.
Looks like Microsoft has figured out where their feet are and are taking careful aim.
I think Microsoft has been behaving pretty well lately and that's worth something. With that said, I still would never "trust" them.
I don't understand people being spooked about Microsoft and open source. I've always viewed open source as a greased pig. Being open means anybody is free to fork and go elsewhere so the fact that they don't must mean a need is being met.
I think the bigger threat these days is everybody being dazzled by top to bottom closed solutions like Apple's processors. I wonder if other companies will follow suit to keep up and start vertically integrating their chips too.
Just my opinion.
Open source that is somewhat close to a core of a what a company is doing is always a fine line to walk. See: ElasticSearch, MongoDB, MySQL, Databricks' Deltalake, Oracle's GraalVM, et al.
This development is (generally) very unfortunately, and for those using .Net very annoying.
But let's not forget, overall Open Source is great, and it's great that Microsoft has (finally) turned in that direction. There are a lot of other, successful Microsoft Open Source projects.
Rider’s implemented hot reload on their own, so this isn’t helping against Visual Studio’s main commercial competition.
That is, say you are a .NET/Linux dev today, you fork the .NET framework under its MIT license as of October 2021, and Microsoft never add another feature to .NET for free, {blank}, then you can never use your fork again because it has been extinguished. What happens in the {blank}, in your view?
I have been using .NET for many years now, preferring VS Code or similar editors for work where I am totally in control of what is going on behind the scenes. I have been extremely satisfied with the direction Microsoft has been taking .NET and also GitHub/VS Code in recent years.
The hot reload feature has been introduced in .NET 6 preview builds - emphasis on "preview" builds. I personally haven't used the feature a lot but have heard it worked great for a lot of developers. And now with .NET 6 GA date quickly approaching, Microsoft is wrapping up the .NET 6 release. This of course means moving any unfinished work to .NET 7, such as full AOT that I was personally looking very forward to. And even MAUI etc...
So after reading their latest blog post on their decision to move the hot reload feature to only Visual Studio for .NET 6 GA, I quickly understood they probably just didn't have time to finish the feature / reach an acceptable level of quality for the dotnet CLI, so they just moved it for a later release - like any other unfinished feature.
Of course this upset a lot of developers that were already using it successfully in their workflows, but let's be honest now, it was always a preview feature. You shouldn't take preview features for granted. I do agree, however, that Microsoft could've handled this better - they could've added like a "preview/experimental feature" warning when using hot reload via the CLI or something and kept the feature there as is - but I'm guessing they wanted to keep their CLI clean of unfinished features. It's not like they said they will never release it to everyone - just that it will be available through VS and VS for Mac for .NET6 GA.
And if Microsoft truly did this for their own "evil" reasons, why was this feature available in the preview builds to begin with?
It's barely been a few days since the blog post, and the backlash is already huge - people are already losing trust in Microsoft and they haven't even given a response yet.
I just hope this will get resolved soon without any issues and we can move on.
Nor Microsoft, nor any other.
It's not a matter of morality, it's a matter of scale. At their scale, the entity takes priority over individuals, and it will always do what's good for the corporation, and only the corporation, unless obligated to.
In a capitalist society, this means it will always do what's profitable unless a stronger player, competition or the state, strongarm them into doing the right thing.
So no, you can't trust Microsoft with open source.
But right now, it happens Microsoft interest and the open source community are aligned. So keep your eyes open, don't put all your eggs in the same basket, assume it will change. Certainly don't let them control your stack.
But do enjoy the ride. They have skills and resources, FOSS can benefit from it.
As for anything in the Azure org, I wouldn't be too worriedT They just want to wrap a managed service around an OSS project and call it "contributing to the community". It seems like there was some OSS innovation coming in from the deis acquisition, but years later all msft got from them was the helm dumpster fire, and I believe the founder just left to go to Digital Ocean.
The Kinvolk acquisition is interesting also, but I have a feeling that it will pan out the same way.
Linux relies heavily on corporations using it.
Gecko is dead without Mozilla - if Mozilla bankrupts, no one has enough manpower to develop Gecko.
Even if code is GPL-licensed and in ongoing development, main contributor can easily force their design choices on downstream forks. If you redesign some system, downstream forks have to reimplement their changes on top of refactored code. And they don't have enough manpower for that.
Well, governance of open source is probably not solvable, like most of human relations.
"One large player" can make hard, but neccesary choices. Multiple stakeholders can have conflicting interests, so they can stick with conservative way.
One large player can use its control in ways detrimental to users. Multiple stakeholders can go with incremental changes that benefit everyone involved.
There is no silver bullet.
Nope. Linux users care that they use Linux. They don't care if anybody else happens to use it or doesn't. There's no 'Linux Corporation' that has to maintain sales to survive.
What people prefer is not a popularity contest. If that was the case, looking at it from a cars analogy, nobody would ever buy 'unpopular' cars like Lamborginis or even Mercedes, they'd only buy Fords.
John Carmack managed to release an unlocked Oculus OS going against his Facebook paymasters. That was probably an ordeal. Maybe somebody within Microsoft can fight the good fight and bring Open Source .NET to the masses. Maybe not today, but someday...
Microsoft only goes so far with supposedly loving open source.
Kf they love open source so much, why don't they open source something really interesting instead of a toy editor like vscode?
I'm thinking of something like sqlserver or their compiler tollchain or their userspace runtime library.
I want to do this now, and I do have recurring donations for some projects, but it could be frictionless and automatic.
Remember "Linux is a cancer"? and "Embrace, Extend, Extinguish"?
MSFT has never changed its corporate genetics. It can't.
Trust, but verify.
To the person who downvoted me: I'd like to hear some arguments. Perhaps you don't need to. But that's irrelevant -- the world at large does. That's the main point of the post, too.
Can you trust Microsoft on anything?
Of course not - what were you thinking ...
1. https://news.ycombinator.com/item?id=28779342 | I'm sorry
2. https://github.com/dotnet-foundation/Home/discussions/39 | I'm sorry
3. https://www.google.com/search?q=.NET+github+enterprise+hacke...
4. https://news.ycombinator.com/item?id=28847178 | Use of GitHub Enterprise
5. https://github.com/dotnet-foundation/Home/discussions/59 | Use of GitHub Enterprise
6. https://github.com/dotnet-foundation/Home/discussions/40 | Change in .NET Foundation Leadership
7. https://news.ycombinator.com/item?id=28794352 | How the .NET Foundation kerfuffle became a brouhaha
8. https://robmensching.com/blog/posts/2021/10/6/how-the-.net-f...
Do you think the VS team is gonna see their product value be eroded by free tools and take it lying down?
Absolutely every company has infighting. The bigger you are the more infighting and disagreement. Infighting about product development prioritisation, marketing budget to promote new features etc etc.
When companies are selling multiple products, some that overlap in their usefulness to customers you can bet there’ll be infighting.
VS Code is a wonderful tool. You can’t expect that MS will make it 99% as good as a paid version.
VSCode features can't make VS any less useful. They only make it less ‘valuable’ in an abstract, market sense. Why would the people actually making VS give a shit about that unless they're larping as their bosses? Or by ‘the team’ do you actually mean something like ‘whatever VP is in charge of the team’?
MS simply said they are prioritizing one particular feature for launch in 2 week for their premium (paid) IDE. Another company has already implemented this feature in a competitive IDE (JetBrains Rider). Mac support coming soon. Community can work on that feature themselves or wait til after the launch in 2 weeks for VS Code support.
No, I don't think I will trust you as telling me to trust you is not a valid qualifier. And, I do think you're reading too much in between the lines. For example
> but more importantly they also won’t deny it.
Please stop with low effort clickbait.
There are no mentions of all the positive outcomes that have emerged from their open source shift. In other words, it does focus too much on recent drama rather than putting this in the context of all their contributions.
Nor, considering the title of the article, has there been any consideration for the overall ecosphere of the tech giants that are playing in this space. If you ask the question, then look at who the others are. I cannot think of two worse companies to 'trust' than Oracle and Apple and represent the antithesis of openness. There are existing contributors, Google and Facebook, who do plenty and can somewhat be trusted considering their nature, and despite their reputation. There you will find a similar pattern, some things are open and some are proprietary Looking at the context of their contribution over the past few years I would put them firmly in the latter category. The answer to the headline is: yes, somewhat.