[stdlib-sig] Evolving the Standard Library

Michael Foord michael at voidspace.org.uk
Wed Sep 16 15:25:40 CEST 2009


Armin Ronacher wrote:
> Hi everybody,
>
> I'm known for my dislike of the standard libray.  In the past I wrote
> some blog posts about this topic into my personal blog already.  However
> as many people pointed out earlier, a blog is not the place for this
> kind of criticism.  Not only that, also just ranting about a topic does
> not help at all.  Yesterday I subscribed to the stdlib-sig and
> immediately tons of mails ended up in my inbox.  A quick look at the
> mail archives confirms what I was afraid of: this list is really high
> traffic.  I tried to read up some of the discussions I missed but it's
> nearly impossible to do that.
>
>   

And so you repeat a lot of points that have been discussed already in 
the last few days (the only few days in recent years that this list has 
been high traffic).

> [snip...]
>
> Also we have many modules in the standard library that in my opinion
> just do not belong there.  From my point of view, stuff like XML does
> not belong into the standard library.  But it appears that not many
> people agree with me on this one.  

You're right, a lot of people disagree with you. :-)

> But even if everybody would,
> backwards compatibility would still be a good reason to keep these
> modules around.
>
> Besides modules that do not work in every environment or modules that
> were probably a mistake to include, we also have modules in the standard
> library with a hideous implementation or no reusability, forcing people
> to reinvent what's already there.  For a long time, `urllib` was a
> module I would have listed there, but as of Python 2.6, the module
> largely improved by exposing the underlaying socket more which finally
> alllows us to set the timeout in a reliable way.  But there are still a
> ton of modules in the library that cause troubles for people.  `dis` is
> one of them.  The implementation of dis prints to stdout no matter what
> you do.  Of course you can replace sys.stdout with something else for a
> brief moment, but again: this is not something we should aim for or
> advertise because it breaks for many people.  

That particular problem sounds easy to fix.

> `Cookie` is a module
> people monkey patched for a while (badly) to support the http only flag.
>  Not only does the code expose a weird API, it is also nearly impossible
> to extend and even ships cookie subclasses that use unsigned pickles and
> trust the client.  `cgi` has again, shared state on the global namespace
> that alters the behavior of the lirbary.  Of course it was never
> intended to be used by anything but `cgi`, but that leaves people
> reimplementing it or abusing it.
>
>   

cgi and Cookie would both be *excellent* targets for refactoring / 
improving. This is *hugely* preferable to complaining about them. ;-)

I *hope* that Python-dev would be willing to accept some measure of 
backwards incompatibility in the name of improving what few people will 
disagree are potentially useful but horribly outdated APIs.

> So when the discussion started replacing `optparse` with `argparse`,
> because the former is unmaintained I became alerted.  My wishes have
> always been the standard library to be a reliable fallback to be used if
> everything else fails.  Something I can rely on which will not change,
> except for maybe some additions or modules moved to different locations.
> As Python developers we became used to moving import locations a lot.
> It it's `cPickle` or any of the element tree implementations, you name it.
>   

For many things that is an admirable goal. But as you point out, and we 
have already discussed at great length, there is a problem with what to 
do with modules that can't be evolved to meet new requirements because 
of original API design.


> I wonder if the solution to this problem wouldn't be a largely improved
> packaging system and some sort of standardized reviewing process for the
> standard library.  Currently there is not even an accepted style for
> modules ending up in the Python distribution. 

Yes there is - the standard procedure for getting new mdoules into the 
standard library is via the PEP process.

>  That, and a group of
> people, dedicated to standard library refactoring.  The majority of
> libraries in the standard library are small and easy to understand, I'm
> sure they are perfectly suited for students on projects like GSOC or
> GHOP to work on.  They could even be used as some sort of "playground"
> for new Python developers.
>   

It would be a great project for GHOP *if* we have some experienced 
developers, like yourself, dedicated to working out what the things that 
need fixing are.

I think that one of the best ways to achieve the changes you discuss 
below may well be 'one-step-at-a-time' rather than a huge project.

Michael

> Ubuntu recently started the "100 paper cuts" project.  There people work
> on tiny little patches to improve the system, rather to replace
> components.  Even though a large place of the standard library appears
> to be broken by design they could still be redesigned on the small
> scale, without breaking backwards compatibility.
>
> Of course libraries like `locale` and `logging` are hard to change, but
> it would still be possible.  For `locale` it would probably a useful
> idea to go into the direction of datetime, where the timezone
> information is left to a 3rd party library.  `locale` could provide some
> hooks for libraries like `babel` to fill the gap.  On the other hand
> `Cookie` would be very easy to fix by moving the parsing code into a
> separate function and refactoring the cookie objects.
>
> We could probably also start a poll out there with well-selected
> questions of what users think about parts of the library.  And for that
> poll it would make a lot of sense to not just ask the questions and
> evaluating the results, but also track the area the user is coming from
> (small size company, open / closed source, web development etc.).
> Because we all are biased and seeing results grouped by some of these
> factoids could be enlightening.  That said, it could tell us that I'm
> completely wrong with my ideas of how the state of the standard library.
>
> But how realistic is it to refactor the standard library?  I don't know.
> For a long time people were pretty sure Python will not get any faster
> and yet Unleaden Swallow is doing some really amazing progress.
>
> If we want to push Python foward into new areas, and the web is one of
> them, it is necessary to jump into the cold water and start things.
>
> Any maybe we should have some elected task forces for things like the
> standard library.  Judging from the mailinglist it appears that far too
> many people are discussing *every detail* of it.  It is a good idea to
> ask as many people as possible, but I am not sure if the mailinglist is
> the way to do that.  It is currently very hard to see the direction in
> which development is heading.
>
>
> Please think of this email just as a suggestion.  I don't have too much
> trust into myself to follow the discussions on this list camely enough
> to become a real part of a solution, but I would love to help shifting
> the development into a better direction, no matter which one it will be.
>
>
> Regards,
> Armin
> _______________________________________________
> stdlib-sig mailing list
> stdlib-sig at python.org
> http://mail.python.org/mailman/listinfo/stdlib-sig
>   


-- 
http://www.ironpythoninaction.com/



More information about the stdlib-sig mailing list