Adding a Pip GUI to IDLE and idlelib (GSOC project)

Summary: There are two prospective Google Summer of Code (GSOC) students applying to work on writing a gui interface to the basic pip functions needed by beginners. I expect Google to accept their proposals. Before I commit to mentoring a student (sometime in April), I would like to be sure, by addressing any objections now, that I will be able to commit the code when ready (August or before). Long version: In February 2015, Raymond Hettinger opened tracker issue "IDLE to provide menu options for using PIP" https://bugs.python.org/issue23551#msg236906 The menu options would presumably open dialog boxes defined in a new module such as idlelib.pipgui. Raymond gave a list of 9 features he thought would be useful to pip beginners. Donald Stufft (pip maintainer) answered that he already wanted someone to write a pip gui, to be put somewhere, and that he would give advice on interfacing (which he has). I answered that I had also had a vague idea of a pip gui, and thought it should be a stand-alone window invoked by a single IDLE menu item, just as turtledemo can be now. Instead of multiple dialogs (for multiple IDLE menu items), there could be, for instance, multiple tabs in a ttk.Notebook. Some pages might implement more than 1 of the features on Raymond's list. Last September, I did some proof-of-concept experiments and changed the title to "IDLE to provide menu link to PIP gui". In January, when Terri Oda requested Core Python GSOC project ideas, I suggested the pip gui project. I believe Raymond's list can easily be programmed in the time alloted. I also volunteered to help mentor. Since then, two students have submitted competent prototypes (on the tracker issue above) that show that they can write a basic tkinter app and revise in response to reviews. My current plan is to add idlelib/pipgui.py (or perhaps pip.py) to 3.5 and 3.6. The file will be structured so that it can either be run as a separate process ('python -m idlelib.pipgui' either at a console or in a subprocess call) or imported into a running process. IDLE would currently use a subprocess call, but if IDLE is restructured into a single-window, multi-tab application, it might switch to using an import. I would document the new IDLE menu entry in the current IDLE page. Separately from the pip gui project, I plan, at some point, to add a new 'idlelib' section that documents public entry points to generally useful idlelib components. If I do that before next August, I would add an entry for pipgui (which would say that details of the GUI are subject to change). Possible objections: 1. One might argue that if pipgui is written so as to not depend on IDLE, then it, like turtledemo, should be located elsewhere, possibly in Tools/scrips. I would answer that managing packages, unlike running turtle demos, *is* an IDE function. 2. One might argue that adding a new module with a public entry point, in a maintenance release, somehow abuses the license granted by PEP434, in a way that declaring a public interface in an existing module would not. If this is sustained, I could not document the new module for 3.5. Thoughts? -- Terry Jan Reedy

On 03/26/2016 11:13 PM, Terry Reedy wrote:
Summary: There are two prospective Google Summer of Code (GSOC) students applying to work on writing a gui interface to the basic pip functions needed by beginners. I expect Google to accept their proposals. Before I commit to mentoring a student (sometime in April), I would like to be sure, by addressing any objections now, that I will be able to commit the code when ready (August or before).
Thoughts?
I think it's a great idea, and have no objections. `pip` is now included by default, yes? In those cases where it isn't, IDLE could let the user know they need to install it. -- ~Ethan~

On 3/28/2016 12:50 PM, Ethan Furman wrote:
On 03/26/2016 11:13 PM, Terry Reedy wrote:
Summary: There are two prospective Google Summer of Code (GSOC) students applying to work on writing a gui interface to the basic pip functions needed by beginners. I expect Google to accept their proposals. Before I commit to mentoring a student (sometime in April), I would like to be sure, by addressing any objections now, that I will be able to commit the code when ready (August or before).
Thoughts?
I think it's a great idea, and have no objections. `pip` is now included by default, yes?
The stdlib includes the ensurepip package. Our Windows and, I believe, OSX installers run ensurepip.__init__._main.
In those cases where it isn't, IDLE could let the user know they need to install it.
"Ensure pip / Upgrade pip" is the first feature on Raymond's list. -- Terry Jan Reedy

On 27 March 2016 at 16:13, Terry Reedy <tjreedy@udel.edu> wrote:
Thoughts?
+1 from me - being able to teach package installation without teaching the command line first has been an oft-requested capability for a long time. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia
participants (3)
-
Ethan Furman
-
Nick Coghlan
-
Terry Reedy