[Idle-dev] Re-imagining Idle (was re; going to pycon

Terry Reedy tjreedy at udel.edu
Sun Apr 5 21:59:31 CEST 2015


Rearranging in temporal order

On 3/31/2015 7:22 PM, Al Sweigart wrote:
 >  Douglas Blank <dblank at cs.brynmawr.edu> wrote:

I did not get the message from Douglas, only Al's quote.

 >> On Tue, March 31, 2015 4:54 pm, Al Sweigart wrote:

>>> I'm giving a keynote for the Python Education Summit to talk
>>> about the IDLE Reimagined project and changing IDLE to be more
>>> an education tool for beginners than a standard IDE for
>>> developers. It'd be great to bounce deas off of IDLE developers
>>> (or anyone who has ideas/critiques).

I am not going, but I have been thinking about Idle improvements for 
years. There are issues and code for several on the tracker.  The 
following are what I see as major problems in making enhancements.

1. Tests.  Without tests, whether automated unit tests or scripted 
manual tests (I and GSOC students have added some of both), it is too 
easy to introduce bugs when refactoring.

2. Bugs.  Does it make sense to refactor buggy code?  In any case, the 
existing startup bugs, when triggered, are especially baffling to beginners.

3. Ambiguous approval authority.  Years ago, Kurt Kaiser was the 
BDFL-delegate for Idle.  He has been inactive for years, but his latest 
posts here and on pydev seem to say 'Idle's basic design is fine; don't 
change or complicate it'.  Guido seems to be more approving, in 
principle, of changes, but does not seem interested in the detailed 
discussions and reviews needed to turn vague ideas into reality.  I do 
not know how big a change I can make without having the work reverted 
and dumped.

4. The dead hand of the past.

4a 2.7.  When I wrote PEP 434 (Feb 2013), 2.7 maintenance was scheduled 
to end summer 2015 (next summer), and I anticipated that Idle 2.7 would 
be frozen at the same time.  I planned to aim major enhancements at 3.x 
after that.

At the Pycon a couple of months later, 2.7 maintenance was extended 5 
years.  Around the same Nick Coughlin requested that new tests be 
backported to 2.7. I am currently unsure how to handle Idle on 2.7 in 
the future.

4b idlelib.  idlelib is currently a living mockery of PEP 8.  For 
instance, there are 5 or 6 different module name styles instead of just 
one.  In the meanwhile, work on Idle would be easier if some files were 
split or combined and all names followed PEP 8.  Although PEP 434 
defines the idlelib API, including file names, as private, it was 
written after 2.7 and there may be some external uses other than by 
extensions.  The guaranteed API for extensions needs to be pinned down 
better.  There are also issues with code inside the modules.

(At the moment I also have the problem that my hg install is broken and 
the installer will not run on my system and I don't know yet how to fix 
the situation.)

---
 >> BTW, Did you see idlex? http://idlex.sourceforge.net/

I have.  There are already issues on the tracker to incorporate some 
idlex features into Idle.  The idlex author, Roger Serwy has commit 
privileges and committed some of his patches (mostly bugfixes), but 
after two months stopped to focus on his PhD studies.

---
 > I hold the view that most professional developers don't
> really use IDLE,

I think that is a fact, not a view.  Most professional developers use 
multiple languages whereas Idle is focused on Python.

For a Python-only programmer, 'professional' or not, it can potentially 
be *better*, in some ways, than multi-language tools.  Note that there 
are many Python users, from scientists to hardware designers, who fall 
in between 'beginner' and 'professional software developer'.

> so changing the design to emphasize an educational
> tool over an experienced developer tool would benefit more people
> than it would inconvenience.

The design is already intended to be focused on beginners, such as 
students in programming classes.  According to a survey reported by 
Jessica McKeller at PyConUK 2014, Python is the third most used language 
in undergradurate courses.  So I think the proper question is how to 
make Idle better for beginners.

Yesterday I had an idea for the following problem. Uncaught exceptions 
result in a traceback followed by the exception name and message, such 
as "ZeroDivisionError: division by zero".  That line is, I hope, fairly 
clear, but many, especially beginners especially, find some other 
messages confusing.

Idlelib already has right-click context menus.  A possible improvement 
to to add an 'Explanation' option when on the last line of a traceback. 
  Selecting this would pop up a box with information about the 
exception, and possible the specific message, including possible fixes.

I have implementation ideas that I omit here.  However, I would make the 
possibility of translating the popup messages to other languages part of 
the design.

An 'Explanation' choice could be used for other lines.
For "Traceback ...", give a short explanation of what a traceback is.
For ">>> ", "Enter a Python statement on one or more lines."
For blue output lines, "Output produced by running your code."
For "**RESTART**" lines, explain user subprocess & globals clearing.

> I have more concrete ideas on the wiki:
> https://github.com/asweigart/idle-reimagined/wiki

I will comment on specific ideas in further posts here.

-- 
Terry Jan Reedy



More information about the IDLE-dev mailing list