Advocacy (ād’və-kə-sē) n.
- the profession or work of an advocate
- the action of advocating, pleading for, or supporting a cause or proposal
Jeff Rush recently took on the mantel of ‘Python Advocacy Coordinator’. Some members of the PSF and the Python community at large feel that there is no need for this position and no need for Python Advocacy in general. At first my knee jerk reaction was one of surprise, ‘Why would we not want to advocate Python Isn’t that part of the PSF mission statement?’
The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of the international community of Python programmers.
…
- Publicizes, promotes the adoption of, and facilitates the ongoing development of Python-related technology and educational resources. This includes, but is not limited to, maintaining a public web site, planning Python conferences, and offering grants to Python-related open source projects.
I had always assumed Python advocacy was a worthwhile and critical effort (critical as derived from the word critique). This is a dangerous assumption and one I based solely on my own personal experiences with Python in corporate and educational environments. Python as a language and a community is growing at an alarming rate. PyCon saw a 44% increase in size this past year, and there are 3 more Python conferences in mainland Europe this year (Euro Python, PyCon Italy, and one other to be announced soon). There are numerous other conferences, unconferences and events where Python will be prominent or are centered around Python based technology (OSCon, RuPy, Plone, BarCamp, SciPy, PyWeek, etc, etc). MIT now uses Python as the language to teach programming. Corporate uptake and endorsement of Python in the past three years has been staggering; Microsoft, Google, YouTube, Yahoo, Nasdaq, Nasa, Sony, DreamWorks, RedHat, Apple. The current most popular change management systems (Subversion+Trac) are Python based. The bane of the RIAA and MPAA, bittorrent is Python Financial institutions, whom are very conservative when it comes to their in-house technology, are turning to Python. A quick look at the Python jobs board and a more detailed look at it’s history shows a huge demand for skilled Python developers in just about every field of business. There was a running joke at PyCon where speakers would get up and say ‘Hello, my name is <your name> and I am not hiring’. It was a running joke because out of over 100 speakers, 3 said it. Guess what the other ~100 said? I mean, when you have Mark Shuttleworth and Tim O’Reilly on your side, what more do you need?
Python is Python’s best advocate. Should it be the only advocate? The language and the communities behind and on top of the language speak softly, but with a combined power that is simply overwhelming. In that sense Python has it’s advocates all over the world. So why isn’t Python being mentioned on CNN like Java, Ruby on Rails and PHP are? Is that a good thing? The truth is, Python is not all that well known and largely misunderstood. It does not get write-ups in CIO Magazine; it does not show up on mid-sized corporate radar. On some level I feel this is a good thing. I don’t like the idea of Python being a bullet item on some marketing slide or CIO’s ‘vision’. The problem is what this does for the real Python advocates; the programmers, developers, and engineers out there who want to use the right tool to solve their problem. If they feel that right tool is Python, they need the information, the numbers, the facts to back up that decision. No one ever gets fired for choosing J2EE (to turn a phrase).
Advocacy is not just something that happens at the PSF or ‘Community’ level. It happens at the level of the developer just trying to do their job. It happens at the level of the student trying to solve that poblem. It happens at the level of the out of work hacker who wants a better way to share files. It happens at the level of the individual who discovers this beautiful and simple programming language called Python and tell someone else. These are the advocates which have made Python what it is. These inadvertent advocates need and deserve support.
Idiocy (ĭd’ē-ə-sē) n.
- utterly senseless or foolish behavior; a stupid or foolish act, statement, etc.
- Psychology The state or condition of being an idiot
It is important to not that advocating Python for Python’s sake is a trap. When you promote something for its own sake to the exclusion of better options, you are not being an advocate; you are being a preacher. You are not promoting a tool; you are giving a sermon on a religion. You are not helping a ’cause’; you are harming that which you profess to care for. Python is not a religion. This blog, and the vast majority of the Python blogs I read, are not based on Python. Python, or any tool, is not the solution to all problems. Advocating Python for the sole purpose of promotion is idiocy. You use the best tool you can get for the problem you are faced with. This is not an easy process. The point of advocacy, and a key job of an Advocacy Coordinator in particular, is to give the information and support to the people who need it; to enable them to make the best decision. Especially if that decision is not to go with Python.
As languages grow, there is going to be some discord, some growing pains. This is true of any endeavor, computer related or otherwise. When this happens you sometimes get some doomsday profits. The best way deal with this FUD (intentional or otherwise) is to have information and processes as open and accessible as possible. Chad Whitacre has a reasonable request for information in the face of theoretical Python 3.0 turmoil, information we just don’t (yet) have. Here is an opportunity for the leaders of Python to speak up and put to rest irrational fears with facts and clear processes. Instead there is a private e-mail with a recommendation that a conference attended by less than 600 people will be a suitable response. (Did you notice the irony and hypocrisy of that last sentence?) [UPDATE: I want to clarify that I am the one being a hypocrite. I am being overly critical of Guido in a rather snide, nonconstructive way.] It is very easy to be inflammatory even when that is not your intention; as Chas Emerick found out. For one reason or another Chas feels that the path Python is taking is diverging from the problems he is trying to solve. This is bound to happen, but it is important to understand when this happens. Unfortunately there is not enough detail in his blog to determine if it really is python that is diverging, or the problems he is trying to solve.
There is more than just FUD which can do harm to Python, there are also the flame wars. Just before PyCon there was a tempest in a blog-pot (gods don’t let that term stick) between some bloggers in the Django and TurboGears camps; two very popular web frameworks written in Python. It centered around some back and forth posts on ideology with more comments than content. I refuse to link to those ‘discussions’ as they did little but create animosity, confusion, and waste people’s time. At the time I was a little surprised that Jacob Kaplin-Moss, Mark Ramm-Christensen and other members of the core development teams did not enter the discussion at any level. I got a chance to talk to both of them at PyCon, and found that these two friends did not care for what had happened but saw no good way to defuse the situation, other than to let it run its course. I asked Mark about it Wednesday evening before the conference, and to paraphrase: flame wars happen, this was a small one based on semantics and nothing, flames extinguish themselves. While this is true, a harm has been done to both projects and is now enshrined in the permalinks and reedits of the web.
For any project or community of any type to be healthy and successful, you need passionate people. It’s the passion for something that makes it worth being passionate about. While the Advocacy Coordinator needs to be passionate about Python, they also need to avoid the conflicts which arise from time to time. They need to be a voice of reason and fact and a source of information which can be used to defuse potential disruptive forces. The Advocacy Coordinator needs to deal with these issues without being drawn into them. This is an unenviable task, but a crucial one to recognize.
I know I am including allot of links to rather large discussions, but they are important in the context of Python advocacy. As the language grows, these issues will occur again. We need to learn from the issues people are having and if not have a level headed response, have the processes and facilities for providing them. Just having a central public forum for discussing these issues would go a long way to help things. The python-dev and python-users mailing lists are not the best forum for discussion, and can seem daunting when people even find them. Brett Cannon has been very vocal about making the Python development process more transparent. For the frameworks and tools based on python, there needs to be a support framework to facilitate discussion. This can be something as simple as providing an repository of authoritative white papers and tutorials.
Currently all these efforts are distrobuted, disjoint, and hard to find. There is no organization, no coordination between these efforts. There are gaps in knowledge which need to be identified and filled. There is no central place for dissemination of information. The Python.org website is static and stale. While it is a fine resource for the language it’s self, it is not a good resource for those out side the community, nor the community it’s self.
Whether Python needs advocacy or not is not the question. Python has advocacy, but it is disjoint, unorganized, and uneven. It is the organic, dynamic advocacy which comes from a dynamic tool with broad mass appeal. The job of an Advocacy Coordinator is not one of an advocate, but one of an educator, healer, and organizer. This is not about the Python language. This is about the people who want to use, or are using the Python language. Python can speak for its self. Who is helping the users to have a voice? Jeff Rush.

