I meant to give this as a lightning talk, but unfortunately the
session was too short and I gave a different presentation first and
it didn't come back around to me again, which is too bad -- I actually
didn't care about the other presentation that much.
My premise:
Resolving Python's problems with web programming is the most
important thing we can do to market Python.
You might dismiss me as being self-centered, as I'm a Python web
programmer, and we all think our own problems are the most important
problems. But then I'm a web programmer because I think it's the most
important and empowering development environment of our time -- it has
been for at least the last five years, and I'd be surprised if that
didn't stay true for at least the next five years.
And I am doing okay -- these aren't my own problems I'm complaining
about. I don't want to talk down Python web programming too much --
if you are serious about web programming the initial investment will
pay off, since Python is a great environment. But if you aren't
committed enough to invest that time, and you want to produce
something useful quickly, then -- though it hurts me to say this --
Python isn't a good choice.
This is an incredible missed opportunity for Python. Most other
marketing efforts underway for Python are (IMHO, of course) misplaced.
Right now Python marketing -- which is admittedly an afterthought for
everyone -- is driven by a desire to compete with Java (and probably
.NET recently). But people won't admit that we are utterly
incapable of competing head-to-head with these languages, because they
speak to an audience we can't market to directly.
Everything that makes Python great doesn't mean much to managers -- will they
care about significant whitespace?
Sometimes it's even contrary to what managers want. Managers are wary
of empowering programmers, because it scares them to become dependent
on a single programmer -- I think this isn't a big problem for
Python, but it is something that encourages heavyweight
methodologies (which aren't good in Python), B&D programming
environments, static typing, etc.
Python appeals to programmers. That's who we have to sell ourselves
to. Forget everyone else. Let the programmers sell it to their own
managers -- if they really love Python, they'll go through that
effort. If they are really successful with Python it won't be hard
for them -- Python will sell itself. If Python can't sell itself then
it doesn't deserve to be adopted -- ultimately what matters is what
people build in Python, not the virtues of the language itself.
What we need to do is get our foot in the door. We need to get
programmers to write projects and do so successfully. We need those
projects to be visible to managers.
Web programming is the best way to get our foot in the door. A
programmer with little experience can produce a useful web application
in a matter of hours. Not just playful or interesting, but something
that can actually go into productive and live use. The only other
environment where that is possible is the command line -- and managers
never see programmers' command line tools.
Web programming is also a kind of universal need. Sure, there's lots
of things besides the web. But unless you really try to avoid the
web, as a programmer you are likely to have occasional problems that
are best solved with a web application. This is true no matter what
field you are in. In part because web applications don't just touch
on core needs -- e.g., embedded programming at a hardware company,
numerical analysis at an engineering firm -- but on any coordination
needs, and everyone needs to coordinate things. The embedded
programmer might display test results in a web page, the engineer may
collect data via a web upload form. If they have successful
experiences in Python in these cases, it is only natural that they
will try to use Python elsewhere. That's great, because Python is
appropriate in some way for most of those other use cases too.
When we consider Python marketing, we should look for accessible
marketing successes. Java isn't accessible. The PSF isn't Sun,
Zope 3 and PEAK aren't J2EE, and I could go on. These aren't just
technical differences, they are based on deep social differences. We
need to look at agile and open source successes. (And we have to look
at successes, so no need to look at Smalltalk or Lisp...)
By some coincidence three languages starting with P are often grouped
together: Perl, PHP, and Python. It's a nice coincidence, and these
are the languages I've thought about. Both Perl and PHP
have had tremendous bursts of growth because of web programming. This
graph isn't entirely a representation of PHP's growth, but it says
something, and it's doesn't take a graph to know that PHP has grown
incredibly rapidly:
And Python could have been PHP. We could have seen that kind of
growth. But we didn't, because there has been and continues to be a
bunch of little things that make Python annoying to use and get
started with for web programming. But it's not all over -- PHP 5 is
barely catching up to Python's features from 10 years ago. There's a
lot of room for a better language to take it's place. (Though we
should be a little worried that Ruby could be that language.)
Anyone who cares about Python should care about the web programming
situation -- no matter what your area of expertise. Those of us in
the web development community need both support and pressure to
improve things. We also need support from the Python core -- there's
some longstanding issues with Python that cause problems; things like
long-running processes and reloading code, isolating and monitoring
interpreter instances, and restricted environments. These are things
that reach far down into Python the language, in such a way that the
application programmers that need the features aren't generally able
to make much progress (nor is it clear they'd get support on any
solutions they did provide). We also need input from people trying to do
commodity Python hosting, and we need to pay attention to what they say.
Really, I want this post to be seen as an optimistic one. We all know
about the problem, but we should focus on the incredible opportunity
that's out there if we can solve this. I know we're all volunteers --
I am too. We work on what we enjoy. But we also do this work because
we can always imagine great things yet to be created. We do this work
because we enjoy sharing our ambitions and successes with others. I
just hope people will direct their imaginations in this direction,
because we could really use the help.