| Student Name: | Joe Amenta |
| Mentor Name: | Benjamin Peterson |
| Title: | 3to2 tool for backporting Py3 code |
| Abstract: |
This proposal focuses on implementing a set of fixers "lib3to2" for code currently written for Python 3.x to convert that code into a format that can be run in a Python 2.x environment.
3to2 will be a tool that will encourage developers programming in Python to go forward confidently with developing in 3.x without worrying about backwards compatibility. Possible future improvements will backport code to earlier versions, as many third-party packages are supported as far back as version 2.3. |
| Public info: |
Here is the proposal I submitted (When submitting my proposal, the "public info" box was not available):
Summary I propose to create a tool, similar to 2to3 [1] that refactors code written for Python 3.x into code compatible with Python 2.x. This tool complements 2to3 for two reasons:
[1] http://wiki.python.org/moin/SummerOfCode/2009
With both a 2to3 tool to ease the migration of large amounts of code to the newer standards and a 3to2 tool to encourage developers to get used to the newer standards, I feel confident that developers who rely on Python for a large portion of their code will feel comfortable moving forward with 3.x.
As 2to3 is written in such a way as to be extensible for more fixers, I plan to reuse much of the code for 2to3 that handles fixers, so as not to reinvent the wheel, and keep my focus on writing the fixers (lib3to2) themselves. This is important, because there are several potential problems that will have to be addressed before 3to2 can be considered comprehensive:
Schedule
Start of program:
By May 23 (start coding date), I plan to be familiar with the following:
[2] http://www.selenic.com/mercurial/wiki/
Midterm evaluation:
By July 6 (midterm evaluation start date), I plan to have the following completed:
Final evaluation:
By August 17 (“pencils down” date), I hope to have:
[4] http://distrowatch.com/search.php?pkg=Python&pkgver=3
[5] Exception: Source Mage GNU/Linux, which actively downloads and configures its packages based on the latest developer source versions. See http://www.sourcemage.org/New_to_Source_Mage_GNU/Linux
About Me
My name is Joe Amenta. I am a 19-year-old sophomore majoring in Economics at Michigan State University. In the fall semester of 2008, I took an introductory programming course taught in Python. The dates of the 3.0 release schedule fell within the dates of my course: Python 3.0rc1 and Python 2.6rc1 were released early in the semester, and right at the end of the semester, Python 3.0 final was released. As the course was taught in 2.5 syntax, the code examples we were given would no longer work in Python 3.0, and there was little to no instruction about how the things that we were learning would become obsolete in the new version. I took it upon myself to learn what was new and report the results.
I started up a blog [6] with the following goals: Document the changes that would affect the specific things that we were learning, and report the results of converting our class code examples [7] to 3.0 syntax with 2to3. I was successful in these goals.
[6] http://python30.blogspot.com/
[7] http://web.cse.msu.edu/~cse231/Examples/CoursePack/Python/
I am enrolled in a physics course for this summer so that I can be eligible for admission into the MSU College of Engineering and majoring in Computer Science. The course is a 4-credit course and fully online. It will not affect the amount of time that I devote to the project proposed in this document. After I graduate with my Computer Science degree, I will finish my degree in Economics, to have expertise in a field where my computer knowledge will be applicable in the real world.
Contact Info
The most reliable way to contact me is through e-mail: amentajo@msu.edu
I can also be contacted via XMPP: joe.amenta@gmail.com
Urgent requests can be sent to me via phone. Contact me via the above electronic methods to get my number if you want that option.
My mailing address is likewise obtainable.
Things to do if I finish early:
The first two of these are current project ideas for the 2to3 tool for GSoC 2009 [8], so collaboration with the students that pick up those ideas would help if I get to this stage.
[8] http://wiki.python.org/moin/2to3
|