Other Issues ============ Ethical Considerations ---------------------- A. Proposers are requested to fill in the following table Does your proposed research raise sensitive ethical questions related to: +--------------------------------------------------------------------+------+ | Human beings | No. | +--------------------------------------------------------------------+------+ | Human biological samples | No. | +--------------------------------------------------------------------+------+ | Personal data (whether identified by name or not) | No. | +--------------------------------------------------------------------+------+ | Genetic information | No. | +--------------------------------------------------------------------+------+ | Animals | No. | +--------------------------------------------------------------------+------+ B. Proposers are requested to confirm that the proposed research does not involve: +--------------------------------------------------------------------+------+ | Research activity aimed at human cloning for reproductive purposes| No. | +--------------------------------------------------------------------+------+ | Research activity intended to modify the genetic heritage of human| | | beings which could make such changes heritable. | No. | +--------------------------------------------------------------------+------+ | Research activity intended to create human embryos solely for the | | | purpose of research or for the purpose of stem cell procurement | | | including by means of somatic cell nuclear transfer; | No. | +--------------------------------------------------------------------+------+ | Research involving the use of human embryos or embryonic stem | | | cells with the exception of banked or isolated human embryonic | | | stem cells in culture | No. | +--------------------------------------------------------------------+------+ |Confirmation : the proposed research involves none of the issues | | |listed in section B | YES.| +--------------------------------------------------------------------+------+ There are however, other ethical issues which reflect the philosophy of the Open Source Community. We believe that it is unethical to withold the source of fundamental tools upon with other people rely. When a tool that is critical to your business or your daily life fails, it becomes vital for you to get it fixed. Either you can fix it yourself, or you can pay somebody else to fix it for you. If that vital tool is proprietary, then you are immediately stuck in a Market situation. If the only people who can fix the tool work for high wages in a country with a high standard of living, then all their dependent customers who live in poorer conditions are at a disadvantage, often an unsurmountable one. For lack of the financial resources to pay for needed fixes, small businesses fail or produce software that performs poorly in the marketplace, riddled with bugs that cannot be addressed. This, in turn, prevents those poorer companies from attaining success. They are marginalised, all unintentionally, by the normal workings of the Market. They become a second-tier 'user' of the product, dependent on their software provider to 'do the right thing', even though 'the right thing' may vary enormously from region to region. Thus, when you deny people the option of being able to 'do it yourself' you contribute to the forces in society which produce wealth-based social differentiation and segregation. 'The rich get richer and the poor get poorer'. A compiler is an extremely fundamental tool which one uses to create any sort of software which one can think of. This is precisely the sort of tool that must be freely available to the rich as well as the poor, in all its entirity. The poorer nations will then be in a non-dependent situation. As they use their imaginations and creativity and labour to increase their own personal standard of living and that of the communities where they live, they will have one fewer thing to worry about -- what will I do if my compiler has a bug? Gender Issues ------------- Women are chronically (and increasingly) underrepresented in the computer field; particularly among designers of software and products. Studies[1][2] have shown several factors involved in this gender gap, among them: - Lack of experience with computers leading to avoidance of CS as a field of study or employment. - Interest in "computing for a purpose" rather than "programming for programming sake" - Focus on usability and usefulness PyPy addresses these concerns in the following ways: Allowing the creation of mobile devices which are easily programmed will increase women's successful experiences with computers, thus increasing their comfort level and likelihood of pursuing education and careers in computers. The ease of creating programs due to PyPy's simple but powerful language will allow women to incorporate programming in pursuit of their interests. The user-friendly, interactive interfaces available will attract more women into programming and designing software. As more women bring their viewpoints to the design-process, better products in terms of meeting the needs of a broader number of people will be created and increase the appeal of the products among women, which in turn will encourage women to use and familiarize themselves with the new technologies. Furthermore, the increase in economic and educational opportunities afforded in the CS fields must not be ignored. Studies have shown that, while women who do enter CS enter with less experience, they demonstrate no less ability than their male counterparts. By breaking down the barriers to entry noted above, PyPy will help lessen the gender gap, technologically, socially and economically. As an example of the benificial effects that Python already has on introducing women to the field of programming, the Georgia Institute of Technology teaches a course for non-Computer Science majors which focuses on media, rather than the traditional math-oriented model. This is the Abstract of the paper[3] describing the course: Computing may well become considered an essential part of a liberal education, but introductory programming courses will not look like the way that they do today. Current CS1 course are failing dramatically. We are developing a new course, to be taught starting in Spring 2003, which uses com- putation for communication as a guiding principle. Students learn to program by writing Python programs for manipu- lating sound, images, and movies. This paper describes the course development and the tools developed for the course. While only 3 out of 14 expected participants in the project are female, this merely reflects the poor state of gender equality in the field of programming. Indeed, the ratio in this project is actually more than twice of what is normal. [1] Becoming a computer scientist: a report by the ACM committee on the status of women in computing science. Authors: Pearl, Amy; Pollack, Martha E.; Riskin, Eve; Thomas, Becky; Wolf, Elizabeth; Wu, Alice. Journal: Communications of the ACM, Nov. 1990, v33, n11, p47-58. [2] Unlocking the Clubhouse: Women in Computing Allan Fisher and Jane Margolis, PIs School of Computer Science Carnegie Mellon University MIT Press, 2002, ISBN 0262133989. [3] http://coweb.cc.gatech.edu/mediaComp-plan/uploads/37/ITICSE-mediacomp2.pdf Safety Issues ---------------- Nobody who uses a computer can avoid noticing how viruses, unsolicited email and computer attacks have made life difficult for computer users. While PyPy is unable to solve such problems, it may mitigate them. There are 3 factors that affect this: 1. The ease of writing Python programs give the developers more time to consider security implications. 2. Python as a language has built in checks against buffer overflows and other classic problems that make traditional languages like C and C++ prone to attacks. By improving Python performance, a larger set of programs will be immune to such exploits. 3. PyPy provides the tools for adding specialised security features to the language, in the form of new Object Spaces. This allows applications where security is paramount to add checks and partitioning that will significantly strengthen the defenses. As far as we know, no other language has this feature. Other Policy related Issues --------------------------- As we mentioned before, one of the greatest threats to European competitiveness is its dependence upon proprietary closed source software, mostly made in the United States. The short-term threat of dependedence upon your supplier was already discussed in section 3. There is another threat, which 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'. 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. They are the Formula-One race car mechanics of the software world. While race car mechanics do serve a useful purpose, we have 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 us quote an article posted to the Python-in-Education mailing list in its entirity:: 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 Here is somebody who is hoping we can give him a language he can understand and use without learning C. He is the author of PyGeo, a dynamic geometry laboratory and toolkit, commonly used by elementary and high school teachers. This is where the future lies. Python is already an excellent teaching language. PyPy will be a better one. Thus PyPy comes full circle, and back to Python's original heritage, as a language that was designed to be 'easy to use' for non-programmers. In the appendix, a proposal *Computer Programming For Everybody*, written in 1999 by Guido van Rossum, Python's creator, is as relevant now as when it was written. To summarise: Python's predecessor, ABC, was designed at CWI in the early eighties as a teaching language. Its motto was "stamp out Basic" -- the main competition in languages for non-experts at the time. ABC's designers had a lot of experience teaching traditional programming languages like ALGOL to novices. They discovered that students were often so overwhelmed by the incidental details of using a computer language they never managed to focus on good program and algorithm design. ABC's designers therefore set out to design a language that would take care of all the incidentals, leaving the student more time to learn about programming, and not the chore of 'how to use a computer'. They proposed both a new language design and new terminology that deviated radically from what was (and still is) current among computer scientists and programmers. This proved to be a barrier towards widespread adoption. ABC was too different. People actually wanted a language which was more like other languages, not one that simply didn't relate to what programmers would be doing the rest of their lives. Thus ABC remained a teaching language, and nothing more. About a decade later, Python grew out of this frustration. It shares ABC's focus on elegance of expression, fundamentals of programming, and taking away incidentals, but adds the modern tools that programmers have come to expect, such as object-orientation, and a large and powerful standard library. The PyPy project, being a focused STREP, does not intend to address the problem of 'Computer Literacy' and 'Computer Programming For Everybody'. But we believe that these problems would make an excellent candidate for a Python-related Specific Supporting Action, and we would make every effort to aid and assist such an action should the Commission call for it.