All things said and done, you must stand in awe, at how Microsoft, executed this takeover, with very little to no resistance from a community of hundreds of thousands of active JavaScript developers, even introducing the use of TypeScript in React, Angular, and Node, while cornering both source-control and distribution of code. It’s strategically perfect in all dimensions. Kudos to Nadella and his team.
When I started coding, I really loved the Open Source JavaScript community. It did always feel weird, that people would write code, and share it for free. But people did, and still do, and it felt amazing and crazy at the same time.
There was Github to manage our sources, and npm, which indexed the open-source libraries and made it super-easy to search, find, and import functionalities, and to create, update and share libraries ourselves. And for on Stackoverflow, you could even get free support and advice. JavaScript was improving year after year with every ECMAScript release. It wasn’t perfect, but it all worked. The future seemed bright.
Although Open Source grew inside capitalism, it’s values weirdly weren’t part of that capitalistic world-view. That’s why, from day one, it was bound for destruction at some point or another.
Then one day Microsoft came in and took control of the two core tools, which were the gateways to the whole Open Source community; npm and Github. I don’t think people saw this coming, and it’s clear that the majority of developers, even today, don’t realize what happened and how it will affect them very shortly.
Once the take-over was complete, a massive propaganda onslaught began to fully convert the idealistic open source community towards the capitalistic Microsoft mantra. It’s a ‘secret’ war, with high-tech propaganda, which over time will silently destroy and remove independence, kill-off non-Microsoft-owned editors, tools, libraries, even JavaScript itself. All of this is inevitable because Microsoft is a for-profit corporation. It’s in its DNA to take over whole industries and turn them into profit-generating monopolies for its shareholders.
Microsoft’s mission is to turn every JavaScript developer into a Microsoft TypeScript money-generating drone, one way or another.
Below I’ll describe the multi-dimensional blitzkrieg of Microsoft in 5 simple steps.
Act 1: Microsoft Kills JavaScript
Microsoft may not be able to innovate on products, and they usually fail miserably. But it is shockingly good at marketing, propaganda, and take-overs.
Microsoft has essentially deprecated JavaScript and the non-profit foundation, which governed it, by TypeScript, which is governed and controlled by the for-profit Microsoft Corporation. If Microsoft was truly interested in improving JavaScript it could have done that through the non-profit foundation. But instead, it took the ‘Evil Corp’ approach of making the foundation and JavaScript slowly irrelevant, so it could guarantee that it could monopolize and monetize the whole industry.
Understanding the Propaganda
The ‘JavaScript at Scale’ narrative is aimed mostly at the business decision-makers, positioning TypeScript as the reliable and robust choice versus the bug-prone and unreliable vanilla JavaScript. Over time this will deprecate JavaScript as a language in business environments. It will become the new PHP.
And so as not to offend JavaScript developers too much, the ‘TypeScript is a superset of JavaScript’ narrative was introduced, which for obvious reasons is naively erroneous at best. TypeScript does use JavaScript constructs but has a lot more in common with C#.
So although TypeScript has its benefits, you should be aware, it is not what Microsoft wants you to believe it is.
It’s fairer to say that TypeScript is a C# superset, with some JavaScript limitations, which compiles to JavaScript.
Proprietary Open Source
JavaScript is not controlled or owned by one profit-driven corporation. It’s an open-source, non-profit, effort driven by many independent actors and corporations.
TypeScript, on the other hand, is Proprietary Open Source, because it is owned, financed and fully controlled by the profit-driven Microsoft corporation.
Piggy-backing the Community
Infusing JavaScript and open-source in its propaganda Microsoft was able to piggy-back on the disorganized and leaderless open-source community and did this without any noticeable resistance. The whole community welcomes TypeScript whole-heartedly, or at least it seems so.
Act 2: Microsoft Acquires Github
Although Github stayed independent for a long time, it was a for-profit company from day one. It’s an almost perfect product-market fit for developers:
- Developers can store, and manage source-control, and share your code-base.
- Developers have profiles, with an overview of what code-bases the developer contributed to. This profile is almost always requested when developers apply for a job.
- Developers can report bugs and do pull requests to open source repositories.
Any developer, who is fine with sharing this code publicly, can use Github for free. The up-sell to a subscription model starts when you don’t want to share your code publicly, and want to use private repositories. This feature is mostly used by companies or start-ups. But even then you could use these features free for small teams.
Github’s first-mover advantage, its freemium model, and the close inter-connection with npm, turned it into a monopoly.
Today, authors, educators, speakers, and developers, when referring to creating or downloading a repository always mention Github. It’s become synonymous with source control.
And since Github was funded by Venture Capital, there was always an exit planned, from day one. So it shouldn’t be a surprise that a corporation, interested to own the user-base and code-bases of those users, would one day come in, and provide a return on investment for the hard work of its founders and investors. No surprise there.
After the acquisition by Microsoft, its integration with VSCode, further strengthened its monopoly position as the go-to source code repository service.
Act 3: Microsoft Acquires npm
Now that Microsoft owned Github, the next logical step was to acquire npm. Npm is not only the JavaScript package manager, it is also the directory of open source libraries in the community. Just like Github, npm was a for-profit company from day one.
Its’ monopoly position was based on having been chosen as the package manager for NodeJS.
In 2021 it’s close to impossible for the JavaScript community to unlink from npm. It’s part of the DNA.
Using npm alongside github has become just as a routine for a developer as breathing.
Act 4: Microsoft pushes VSCode as the go-to (and only) Editor for TypeScript
When I started coding, I watched hundreds of tutorials, followed courses and read many coding books, and continue to do so. And 99 out of 100 times, you hear people continuously advise VSCode as the best of the best editor on the planet. It’s very rare that someone even mentions Vim or WebStorm.
And for a long time, I actually drank the cool-aid and used only VSCode. But once I started seriously coding, I got annoyed by all the bloatware, spyware, and marketing inside VSCode. It’s not like you don’t notice. I felt like being used instead of being a user.
There is no such thing as free in capitalism. If a for-profit corporation, like Microsoft, gives you something free, be prepared to become raped at some point.
I moved on from VSCode to WebStorm, via Vim. But the majority of developers, who use Github and npm as part of their routine, will eventually switch to VSCode, if they haven’t already. Microsoft’s propaganda machine is very efficient (if you are blind).
Act 5: Airbnb for Open Source Libraries, the business model
The message is clear, open source is about to be monetized by corporations and Venture Capitalist driven companies. And just like Airbnb makes more money on renting out properties, without owning any, parasites like TideLift, OpenCollective, and others, will apply the same Silicon-Valley mantra to Open Source.
The Airbnb model is coming to the Open Source Community.
The most popular open-source libraries will slowly start having ‘premium’ versions, which will have less, or no bugs, and better support. They’ll keep the open-source available, but it will become filled with continuous up-sells and bugs forcing you to pay. This is simply inevitable. Venture Capitalists wouldn’t invest hundreds of millions of dollars into something just out of their good heart:).
And then after some time, Microsoft will buy one or all of the players, and own the whole industry from top to bottom, start to finish.
Game over.
In conclusion: What should you do as a JavaScript Developer in 2021?
Learn TypeScript
If you are a JavaScript developer, learn TypeScript immediately, as most if not all employers will require you to have TypeScript as part of your stack. That is not a bad thing in itself, as you will become more efficient and productive. And it will be a lot easier for you to learn other statically typed languages, which is a nice side-effect.
TypeScript is a gateway ‘drug’ to a world of statically typed languages.
Be Flexible and Open to Learn Anything New
Well, you need to change and definitely be aware of all the new risks and demands on your career. Some of it may save you, and some of it may kill you and it’s not very clear what is what.
The modern software developer, continuously learns new practices, patterns, and technologies, and is flexible enough to change, unlearn and drop, and replace, refactor anything, at the drop of the hat, even learning and switching to a new language all together.
I am not a purist, which means that I will continue to take advantage of the open-source community. I could even say use and abuse, just like Microsoft did and does. It would be stupid, and not productive to stop using libraries. But I have become even more aware of the dangers, and I am decreasing my dependency on third-party convenience libraries, and patterns. As a result, I am coding more low-level, which for me at least, is a lot more fun, because it requires me to exercise my brains, and learn new skills. And at the end of the day, that is how you become a better software engineer.
Today, when I do decide to use a certain technology, library, or framework, I don’t just do it blindly on a whim, gobbling up all the direct and indirect propaganda, from the corporations or the venture capitalists behind it. I approach each new technology with an open mind and an objective pragmatism. I actually go through an internal assessment process, just as if I was still an engineer at some large corporation.
Does it really do things better? Is it faster, cleaner, less prone to bugs? Will it increase my productivity? What are the short-, middle- and long-term costs of using it? Will it make me too dependent on one corporation or toolkit? These are important questions, and you should ask them continuously.
Some Examples
- I didn’t move instantly from a REST API model to GraphQL, even though I learned it, understand its concepts, and the reasoning behind it. I could switch anytime if I needed to. But I haven’t, because although it solves a lot of issues, it creates a bunch of others at the same time.
- Even though I use the NextJS framework for my React front-end, I am not creating API’s inside it, and I am not deploying it on Vercel either.
- Although I switched from JavaScript to TypeScript, I don’t use VSCode, Github or Azure, because there are other better solutions and tools for that.
- When React hooks came out, I almost immediately dropped class-based components and switched to hooks-functional components. As a result, I was able to remove my dependency on Redux.
Final Thoughts
This oped will in many cases clash with the mainstream narrative and opinions, and that’s fine. Our group-think is not as independent or correct as we may think. We often revert to techno-framework-tribalism, aggravated by the constant attack by weapons of mass propaganda.
But it is important to find out about different views, and opinions and stay vigilant. This is an important soft-skill for the modern developer.
And it’s not all doom and gloom. Learning TypeScript is a good introduction to statically typed languages. So go learn it. But use it as a stepping stone to learning more statically typed languages, not as a final destination.
Good luck with your TypeScript journey.