First of all, let me say that I am not a Microsoft hater. I will say that I am not fond of the majority of products I have used which bear the Microsoft label. They tend to leave me feeling as though my hands are tied and my options are limited and that I’m being “guided” by a paternalistic entity who feels that he knows what is best for me…but rarely ever really knows what is best for me. Whatever my experience, Microsoft creates products which are great for the majority of people out there. That is why Microsoft is such a successful company. Further, I believe that Microsoft has done more to push the computing world forward more than any other single company. So, I am by no means anti-Microsoft.
Next, let me say that I am not a conspiratorial person by nature. I’m a simple person and I tend to believe that the simplest explanation for something is typically the most plausible. This “Occam’s razor” principle causes me to become skeptical when I hear speculations about a group of people (or company) engaging in covert activity with the intent of duping, subverting, or harming another group of people. While this may sound overly optimistic, I’m really quite realistic. I recognize that there are rare occasions where regular people do engage in dubious, subversive, harmful activity. I also recognize that there are regular occasions where rare people also engage in dubious, subversive, harmful activity. Maybe it is my optimism, but I sincerely believe that nefarious behavior is not the norm across society as a whole. And I believe that most people and groups who have obtained a negative reputation probably have a worse reputation than they deserve.
So where am I going with all this? How can Microsoft kill Python? As I mentioned in the lead-in to this blog entry, when I say “kill”, I mean “seriously damage the relevance of Python”. Let me first outline what I don’t mean. I don’t mean that Microsoft, as some have suggested, will work on IronPython for a while, get people using it, then hijack the language by seriously changing the syntax of it and thereby breaking compatibility with CPython. I really don’t believe that Microsoft is going to do that nor do I believe that they have had secret meetings to conspire to such an end. I find such suppositions entertainingly absurd.
What I do mean is Microsoft’s emphasis of Python as one of many potential “dynamic and scripting languages”. The type of wording that I keep hearing to describe Python’s place in the overall .Net framework seems to keep it very separate from “real” languages like C#. It is true that Python is a very dynamic language. It is also true that Python makes a fantastic scripting language. But it is more than that. I believe that there is no reason to shy away from offering Python as an alternative to C# for application development. Sure, its dynamic nature can be emphasized, but I would market that dynamism as a selling point rather than a liability. It could just be me, but I get the feeling that Microsoft doesn’t want to encourage people too strongly to use IronPython for “real” application development.
So, how does this damage the relevance of Python? If Microsoft, who is investing considerable time and money to create a .Net implementation of Python, only refers to IronPython as a “dynamic language” and only pushes it as a “scripting language”, many people will begin to assume that that’s all that it is good for. If this causes more people to think of Python only as a scripting language (which many do, already) or a dynamic language to be used only when they can’t accomplish something in a static language, that will reduce the situations which IronPython might have been used for otherwise. If people limit what they use Python for, its relevance for a whole realm of programming tasks has been diminished.
And I think that would be a terrible shame. From what I have seen, Jim Hugunin and crew have done a fantastic job of integrating Python into .Net. I was really excited about this project when I heard about it. I’m still excited about the technology. And I’m more excited still about the overall possibilities and what it could do for Python. I’m just concerned that the current marketing words might cast Python in a limited light. Microsoft has the opportunity to promote Python as a full-blown viable alternative programming language with tremendous productivity benefits to its customers. I hope I’m wrong with my concerns. But more than that, I hope that Microsoft will begin to encourage Python usage for a broad range of programming tasks. Why shouldn’t they?