Over a period of time, perhaps starting in earnest with the weblog entry "Marketing Python - An Idea Whose Time Has Come", a perception has emerged that the Python community has not been effectively communicating the benefits of the Python language and technologies. Whilst previous and existing promotional efforts at the highest levels of the community have involved ongoing advocacy activities (see PythonAdvocacyCoordinator and Advocacy), repositories of materials or links to materials (see evangelism support materials), events (see PromotingPythonBof), and the redevelopment of the Python Web site, it has been argued that the language and associated technologies are not being effectively "sold" to newcomers.
One contentious issue related to marketing activities is the identification of the target audience for any marketing exercise or message. Previously, the "executive" audience (or "management") has been considered as the primary audience, since good technology supposedly sells itself to a technical audience, but recent developments have suggested that a clear message to a technical audience can promote a "peer marketing" effect. In other words, a good (or merely new, interesting or fashionable) technology that is communicated to a technical audience can be adopted through peer influences rather than through the persuasion of a primarily managerial decision-maker using a less technical and more promotional message. A discussion of different audiences can be found here.
This page is concerned with ideas and initiatives which seek to improve the marketing of Python, where marketing in this context should be taken to mean the communication of the benefits of the Python language and technologies to various audiences (eg. software developers) in order to persuade them to choose Python as the basis of their activities and to reassure them that Python is a sustainable and acceptable choice.
Reasons to Market Python
Unlike traditional marketing activities, no direct financial benefits are derived from marketing Python and thus increasing the number of "customers". Nevertheless, various other benefits emerge from a larger Python community:
- Wider recognition as a suitable technology: as more uses of Python are encountered, the reluctance to adopt Python in organisations may be minimised.
- Wider application of the technology beyond established domains: people may be encouraged to try Python in places and applications previously not considered (or not attempted due to lack of interest or resources).
- Increased interest in products and services: as more people work with Python, more people and organisations will want to support Python; for example, Web hosting companies are more likely to support Python solutions if the demand increases.
Of course, Python is already widely used, but areas exist where Python arguably lacks "momentum" and yet can already be considered suitable as a technology. The appropriate marketing of Python can lead to the non-technical barriers being demolished.
The communication of Python's benefits must take into account much more than just the existence of promotional articles and advocacy materials. Indeed, marketing should not be regarded as the use or application of merely promotional materials on top of the existing project infrastructure and work. Rather, it must consider the accessibility of the entire work and the community around it.
Areas which should be reviewed for accessibility and whose quality assist in the promotion of the work include the following:
The Python Web site and other Web resources:
- Catalogues of software packages which demonstrate Python's support for a different kinds of development projects.
- Details of "happy customers": newcomers probably want to identify their peers and case studies can be reassuring to other participants in a particular field.
- Python documentation:
- Introductory (tutorial) materials.
- Reference documents (library and language references).
- Support materials (FAQ lists, troubleshooting guides, how-tos).
- Mailing lists, newsgroups and news feeds.
- Project infrastructure (development process resources):
- Strategic materials (roadmaps, development process details).
- Issue tracking, repository access/browsing.
- Security and maintenance updates.
- The software itself:
- Distinguishing features.
- Library support.
Additional resources for marketing Python include the following:
Whilst promotional activities traditionally focus on articles, presentations and events, if the whole body of Python work is to be directed towards marketing Python, all of the above should be considered in a marketing context.
Whilst communicating the benefits of Python, the means of communication is critical:
Availability: educational materials may be situated in locations which may change or become inaccessible. (Example: "Slightly OT: Is pyhelp.cgi documentation search broken?") The vitality of materials may change, resulting in outdated impressions being imparted.
- Structure and navigation: having large repositories of information is of diminished benefit if would-be readers cannot locate the materials conveniently.
- Nomenclature: memorable but suggestive naming of resources is critical to their acceptance and utilisation.
The Python Web Site
The primary resource for Python marketing is the official Python Web site. Whilst many of the above focus areas are addressed by the site, some reservations may be expressed about the delivery of the materials mentioned above. Consequently, it may be informative to consider the site from the perspective of particular user profiles.
Profile: Technical Newcomer
Upon learning of the existence of Python, a newcomer with a technical background may have various priorities when researching the language, including the following:
- What the language looks like.
- What style of programming the language encourages.
- What it runs on. Where can a convenient package or installer for Python be found?
- What kinds of tasks it is designed for (or does best).
Here, the current site offers some quick answers, but omits any immediate examples of actual Python code. Whilst this might forestall any prejudicial rejection of the language based on its indentation-based syntax, the newcomer is forced to go hunting in the site for some examples.
Profile: Domain Motivated Newcomer
Some individuals may wish to assess the suitability of Python for a particular domain, such as Web application development or graphical user interface programming; their priorities may include the following:
- Why Python is a good choice for the domain.
- Which solutions are available and how vital, well supported and complete they are.
- Which are the most favoured, whether the community stands behind them, and what level of interoperability exists between them.
- Whether people have been successful in developing such kinds of software in Python.
Here, the current site provides some references to popular projects and to topic guides. Success stories are available conveniently, and these may mention various projects and solutions. Sadly, the Python site does not reveal its own technical foundations, although such details are available here.
Such a domain motivated newcomer may be particularly well-informed and seek specific reference material as opposed to promotional material. The site provides a sidebar link to the documentation page which features a long list of potentially suitable documents, but the suitability of such documents shall be discussed in the appropriate section below.
Profile: Technical Advocate or Insecure Manager
Some people may struggle to justify the usage of Python in an organisation:
In order to assuage concerns about the language, such people may wish to quickly gather information about the following things:
- Why Python is a good choice in the particular application domain.
- Who else in the domain is using Python.
- Which vendors (especially operating system vendors) provide or support Python.
- What benefits and advantages Python brings over non-Python-using competitors.
Here, the current site provides fast access to success stories about Python adoption. Indeed, the current site seems to be fairly well optimised for managerial-style research. Some additional focus on vendors could be useful: Python is provided on many GNU/Linux or UNIX systems but specifics might be reassuring.
Due to historical and possibly maintenance reasons, the Python Web site references a large number of external resources. Unfortunately, this can introduce availability issues:
- Documentation searching is done using a Starship page (which as of October 2006 is down).
- Some resources are not as "vital" as they once were, notably the PyXML software and the XML topic guide.
Structure and Navigation Issues
In order to preserve convenient access to the wealth of content on the old Web site, the number of links and menu entries presented on the front page and other major pages is considerable. Unfortunately, this comes at the expense of rapid comprehension:
- Documentation links appear in multiple places, pointing to different things: what is the readily perceivable difference between docs.python.org and www.python.org/doc?
- The quick links duplicate other main menu links. However, more is not always better: readers should not be forced to potentially remember alternative routes of exploration just in case a link does not take them straight to where they wanted to go.
- "Software development" refers to a general list of applications but lists specific software development project tools underneath.
- On the documentation page, a plethora of links to "Current Docs" (alongside the main content which supposedly contains the current documentation) and other less obvious places: what should one expect from the Wiki or the topic guides? Is one better than the other? Why are new-style classes so prominent on the side menu? (Is is because the documentation for them isn't properly integrated into the rest of the manuals?)
Whilst Python itself is an inspired name for a computer language, the Web resources should arguably avoid establishing their own vocabulary that assumes certain prior knowledge of unrelated cultural material.
- The Cheese Shop might be a humourous name, given enough Monty Python exposure, but may be misleading to newcomers. (The front page of the Python Web site avoids this name, however.)
Suggestions and Ideas
Some of these suggestions are already fulfilled with the current Web site, but others would probably enhance the site if implemented:
Show some Python code on the front page! If one of Python's strengths is its readability, show it off!
- Try and tie together a description of the paradigm (object-oriented plus others) with the code.
State the available platforms and provide links immediately: if some implementation is good for advocacy, people should be directed straight to it instead of being told about it. Not "Python has also been ported to the Java and .NET virtual machines", but "Python runs on the Java virtual machine as Jython and on .NET as IronPython".
Show off things Python does best or most conveniently. Link to specially edited cookbook entries.
Point to ready-to-use solutions and high profile applications, along with big name users.
Consider integrating the package index more with the rest of the site in order to show "vitality" as well as helping people find solutions. Also consider that the package index is not the only way to get packages or installers: consider integrating with other package repositories.
Emphasise collaboration instead of fragmentation by providing quick access to community standards. Consider revitalising the special interest groups (both in terms of visibility and their status).
Simplify the menus: does there need to be replication of success stories, quotes? "Community", "Foundation", "Donate to the PSF": what's a newcomer to make of this? "Links": isn't this just a holding pen for content?
Simplify the structure: there should be one place for documentation and a simple route to it.
Integrate essential site functionality: don't rely too heavily on external tools to search the Python documentation, for example.
The elastiC World site (for the elastiC programming language) has a very simple layout with a concise menu which could be useful inspiration.
The materials which accompany or complement the Python distribution are of special importance when communicating to well-informed audiences, even though such materials are not traditionally regarded as marketing-related content. However, aside from the Web site, such materials may be the primary interface used to judge Python's suitability by those motivated to find technical answers rapidly.
Profile: Technical Newcomer
As described above, there are some people who merely wish to get acquainted with the language in order to see if it suits them, and they may prioritise the following:
- What the language looks like.
- What style of programming the language encourages.
- What the principal abstractions are.
Here, the tutorial (as well as other resources) delivers answers regarding the look of the language. However, when discussing programming styles and principal abstractions, the bundled documentation starts to show its age: metaclasses appear only in the glossary in the tutorial, and appear to be absent from the language reference. Consequently, newcomers may question the maturity or relevance of such features.
Profile: Domain Motivated Newcomer
As described above, some individuals are motivated by particular kinds of applications or activities and wish to find things such as the following:
- Whether Python supports the activity.
- Does it involve a separate package, a stack of packages, or is it already "in the box".
- What the API for the packages looks like.
- If there are many competing packages, what the cost of choosing, switching is - are there any community standards?
The current library documentation does attempt to categorise modules and packages, but the accumulation of packages of varying relevance does provide a degree of confusion in the presentation. It could be argued that a more coherent library (or library documentation) is required, and such a proposal can be found here.
Profile: Experienced Python Developer
Marketing Python need not merely involve newcomers to the language: sometimes Python needs to be marketed to experienced Python developers for applications and activities that such developers either have no prior experience with, or as part of a process of reassurance that Python remains a suitable choice for such activities.
Such individuals may resemble newcomers in their interactions with reference materials and documents, but since they may previously have sought solutions in other areas, certain expectations may have been formed:
- Whether Python is as suitable as in other areas.
- Whether the available solutions are as mature as in other areas, and whether such solutions have "graduated" to the standard library or are standardised.
- Whether community interest is as vibrant as in more familiar areas.
Whether such expectations are fulfilled probably depend on the exact topic being considered.
Suggestions and Ideas
Although changes have been suggested with regard to the maintenance and production of the Python documentation, some other changes might be beneficial:
Simplify the tutorial or target it better: the first real action appears in section 2.1.2 after a discussion of sys.argv.
Make the tutorial a more focused tutorial, and improve the language reference: some aspects of the language are much better covered in the tutorial than in the language reference, which itself seems more like notes on the implementation or the evolution of the language's design.
Emphasise the community resources such as the python.org Wiki, Python Cookbook and their collections of hints, how-tos and recipes. Consider further maintenance of "Dive into Python" and other major resources.
Revitalise the FAQs or make the Wiki the primary FAQ resource.
Emphasise the community standards and currently supported APIs in the library reference; de-emphasise the deprecated modules. (See here for suggestions which could in part be applied to the structure of the documentation, if not the actual library itself.)
Mailing Lists, Newsgroups and News Feeds
An especially important mechanism for the distribution of community information and for the support of language users is the collection of mailing lists dedicated to Python along with the comp.lang.python and comp.lang.python.announce newsgroups.
The announcement mailing list and newsgroup, along with various news feeds (that are mainly a product of the Python Web site), form an important channel to inform users of new developments, although it should be noted that many announcements on comp.lang.python.announce are for software packages that may not have been added to other resources, such as the Python Package Index. Consequently, community members must seek information in numerous places:
- New software: comp.lang.python.announce, the Python Package Index, other software repositories, various news feeds.
- Events: comp.lang.python.announce, the python.org Wiki, various news feeds.
- Security information: comp.lang.python.announce, the python.org news feed.
Having announcements posted to more than one location is a good thing: some people choose to follow newsgroups and mailing lists; others follow news feeds. Ensuring that each location carries everything is the more difficult task.
The various mailing lists and the comp.lang.python newsgroup serve as collaborative resources for developers as well as support channels for those attempting to use Python software of various kinds. In the first ten years of Python's development, the establishment of targeted mailing lists for specific topics was possibly the principal mechanism for focusing community activity in certain areas.
Subsequently, however, interested parties have sought to establish Wikis and mailing lists outside the traditional structure of python.org and the special interest group structure. This is perhaps analogous to trends in distributed software development favouring inexpensive branching and experimentation: instead of negotiating technical or administrative obstacles, developers move towards a decentralised model and introduce "local" tools which are more easily customised.
Meanwhile, many general conversations which once took place on comp.lang.python (and the general Python mailing list) regarding the nature of the language itself have now migrated to the more specialised python-dev mailing list, with even general implementation problems being handled on python-dev in recent years rather than being discussed on the general list.
It is not uncommon for users of the language to do the following things when seeking support:
- Post questions to the wrong mailing list (eg. python-dev instead of the general mailing list).
- Post questions to a general list where a more specific list would be more appropriate (eg. the general mailing list instead of the Zope mailing list).
- Ask frequently asked/answered questions.
Suggestions and Ideas
Many of the resources mentioned here are highly distributed and are outwith the control of the Python core developers and its representatives. Nevertheless, some suggestions are appropriate with respect to the utilisation of such resources, together with the management of resources which are controlled within the python.org infrastructure:
Attempt to synchronise the various announcement channels.
Revitalise the special interest groups system and/or encourage better awareness of collaborative efforts.
Make the purpose of each resource even more obvious, possibly by concisely documenting this on the Python Web site and by posting reminders and FAQ articles to newsgroups and mailing lists.
Encourage open discussion in general resources rather than prematurely sending people to relatively low traffic special mailing lists where ideas quickly lose momentum.
Document concisely all community resources, not just the python.org mailing lists.
The Python Software
While it might seem unusual to consider the product being marketed as a vehicle for marketing activities, its suitability and performance (in the general sense of the word) are things which can communicate the benefits of the product more efficiently than any other medium. Indeed, as marketing is a two-way process, selecting target audiences and communicating a message to such audiences (in one direction) whilst digesting the response of such audiences and modifying the product to meet their needs or desires (in the other direction), it seems appropriate to consider improvements that could be made to enhance Python to meet the needs of its target audience.
So far, this is just a collection of thoughts about marketing Python and improving the way Python and its technologies are communicated. Moving on from a kind of position paper to concrete activities is the aim, but insights are obviously welcome to accelerate the process. -- PaulBoddie