[Dev] ContentModel, Calendar, Contacts, etc. reorganization/flattening

Phillip J. Eby pje at telecommunity.com
Thu Jul 28 12:15:05 PDT 2005


At 10:36 AM 7/28/2005 -0700, Alec Flett wrote:
>Phillip J. Eby wrote:
>>One of the 0.6 developer platform goals is to flatten our Python package 
>>hierarchy a bit,
>
>This is really great - I've been looking forward to this kind of change 
>for a while. The only thing I see that I'd like changed slightly from your 
>list is this:
>>osaf.contentmodel.calendar.Calendar.*   -> osaf.pim.calendar.*
>>osaf.contentmodel.calendar.Recurrence.* -> osaf.pim.recurrence.*
>Recurrence is really part of the Calendar and the filename split is really 
>just to break apart the logic within the module. Ideally we'd have 
>osaf.pim.calendar.CalendarEventMixin, osaf.pim.calendar.RecurrenceRuleSet, 
>and so forth. Is there an obvious convention in python (like import * 
>from... inside of __init__.py) to allow this to happen while still letting 
>Calendar.py and Recurrence.py remain seperate files within the 
>osaf.pim.calendar module?

Note that what I was proposing is to rename calendar/Calendar.py to just 
calendar.py, and the same for recurrence.  I was under the impression, 
however, that recurrence was supposed to be able to be used for tasks as 
well at some point, so maybe I'm confused...?


>On a related note, why osaf.pim? why not just "chandler"? I'm guessing the 
>argument is that you could reuse these objects outside of chandler, which 
>seems nice.. though even the osaf prefix seems superfluous to me..

It's common practice in Python projects of this size that also expose a 
development platform or framework to use a namespace package to prefix 
package names, e.g. twisted.*, zope.*, peak.*.  The second level name then 
usually exposes major functional areas, and then the third level is 
preferably all modules, and no further packages except for "*.tests" packages.

The namespace prefix allows the use of rather general names, while 
lessening chances of collision with projects that want to reuse code from 
the platform.

In the long term I'd like to see package names like 'crypto' and 
'application' also get folded under the 'osaf' umbrella for this reason, 
but that needs to wait until our parcel management is no longer dependent 
upon the 'parcels/' directory system and we have good support for namespace 
packages.


>So on a related note, I'd like to propose some future renames after you're 
>done with this one
>(and maybe you've already thought about this)

A little bit.  I'm reluctant to take on too much at once, before the areas 
in question have "settled" enough to allow choosing good names.  I think 
osaf.contentmodel is a no-brainer, but a lot of other pacakges I don't feel 
nearly as certain about, and would like to give any renaming ideas some 
time to develop further.  We really don't want to thrash names, and I would 
hate to change a bunch of stuff only to discover a month later that we made 
a mistake and need to change it all again.  I've been thinking about the 
contentmodel->pim thing for like 4 or 5 months now and only in the last 
month or two have I been seriously proposing it.  So, lets give these other 
ideas a little time to mature, and we should get some experience about what 
we actually like/dislike from doing the contentmodel and using the result.



More information about the Dev mailing list