Python is Great
I've been in love with the language for a decade.
I feel a connection to the community that has only grown over time, both in numbers and in awesomeness. However, I see difficult times ahead. Not where Python is or where it is going, but places it will always have trouble entering growing in importance. I think we have, as a community, really downplayed the significance of some of our beloved languages shortcomings.
I'm concerned about growing areas in software, which are hostile to Python. This is a coincidental, but important direction a lot of focus in software is moving in.
Energy and enthusiasm are important. Enthusiasm is important both for the target of that energy and a wide calateral area around it. Python has, for the past few years, received an influx of attention and fresh energy from the fast-growing Django community attracting many developers. This meant more than making it easier to build a CMS. The people rushing into the Python-sphere to build websites and webapps and web-whatever-elses leaked out, and they built Celery and Fabric and Circus and contributed to PyPy and all sorts of great things useful to a wide array of Python developers, both inside and outside the web-development inner circle.
The energy attracted to a small subset of the Python-verse has benefited the much community as a whole.
However, The energy is shifting. Browsers are evolving. Computer sales are getting matched and surpassed by tablet and smartphones. We're building things we'd never before imagined possible to carry in our pockets or to pull up without so much as a setup.exe to run first. These are both great directions for software as a whole, but I'm worried Python is going to miss out!
Python is Expensive On Mobile
A lot of people who are interested in python, but hesitent, worry about the overhead of a dynamic language. Things like dynamic displatch and the millions of dictionary lookups per second can burn through CPU cycles. The advice has always been, "Buy more or better hardware. Iron costs as much as the developer time you'll lose to a more difficult language."
These problems are only made worse by our untethered devices reliance on batteries. Those CPU cycles cost energy, and any tool that saps more battery life is going to be at a disadvantage for mindshare.
This problem has been reduced in two ways: the Python runtime got faster as the core developers improved it over the years, and computers got faster. Then, suddenly, we started shifting a lot of our time, focus, and money into machines far, far slower! And, no matter how much these improve, they'll always be a lot less powerful than the ones sitting on or under our desks. Python, I'm afraid, is always going to have a disadvantage compared to the likes of Java, Objective-C, and C# on phones and tablets and other mobile devices.
The common retort here is "Well, that isn't the realm of Python. Don't use it for problems it isn't meant to solve." Then you don't understand the area of effect I'm worried about.
Python is Without a Door On Browsers
I think, now and increasingly, Python behind the webserver is a powerful tool and one that has enabled a lot of great sites and products and services. Unfortunately, once the content hits the wire, the Python stops. There are some projects to push it through this little tiny wire, but none of them are really solid or have really taken.
We have some avenues, to be fair, but there is always going to be a domain mismatch here. We can't run Python-Python in a browser, even if we are finding ways to write "Python" (those are air-quotes) in a browser. And a lot of us say, "That doesn't matter. I'm not interested in writing stuff for the browser."
That's fine, you don't have to. The thread of my worry here is that lots of other really talented, smart, creative developers are moving to the browser, or are growing up learning of the browser as the primary way they interact with a computer and the first obvious target when learning to code. This is all talent that the move to client-side functionality is going to pull away from us.
Python has Failed for Game Development
There was a time when I thought Python would grow in the game development world and become a predominate force. Major AAA games would sit Python on top of their finely tuned C++ engines and their development staff would enjoy the benefits of rapid prototyping new game ideas in a clean and expressive language. It was going to be awesome.
Well, we've seen Python in a few instances like this. The most notable have been Eve and Civilation 4. The problem is that these seem to be the only notable examples. We see more major titles written in Flash and ActionScript than we see written in Python.
The loss here is only being made worse by my points above. Games are moving in two directions: into browsers and into mobile devices. Increasingly, this is a concern even when developing a desktop game. You need to build your product on something you know will help you move into the spaces you'll need to really grab the full potential of revenue.
Again, this is important not because you want to make games, but because lots of game development attracts really talented, smart developers and we're losing them to ActionScript and C#. This matters.
Why Does This Matter?
I recognize that most of the response I'll probably get from this post amounts to, "You're complaining about silly things. Python doesn't do that, it isn't meant to. Stop putting a round peg in a square hole and complaining when it doesn't work."
I don't want to put a round peg in a square hole, but I know that lots of great talent is holding round pegs and they're going to find somewhere to put that talent and, sadly, it won't be in our community. We've got to have a broad range of exciting things Python excels at to attract people. Python is more than a technology. As much as I love Python for whitespace nesting and an amazing set of libraries, I recognize that I love Python the most for the community. We have attracted some of the most brilliant and amazing people I have ever known. This is amazing. This is what makes Python the tool we love: the people who craft a fantastic ecosystem of tools and resources, both technical and persnal, around which we can build amazing things.
But, I fear, our ability to grow this community is hampered by an industry moving in directions we can't cater well to. Maybe we'll find soltuions to these, or maybe we need to push hard to create new areas we can be exciting in, or to promote the areas we already are. You might think it isn't important, but I do.
Python has to be attractive to be successful.