Microsoft has released version 1.78 of the Visual Studio Code (VS Code) editor and IDE – while also revealing details of the development process at its annual “VS Code Day” online video presentation. VS Code is likely to be the world’s most used development environment, with nearly 75 percent of developers saying they use it to some extent in the most recent Stack Overflow developer survey.
VS Code has received a visual overhaul this month, with new “Dark Modern” and “Light Modern” themes. Also new are profile templates, which customize VS Code for specific project types. Profiles on offer include Python, Angular, Doc Writer, Data Science, Java General, Java Spring, and Node.js. Each profile automatically sets up a bunch of relevant extensions as well as key settings suited to the purpose. Profile templates can be customized before they are applied, so for example the Data Science profile includes GitHub Copilot, but this can be unselected before it is applied if not required.
In the editor, there is a new popup for controlling the way content added via drag and drop is inserted, and a rewritten code completion feature which fixes numerous bugs and works properly across line breaks. Popups offering extensions now include the publisher’s name, helping developers to decide whether an extension is worth installing. There is also a new notification for deprecated extensions.
The full list of updates has additional features including a number of Python updates, improvements to the GitHub Pull Requests and Issues extension, and many enhancements to the new GitHub Copilot Chat feature.
At VS Code Day, team leads Erich Gamma (Technical Fellow VS Code) and Kai Maetzel (Partner Director Software Engineering VS Code) gave some insights into the development process. “We think that the way we develop VS Code is part of the secret sauce of why it is so successful,” said Maetzel. It is true that the product makes a strong case study in agile development – where one of the key principles is incremental improvement, or “responding to change over following a plan,” according to the Agile Manifesto. Asked how the product had changed since first release, Gamma said “every month we replan.”
The VS Code team works for Microsoft but the impression given by the presentation at VS Code Day is that it works as a somewhat independent team, with 51 people of whom 37 are developers. The product has a 4-week release cycle. Week 1 is for planning and “debt reduction”, explained Gamma and Maetzel. What this means is that the team leads work on the plans – what features will be implemented this month – leaving others free to work on debt reduction, meaning “remove a workaround, or adopt a new language feature. A good example was adopting nullable types in TypeScript, this took us multiple debt weeks,” Gamma said.
Weeks 2 and 3 are where the grunt work of developing the new features is done, with daily demos in what the presenters called “team sit-downs”, a play on the Agile concept of daily stand-ups. Then Week 4 is the “End Game” for final testing and quality checks. Shipping follows.
The VS Code team advocate rapid deployment despite some risk. “You can spend a tremendous amount of time in making sure that you never break anything. But sometimes we have to move extremely fast, we have to seize the opportunity that is out there. So we did this by fine-tuning our processes, the architecture, all our tooling, for short lead times. What that means is … that it takes us approximately 1.5 hours to produce a new build that all of you can have in your hands. What that allows [us] to do is to take calculated risks,” said Maetzel.
Another nugget from the presentation is that the VS Code team does all its internal work using the preview Insider Build of VS Code, which is updated daily. This build is also available publicly and has up to 130,000 users, we were told. It installs side by side with the stable release. “If things go wrong they can open the same folder a couple of seconds later in the stable version,” said Maetzel.
There are between 2,000 and 3,000 new issues on the GitHub repository for VS Code every month, a load which the Microsofties said would be impossible to manage without a high level of automation. However, there is a principle “zero distance between the community and us as the development team,” said Maetzel. “We don’t have an L1 support team.”
VS Code was first released in 2015, but taking into account the early work on the product, Gamma said the basic 4-week development cycle has now been the process for 10 years.
How does the team decide which features to work on? The project is on GitHub, so in part it is as you would expect, based on upvotes on issues. However, according to Gamma, “we also watch for emotions,” with expressions of high emotion making a feature more likely to make it through.
As the team noted, shipping every month with a stable release that also contains meaningful new features is a considerable achievement. Not mentioned though was the influence of owner Microsoft on the product team and the feature prioritization. While it appears to be a light touch in general, there are always concerns that despite its open source nature, the product tends to promote Microsoft services. A recent example is the rapid integration of VS Code with GitHub Copilot, a paid service. Another is the integration with GitHub Codespaces, another paid service. That is the trade-off: developers get an excellent free development tool, at the expense of regular nudges towards Microsoft services.