I think part of the reason a lot of Python/PSF old timers get a bit wary about words like ‘advocacy’ is the utter, utter distasters that were the marketing-python and pydotorg-redesign mailing lists.
I think the point you make about advocacy happening anyway and there been some need to coordinate it is valid and interesting, but just wanted to explain some of the reactions you got
Just wanted to note that PSF has renewed Jeff’s contract (he actually started 6 months ago and is now continuing another 6 months). In the first six months, Jeff spent a great deal of time on PyCon, which is itself an important advocacy vehicle, and I attribute at least some of its phenomenal growth to his hard work. The revised task list for the next six months should give us some decent materials that we lack:
http://www.python.org/psf/grants/advocacy/revised-tasks.pdf
The focus now is really to support user groups and to get more advocacy content onto python.org. We’re trying to stick to things that have not appeared by themselves in the community. However, please consider helping out by pitching in with content creation (contact Jeff to get started).
Note also that the build system for python.org is being rewritten. The new build runs far faster than the old one and the toolset is much easier to install. This should make a big difference in keeping the site fresher. Please consider also pitching in with that (contact me at sdeibel@wingware.com to get started).
BTW, I started the marketing-python mailing list and made the mistake of allowing a few jerks destroy it. I hope the Django and Turbogears folks learn that there are limits where such “discussion” should be squashed. It can have a long-standing effect, as we’re still seeing in the Python community something like 5 years later.