Library Exercises

  1. Why are there multiple versions of some packages? Look at some places where there are two modules which clearly do the same or almost the same things. Examples include time and datetime, urllib and urllib2, pickle and cPickle, StringIO and cStringIO, subprocess and popen2, getopt and optparse. Why allow this duplication? Why not pick a "best" module and discard the others?

  2. Is it better to build an application around the library or simply design the application and ignore the library? Assuming that we have some clear, detailed requirements, what is the benefit of time spent searching through the library? What if most library modules are a near-miss? Should we alter our design to leverage the library, or just write the program without considering the library?

  3. Which library modules are deprecated or disabled? Why are these still documented in the library?