Potential impact ================ Python is an extremely popular Very-High-Level, Object-Oriented, programming language. We intend to make a new reference version of the Python Programming Language, which is faster, more flexible, more extensible, and which gives more control to the individual programmer as to how it is deployed. For instance, you will be able to build a Python interpreter customised for a very small amount of available memory. Or one with speed enhancements only possible because there is a huge amount of memory available. Or a PyPy interpreter which will be executed on several machines but offer a single distributed computation space and balances the load by moving execution threads around. We can produce Object Spaces which implement Logic Programming, Aspect Oriented Programming and Design By Contract, hot new topics in computer science research, but which are rarely seen in industry because existing popular languages do not support them. gramming language. It is always difficult to measure how many people are using a programming language, but of course, we try. Python is generally ranked the sixth most popular computer language in the world. Only Java, Visual Basic, C, C++, and Perl are believed to have more users. The Python FAQ, available at the python language home site of python.org says:: 2.1. How many people are using Python? Certainly thousands, and quite probably tens of thousands of users. More are seeing the light each day. The comp.lang.python newsgroup is very active, but overall there is no accurate estimate of the number of subscribers or Python users. Jacek Artymiak has created a Python Users Counter; you can see the current count by visiting http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py Jacek's counter has more than 43 000 registered users. Googling for 'python programming' gives 1,540,000 hits. ('Python' gives ten million, but many of those Pythons are the actual reptiles.) Compared to the most common languages these days, C, C++, Java and Visual Basic, there is certainly much less 'market penetration', and in some niches, languages such as PHP, Perl and SQL are popular, but Python is vastly bigger than the more obscure languages such as Haskell, OCaml, Smalltalk, ADA, Ruby etc. Some statistics from python.org may be relevant. There were 47,751 Python 2.3 downloads in the first 10 days of September. These are the 'bleeding edge' developers, who were interested in the new release of Python first made available at the end of August. There are, of course, many more who simply wait for Python to become available as a Red Hat, or Debian package, or simply use the version of Python that came installed with their machine when they bought it. FWIW, there are about 600,000 http visitors a month to python.org. About one third of them are using the documentation, which is a fairly good indicator that they are trying to use the language. Number of unique IP addresses per month is about 350,000 at this point, and has been rising steadily from about 250,000 this time last year. Converting this into an actual estimate of number of users is a bit hard, since: 1) One user may use multiple machines (e.g. home & work & cafe) 2) Many sites use a firewall that hides the actual IP (and thus combines multiple users into one) 3) Not all Python users go to python.org every month (or at least not the Documentation page), because they have already dowloaded the documentation for local browsing. It's probably reasonably safe to say there are at least 175,000 active Python users in the world. At least half of them are in Europe, if O'Reilly's sales statistics for their popular books *Learning Python*, *Python in a Nutshell* and *The Python Cookbook* are to be considered relevant. Speaking of books, sales statistics of *The Essential Jython* targetted at users of the Python version that compiles to the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. For comparison, there are something like 12 million programmers world-wide and roughly 50% of those use Visual Basic (according to International Data Corp). In March 2002, Borland said Java had about 1.5 million developers. We intend to make a new reference version of the Python Programming Language, which is faster, more flexible, more extensible, and which gives more control to the individual programmer as to how it is deployed. For instance, you will be able to build a Python interpreter customised for a very small amount of available memory. Or one with speed enhancements only possible because there is a huge amount of memory available. Or a self-customising PyPy which . We can produce Object Spaces which implement Aspect Oriented Programming and Design By Contract, hot new topics in computer science research, but which are rarely seen in industry because existing popular languages do not support them. When we are successful, we will have an immediate, large impact as those 175,000 Python users will all get an improved implementation of the language. This will have an immediate direct effect on Eropean competitiveness. Moreover, the planned improvements directly target the handheld, mobile, and embedded device sectors, where Europe is the acknowledged world leader. People working in such industries have long desired a high level language with a very small footprint. The new innovative concept of Object Spaces, pioneered by PyPy makes the construction of tiny Object Spaces, suitable for running on the smallest devices straight-forward. Indeed, it will be possible for application programmers to configure Python runtime environments to suit their particular hardware characteristics -- for instance, a version that runs in a minimal amount of memory, or a version that can exploit a huge amount of memory to achieve the highest performance speed. Python with greater speed will seamlessly improve the offerings of those European Companies who develop using Python. Moreover, a great many companies, in deciding what language to develop in, reject Very High Level Languages, despite their known advantages for programmer productivity, code-reuse and maintainability because the code produced simply does not run fast enough. If we give them a *fast* VHLL, they will switch. Furthermore, one of the greatest threats to European competitiveness is its dependence upon proprietary closed source software, mostly made in the United States. This is not only the matter of money being spent in the United States is money that is not being spent here, although that affects matters as well. There are two more serious risks. The first is a threat in the present. Any company which writes its software in a proprietary, closed source language is dependent upon its software provider. If you have a bug, you must wait for them to fix it. If this bug is not a high priority for them, you can wait a long time. If you have access to the source you always have the option of fixing it yourself, or hiring somebody else to do that. But this is not the greatest of your worries. You are at constant risk of having your software provider discontinue support for your language. This is a real threat, not a theoretical one. In 2002, Microsoft announced that it would no longer be supporting Visual Basic 6.0 after the year 2005. All Visual Basic Developers have been told to convert their code to run under Microsoft's new .NET framework. Before that, in 2001 Microsoft immediately stopped supporting its Visual J++ language, meant to be a direct competitor with Java, after settling a lawsuit with Sun Microsystems. No migration path was specified. Microsoft is making these decisions because they make business sense for Microsoft, regardless of the effects on European software developers. The second threat closed source makes to European competitiveness is more insidious, and more long term. A good workman knows his tools. This is much more than the theoretical knowledge of how his tools ought to work, according to principles learned in school. The way car mechanics know how cars work is distinctly different from what you would know if you had attended classes on 'the principles of the internal combustion engine', let alone what you need to know to just drive the thing. Right now, in Europe, we don't have enough of the software equivalents of car-mechanics. And most of them live in academia, where they know the intimate details of languages that never get used in industrial applications. The world needs Formula-One race car mechanics, indeed, but it has a much greater need for people who know how to repair the family car. It is not as if there is a shortage of people who would be interested in learning such things, if the source were made available. Many people have taken this step by learning how CPython does its stuff. But still there is a barrier. If you want to know how CPython does things, you need to learn C. C is a notoriously difficult language to learn. But let me quote from an article posted to the Python-in-Education mailing list. FIXME_LAURA -- I promised Arthur I would fix any typos:: Date: Sun, 14 Sep 2003 11:52:05 -0400 From: Arthur To: edu-sig@python.org Subject: [Edu-sig] re : If the PyPy Project ... List-Id: Python in education Terry - >Since I presume the goal of PyPy is to implement *Python* in Python, >wouldn't the implementation language be rather insignificant to an >end-user such as an educator? Why would it be "better" than CPython?For whatever reason, the complex built_in and the cmath module, implemented in Python, are part of the early pypy codebase. As I had been spending some time in the complex realm with PyGeo - a simple version of the complex realm, as these things go - Laura's post gave me the impetus to try to plugin the pypy implementations. Only got stuck on the typing issue. My code tests for instance(object,complex). The pypy complexobject, unadorned, is a class - and fails the test. But that leads me into a deeper look at some of the pypy codebase, trying to understand a little bit of how this kind of issue are to be dealt with. Not that I got there, yet - but I did seem to have an avenue to explore I would not have with CPython - as someone who doesn't C, and has no intention of trying, seriously, to do so. As someone living within the limits of having Python as my only real language, I think that pypy should open things up for me considerably. It will make Python, I believe, a more attractive educational language, because it will make someone with a strong foundation in Python - as the language of choice - a more self-sufficient programmer. Presumably - the point is - there will be less cases where the right approach would be an extension module in C or C++, and a sense of fundamental compromise should one not be equipped to go there. Many thousands of folks - using VB and the like - already do involved, highly performing real world applications and make nice livings doing so, without being equipped to do C. I am thinking that pypy would put Python more squarely in that "space". Is any of this so, or just hope? Art _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig ------------------------------------------------------ Here is somebody who is hoping we can give him a language he can understand. Python already is an excellent teaching language. PyPy will be a better one. Contributions to Standards ========================== There are currently two implementations of Python in common use. The first one, which we will call CPython, but which is what the world knows as Python, is a C implementation of the Python Programming language which compiles to its own virtual machine. The second one is Jython, a pure-Python implementation which compiles to the Java virtual machine. There is no ANSI standard or similar for Python. Right now the de-facto standard for the programming language is 'whatever CPython does'. This is far from ideal, and questions arise, especially from the developers of Jython as to which CPython language behaviours are essential to the Python language itself, and which are mere accidents of this particular implementation. For example, the garbage-collection behavior of CPython is implemented by reference-counting ensuring that an object is finalized as soon as the last reference to it goes away. That would be extremely inconvenient (close to impossible) to implement on standard Java Virtual Machines, which have a deliberately under-specified garbage collector (it can collect anything it pleases whenever it pleases...). In this case, the Jython designers had to obtain an explicit ruling from Guido van Rossum, Python's designer -- who ruled that the behavior of CPython was 'accidental' in this case, and not intrinsic to the Python language specification. Guido van Rossum has expressed interest in giving PyPy the status of 'implementation standard' (executable specification) of the Python programming language. PyPy's ObjectSpaces flexibility will be crucial in distinguishing "accidental" from "designed-in" characteristics. (FIXME: I sent Guido mail asking for something quotable. We will see if he replies.) In order to do this we will have to do something which is called 'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design document providing information to the Python community, or describing a new feature for Python. There are two kinds of PEPs. A Standards Track PEP describes a new feature or implementation for Python. An Informational PEP describes a Python design issue, or provides general guidelines or information to the Python community, but does not propose a new feature. If we proposed to make PyPy the reference standard of the Python language, we would, obviously, have to submit a Standards Track PEP. PEP authors are responsible for collecting community feedback on a PEP before submitting it for review. A PEP that has not been discussed on python-list@python.org and/or python-dev@python.org will not be accepted. After the authors believe that the PEP is ready, they must inform the PEP editors (currently Barry Warsaw and David Goodger) that it is ready for review. PEPs are reviewed by Guido van Rossum, the language author, and his chosen consultants, who may accept or reject a PEP or send it back to the author(s) for revision. If Guido van Rossum accepts the PEP, then its status is changed to 'Accepted'. If the reference implementation is not already complete, it must then be completed. When the reference implementation is complete and accepted (again by Guido van Rossum), the status will be changed to 'Final'. In our case, we wouldn't even write the PEP without having a complete reference implementation, since what we would be proposing is to make PyPy and not CPython the complete reference implementation of the language. Thus the expression of interest from Guido van Rossum is of extreme significance. It is likely, though not certain, that PyPy will become the standard reference implementation of the Python language. :: FIXME either say 'very likely if all the goals described in the project are met' or give some more precise conditions, e.g. existence of a PyPy version largely compatible with existing C extension modules The complete details of how to write a PEP are themselves an Informational PEP -- PEP #1 in fact. Complete details are to be found in this appendix: FIXME include http://www.python.org/peps/pep-0001.html Strategic impact PyPy will have a significant strategic impact throughout the IT sector. It produces immensely useful, practical results which shall be immediately exploited by Python developers world-wide. While it addresses issues which have hitherto mostly remained the special province of academia, and significantly enhances the State-of-the-Art, it is not a project that will only satisfy intellectual curiosity. Python and extremely popular Very-High-Level, Object-Oriented, programming language. It is always difficult to measure how many people are using a programming language, but of course, we try. Python is generally ranked the sixth most popular computer language in the world. Only Java, Visual Basic, C, C++, and Perl are believed to have more users. The Python FAQ, available at the python language home site of python.org says: 2.1. How many people are using Python? Certainly thousands, and quite probably tens of thousands of users. More are seeing the light each day. The comp.lang.python newsgroup is very active, but overall there is no accurate estimate of the number of subscribers or Python users. Jacek Artymiak has created a Python Users Counter; you can see the current count by visiting http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py Jacek's counter has more than 43 000 registered users. Googling for 'python programming' gives 1,540,000 hits. ('Python' gives ten million, but many of those Pythons are the actual reptiles.) Compared to the most common languages these days, C, C++, Java and Visual Basic, there is certainly much less 'market penetration', and in some niches, languages such as PHP, Perl and SQL are popular, but Python is vastly bigger than the more obscure languages such as Haskell, OCaml, Smalltalk, ADA, Ruby etc. Some statistics from python.org may be relevant. There were 47,751 Python 2.3 downloads in the first 10 days of September. These are the 'bleeding edge' developers, who were interested in the new release of Python first made available at the end of August. There are, of course, many more who simply wait for Python to become available as a Red Hat, or Debian package, or simply use the version of Python that came installed with their machine when they bought it. FWIW, there are about 600,000 http visitors a month to python.org. About one third of them are using the documentation, which is a fairly good indicator that they are trying to use the language. Number of unique IP addresses per month is about 350,000 at this point, and has been rising steadily from about 250,000 this time last year. Converting this into an actual estimate of number of users is a bit hard, since: * One user may use multiple machines (e.g. home & work & cafe) * Many sites use a firewall that hides the actual IP (and thus combines multiple users into one) * Not all Python users go to python.org every month (or at least not the Documentation page), because they have already dowloaded the documentation for local browsing. It's probably reasonably safe to say there are at least 175,000 active Python users in the world. At least half of them are in Europe, if O'Reilly's sales statistics for their popular books Learning Python, Python in a Nutshell and The Python Cookbook are any indication. Speaking of books, sales statistics of The Essential Jython, targetted at users of the Python version that compiles to the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. For comparison, there are something like 12 million programmers world-wide and roughly 50% of those use Visual Basic (according to International Data Corp). In March 2002, Borland said Java had about 1.5 million developers. We intend to make a new reference version of the Python Programming Language, which is faster, more flexible, more extensible, and which gives more control to the individual programmer as to how it is deployed. For instance, you will be able to build a Python interpreter customised for a very small amount of available memory. Or one with speed enhancements only possible because there is a huge amount of memory available. Or a PyPy interpreter which will be executed on several machines but offer a single distributed computation space and balances the load by moving execution threads around. We can produce Object Spaces which implement Logic Programming, Aspect Oriented Programming and Design By Contract, hot new topics in computer science research, but which are rarely seen in industry because existing popular languages do not support them. When we are successful, we will have an immediate, large impact as those 175,000 Python users will all get an improved language. Potential Impact on the Industrial and Research Sectors ======================================================= The particular improvements we intend to make to Python will have an immediate direct effect on Eropean competitiveness. What is more, the planned improvements directly target the handheld, mobile, and embedded device sectors, where Europe is the acknowledged world leader. People working in such industries have long desired a high level language with a very small footprint. The new innovative concept of Object Spaces, pioneered by PyPy makes the construction of tiny Object Spaces, suitable for running on the smallest devices straight-forward. Indeed, it will be possible for application programmers to configure Python runtime environments to suit their particular hardware characteristics -- for instance, a version that runs in a minimal amount of memory, or a version that can exploit a huge amount of memory to achieve the highest performance speed. The makers of mobile and networked devices, as well as computer game designers in the Massively-Multi-Player games industry have long desired a language that could automatically balance loads, or that allowed massive parallelism through microthreads. They too will get what they desire. Moreover, a great many companies, in deciding what language to develop in, reject Very High Level Languages, despite their known advantages for programmer productivity, code-reuse and maintainability because the code produced simply does not run fast enough. If we give them a *fast* VHLL, they will switch. Potential Impact on the Balance of Trade ======================================== Right now Python is the sixth most popular programming language in the world. Java and Visual Basic, ranked 1 and 2, are closed source proprietary American products. The number one reason that is cited by Java users as to 'why they don't use Python' is that it is too slow. PyPy will fix this. Right now the Visual Basic users have a terrible dilemma. Microsoft, in its wisdom, has decided end support of their current platform, Visual Basic 6.0. After the year 2005, they will have to move to Microsoft's .NET. This is a tremendous opportunity for us. They're angry as anything now, and tempted to move, not to .NET, but to an Open Source language, just so that they can have control over their own destiny and indicate their displeasure with Microsoft at the same time. Every Java and VB user that switches to Python does not pay license fees to Sun or Microsoft and helps the European balance of Trade. Of course, all the PBF members are predicting that an improved Python will improve their sales, both domestic and foreign. DISEMMINATION ore B6.7.wp14_documentation.txt.. include:: crossreferences.asc .. |title| replace:: Project Documentation and Dissemination .. |wp| replace:: WP14 .. |start| replace:: 0 .. |p1| replace:: AM .. |m1| replace:: 19 .. |p2| replace:: JH .. |m2| replace:: 3 .. |p3| replace:: MWH .. |m3| replace:: 3 .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| .. |m5| replace:: |e| .. |p6| replace:: |e| .. |m6| replace:: |e| .. include:: wp-toptable.asc .. include:: wp-tablebegin.asc **Objectives** Providing ongoing documentation throughout the whole project. Keeping external groups informed of the ongoings in PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** - During the whole project, maintain and extend a set of documents represends the current status of the project, results of discussions, the planning of new sprints and their status reports, as well as the preparation of papers for presentation on various congresses. - Send reports of ongoings in the project to the Python Business Forum (PBF) and the Python developers list (python-dev@python.org). XXX here is the new text from Anna and Alex: WP 14 Each "sprint", as well as the regular progress of non-sprint development, will produce technical novelties, some of which may afford immediate use and adoption of the novel technologies being developed. WP 14 will periodically produce short reports on the result of "sprints" and other development. Said reports will be posted to the relevant mailing lists as well as archived on both the PyPy and the Python Business Forum website for universal availability. Python community members will be encouraged to keep current with the project through the short reports, while community feedback on technical developments will be gathered on the website and mailing lists to be used by the appropriate project areas to further enhance the project's development efforts, in true Open Source spirit. In addition to the periodically produced short reports, WP 14 will on occasion present longer, detailed reports to the Commission, and to scientific committees advising the Commission on technical issues. Technical papers and talks will be submitted to scientific conferences which deal with the subject matters covered by the project. When the advancement of the project warrants it, WP 14 will also publish "popularization" articles and tutorial materials to help other practitioners of software development to make practical use of the project's results. Diagrams and schematics will be provided to illustrate fundamental concepts, as appropriate to the audience and the subject matter. XXX TODO: - Make a shorter version for here - move personal stuff into a better place - extract and use some for the introduction text .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** - Good documentation and dissemination .. include:: wp-tableend.asc