<pre>1. Project name             : Idly Develop<br>2. Existing website, if any : none<br>3. One-line description     : A proof of concept for multilingual programming<br><br>4. Longer description       : An IDLE-based program editor demonstrating the 
<br>                       concept of transparent non-English-based editing of<br>                       real python code. See notes, below, for further discussion.<br>                            :<br>                            :
<br><br>5. URLs of similar projects : Well, there's IDLE, and from about 1995-98 Appletalk did something similar... but this is really a new concept. <br><br>6. Committer list <br>   Please list the maintainer (lead developer) as the first entry. Only list 
<br>   developers who need to be given accounts so that they can commit to your<br>   project's code repository, or push their own. There is no need to list<br>   non-committer developers.<br><br>      Username   Full name             SSH2 key URL                    E-mail
<br>      --------   ---------             ------------                    ------<br>   #1 homunq     Jameson Quinn         <a href="http://www.casarizoma.org/id_dsa.pub">www.casarizoma.org/id_dsa.pub</a>     <a href="mailto:jquinn@cs.oberlin.edu">
jquinn@cs.oberlin.edu</a><br><br>I know that at least a couple of others would be interested, I'd be happy to allow any who want to to sign up.<br><br><br>7. Preferred development model<br><br>   [X] Central tree. Every developer can push his changes directly to the 
<br>       project's git tree. This is the standard model that will be familiar to <br>       CVS and Subversion users, and that tends to work well for most projects.<br><br>   [ ] Maintainer-owned tree. Every developer creates his own git tree, or
<br>       multiple git trees. He periodically asks the maintainer to look at one<br>       or more of these trees, and merge changes into the maintainer-owned,<br>       "main" tree. This is the model used by the Linux kernel, and is 
<br>       well-suited to projects wishing to maintain a tighter control on code<br>       entering the main tree.<br><br>   If you choose the maintainer-owned tree model, but wish to set up some<br>   shared trees where all of your project's committers can commit directly, 
<br>   as might be the case with a "discussion" tree, or a tree for an individual <br>   feature, you may send us such a request by e-mail, and we will set up the <br>   tree for you.<br><br>8. Set up a project mailing list:
<br><br>   [ ] Yes, named after our project name<br>   [ ] Yes, named ______________________<br>   [X] No<br><br>   When your project is just getting off the ground, we suggest you eschew<br>   a separate mailing list and instead keep discussion about your project
<br>   on the main OLPC development list. This will give you more input and <br>   potentially attract more developers to your project; when the volume of <br>   messages related to your project reaches some critical mass, we can 
<br>   trivially create a separate mailing list for you.<br><br>   If you need multiple lists, let us know. We discourage having many <br>   mailing lists for smaller projects, as this tends to<br>   stunt the growth of your project community. You can always add more lists
<br>   later.<br><br>9. Commit notifications<br><br>   [ ] Notification of commits to the main tree should be e-mailed to the list<br>       we chose to create above<br>   [ ] A separate mailing list, <projectname>-git, should be created for commit
<br>       notifications<br>   [X] No commit notifications, please<br><br>10. Shell accounts<br><br>   As a general rule, we don't provide shell accounts to developers unless <br>   there's a demonstrated need. If you have one, please explain here, and
<br>   list the usernames of the committers above needing shell access.<br><br>11. Notes/comments:<br>A. For prior discussion of this concept, see (oldest to newest):<br><a href="http://wiki.laptop.org/go/Develop#Human_Language_and_Culture_Concerns">
http://wiki.laptop.org/go/Develop#Human_Language_and_Culture_Concerns</a><br><a href="http://wiki.laptop.org/go/Source-code_editor_with_transparent_native-language_display">http://wiki.laptop.org/go/Source-code_editor_with_transparent_native-language_display
</a><br><a href="http://wiki.laptop.org/go/Source-code_editor_with_transparent_native-language_display/design">http://wiki.laptop.org/go/Source-code_editor_with_transparent_native-language_display/design</a><br><a href="http://lists.laptop.org/pipermail/sugar/2007-August/003012.html">
http://lists.laptop.org/pipermail/sugar/2007-August/003012.html</a> and associated thread.<br><br><br>B. Note on terminology: For what follows,<br>(Spanish) is shorthand for "user's non-English native language". 
<br>(Arabic) is short for "another non-English language". <br>(*Spanish) and (*English) are interchangeable variables for two languages, one of which is English.<br><br>C. Basic concepts and design philosophy<br>
Write in Spanish-based quasiPython, save in English-based Python.<br>   reason: this keeps code fully portable, yet lowers the barriers to entry, especially for younger children who are not comfortable with English.<br><br>
Built-in translations of python keywords for all OLPC target languages<br>   reason: it's easy, there are so few.<br><br>Easy, GUI-based and dictionary-supported tools for translation of identifiers<br>   reason: if everyone can translate, it will go fast. Wiki-style philosophy.
<br><br>Ditto for line-by-line translation of docstrings and comments<br>   reason: line-by-line translation allows the possibility of twext, not too fine or too granular.<br><br>Translate ONLY module "public interfaces", not internals.
<br>(ie, what would go in a .h file if python had them - the things that get used by another module that imports it)<br>   reason: this simplifies the task of translating. It is probably not especially productive to try to translate module internals. 
<br>Also, see next point.<br><br>The translation UI only lets you translate INTO your preferred language the interfaces of modules IMPORTED BY your modules<br>   reason: this is the most useful user case. Restricting things to this case MASSIVELY simplifies the programming task
<br>and reduces the possible errors created, as the model is already focused on the interface between two specific files, so<br>overtranslation is not a risk, and as it is also reasonable in this case to expect user input on what file the translation
<br>is intended to apply to.<br><br>D. Status:<br>new module in idlelib with >300 LOC. Of these, ~100 do the simple, static translation, and work; the other ~200 are focused<br>on managing multiple translation dictionaries for multiple open files, these currently run but are buggy/incomplete.
<br><br>minor modifications to EditorWindow, IOBinding, and a couple other existing IDLE modules (not ColorDelegator yet). <br>These make a working editor and shell with a static translation of keywords from English to Spanish.
<br><br>E. Plans:<br>This is intended as a proof-of-concept. <br>I expect that about 60-80% of the code could be reused with an AbiWord editor gadget (rather than the tk text gadget IDLE uses)<br>for the real Develop activity.
<br>I also expect that when it's done, making it generalizable to computer languages other than Python would be about 20% additional work.<br></pre>