2007-04-08

What Python projects I SHOULD be working on

My Python todo list is always huge. I am constantly coming up with grand ideas that I want to do. On occasion I actually get to work on them (e.g., the AST branch, restructuring exceptions), sometimes I just let them go because they are just not worth the power output (e.g., moving the documentation off of LaTeX).

But in general I try to prioritize my Python time since I only have so much time. As of right now, here is the prioritzed list:

  1. Move the tracker over to Roundup. [bumped priority; 2007-04-16] While I won't personally do the transition, I am involved and need to make sure it happens.
  2. Write PEP on fixing ``if __name__ == '__main__':..`` idiom. [added 2007-04-16] You can't execute a module in a package that uses relative imports thanks to the module's __name__ value being set to '__main__' (can't resolve the package depth for the imports). I want to write a PEP to propose a way to fix this.
  3. Write PEP on security changes. [added 2007-04-16] I need to try to get my security changes in PEP form and proposed by April 30 to be considered for Py3K.
  4. Edit PEP 352 to deprecate BaseException.message. Guido thinks this might be a record turn-around of releasing a feature (2.5) and then deprecating it (2.6). Glad I could be a part of it. =) Basically what has happened is making BaseException take only a single argument will break a ton of code and is a pain to get to work right at the C level. So BaseException.args is going to stay and 'message' goes. Need to make the PEP reflect this and make sure python-dev doesn't throw a fit.
  5. Backport various patches to the 2.5 branch. I got some patches in the trunk that should be backported to 2.5, but the branch is frozen while Anthony cuts 2.5.1 so I have to wait.
  6. Deprecate/remove BaseException.message. [added 2007-04-09] Since I changed PEP 352 I really should make it be true. =)
  7. Finish my security work. I need to get the bloody thing done! I am this close to being finished.
  8. Get key parts of my security work into the core. I want to remove the constructor for 'file' and 'code'. Everything else can easily be done by a user outside of the core code.
  9. Close all of my open issues. Have a handful that I should just deal with, the key ones being the Py3K ones if Guido does decide to stick to his goal of an alpha in June.
  10. Deprecate old platforms for 2.6. I want to get rid of AtheOS and Solaris 2.6 (and older). AtheOS is no longer a maintained OS, let alone the Python port. And the Solaris stuff is just plain old.
  11. Auto-generate PEP 0. The PEP index is maintained by hand. That has led to inconsistencies between what the PEP says and what the index claims. I have started work in the sandbox at creating PEP 0 from a Python script. Stalled on the work at the moment, though.
  12. Update PEP 302. While doing my import rewrite I discovered a couple of places where key information was just not stated. I need to go in an add the documentation.
  13. Graph control flow of import semantics. Another side-effect of rewriting import in pure Python was I became intimately familiar with how the whole thing works. I also realized how spread out the documentation is and under-specified it is. =) Because it has complex semantics I have decided to do a control flow graph that explains how import works (details in another blog post as I have already started this).
  14. Document importlib. The code is done. The bloody thing works (which still continues to amaze me =). But now I need to document it so people can use it. I just don't want to since the thing is highly modular and explaining the interactions is unintuitive without explaining the thought behind the design. And I just don't want to write a doc on how I view import should be considered as that seems a little pretentious. Plus I don't want to have to fight with people who don't like the design. But this needs to get done for a key reason ...
  15. Get importlib into the stdlib. The reason I have not packaged up importlib and put it up on the Cheeseshop is because I keep planning on getting importlib into the stdlib. But I can't do that until I get step 8 done. But once this one it is done, I get to do my next big project ...
  16. Make importlib the default (and only) import mechanism for Python. Yes, I want to ditch the C implemenation of import and use my pure Python version instead. I have to solve some bootstrapping issues. Hopefully I can also come up with a way to allow people to specify an alternative importer at startup before any other importing has begun (e.g., specify an NFS-friendly version before starting to import even site.py so as to minimize stat call costs), but this is a bonus thing that can come later.
  17. Cleanup import semantics. I hope that when people see the control flow graph for import they will be willing to listen to me on how I want to simplify things by making the semantics more explicit (e.g., no more value of None in sys.path_importer_cache meaning that the default import should be used as that would just be another importer on sys.path_hooks). PEP 328 (absolute imports) helps a lot (doing absolute name resolution the classic way is a mess), but that is just one step in the overall process.
Obviously I have a lot to do. =) This leaves out that I am trying to learn wxPython so I can write my todo list app. It also ignores that I still want to get my personal site up (have the page design in my head, but still playing with the HTML and CSS to get it looking right). And all of my other personal projects I have. Oh, and that thing called a life outside of computers to worry about. =)