Microsoft's recent actions and announcements have illustrated the company's renewed focus on contributing to the broader development community at large via the open sourcing of internal technologies as well as the support of existing standards. The company has been working on its Python Tools for Visual Studio (PTVS) for some time, and to that support it has released Visual Studio tooling to support Node.js (NTVS).
InfoQ recently had the opportunity to speak with Microsoft's Partner Program Manager Shahrokh Mortazavi about these releases and their plans for the future. Mortazavi works in the Node and Python Tools Group which is part of the Developer Division. An edited version of our conversation follows.
InfoQ: What does the overall Developer Division work on?
Shahrokh: Overall DevDiv works on technologies and services that holistically address the needs of developers, up and down the stack. Within DevDiv our group explores emerging or newly relevant technologies such as Node.js and Python.
InfoQ: The Python toolset has been out for a while, how has it been received?
Shahrokh: Very well. PTVS is currently the #1 Microsoft download on Codeplex. Python itself is used in many industries. Popular sites like Reddit, Youtube, Dropbox use it extensively. There’s also significant usage among Fortune 500 companies. One of the largest installations we’re aware of involves a project at a major financial institution with 3,000 developers and 16 million lines of Python code. Same is true for Node.js: eBay, Walmart, Paypal, Azure…all use it.
InfoQ: How popular is Python on Windows versus the other major platforms (Linux / Mac OS X)?
Shahrokh: It’s pretty popular. CPython gets downloaded more than 21 Million times/year from Python.org alone. The top two Python distros tell us that they make more money on Windows than Linux and Mac combined.
InfoQ: I was not aware of that—that is very impressive. What are some of the features that you think readers should be aware of?
Shahrokh: One of the more exciting features is mixed-mode debugging. This allows you to debug Python and C++ code together. This ability combines call stacks so that you can switch between Python and native code with breakpoints set in either language. Several users have told us that they installed Windows just so they could use this feature in PTVS!
Another great feature is the ability to develop Python in Visual Studio but deploy to and debug on a remote server running Linux—whether this instance is in Azure or a traditional standalone environment. The Integrated IPython REPL with inline graphics is pretty sweet too.
InfoQ: What is something that people may not know about the benefits of PTVS and NTVS?
Shahrokh: Aside from improved productivity due to good debug/intellisense/profiling/etc support, a side-effect of these projects is that they provide a great resource for teams looking to make their own Visual Studio add-ons. Whether it’s integrating a new language, or forking the project system for example, both repo’s are great for inspecting VS API’s.
InfoQ: How do you decide what languages to support? Are there any others that are planned to join Python and Node.js?
Shahrokh: Well, when looking to provide tooling for a language we look at a number of factors.: industry trends, customer asks, etc. Languages that are supported by Azure or used in other Microsoft projects (Skype, Bing, etc) are considered front-runners for us to provide the enhanced tooling.
InfoQ: Given that these are open source, how often do you receive patches or pull requests from outside developers?
Shahrokh: We’ve found companies tend to treat patches and updates on a case-by-case basis. If it is something that they consider to be of proprietary interest then that is not something they would want to share as they believe it provides them a competitive advantage. But when the changes or improvements are of a general nature then we see those patches offered. For example Eve Online sent us a patch that enabled Stackless Python support in PTVS. Clickberry provided a number of NTVS patches. Red-gate contributed the NPM pkg manager.
Thanks again to Shahrokh for taking to the time to speak with us about PTVS and NTVS.