* use of reserved keywords (id): should we allow this ?

  pa: I prefer it that way (more readable, easier to write), although I know it
      is discourages. In that case, I think it is benign since parameters named
      id are very unlikely to be callable, so the risk of an undetected clash
      is very limited.

  oa: ok for named parameters, but you also use it as variables (for
      instance dir), which is a Bad Thing(TM)

* some standard metadata (dc_description, dc_author,etc) should return '' if not set,
  not raise an exception, or always be initialized.

  pa: added in TODO

* how to get owner/root package from element ? -> _owner, hidden ?

  pa: actually, Element has a read-only property "owner"

* autoproperties: define docstrings ? Cf a.content.model? in ipython

* donnes non cohrentes (end < begin)

* readable id generation...

* advene2: implement text search on content

* Replace .bzp by .oda (OpenDocument Advene) or .aod (Advene Open Document)

* Copy iter_*.__doc__ to corresponding filter method

--

* frame-of-reference: verbose and not easy to manipulate. Better: <media origin="0" unit="ms" ...>

-> ok

* p.annotations should default to p.all.annotations. p.own and p.all
  should be used to ensure there is no ambiguity, but they are more verbose

-> I don't like it, but ok

* Maybe all iterators (relations, annotations, groups...) should have
  an appropriate __str__ method, to make it easier to interact/explore
  them. Else we have to constantly use list(p.annotations)

* Iterators should implement __len__ (e.g. len(p.all.annotations) ). I
  see it is done in List, but not Group. Pb is that it is common to do
  len(p.annotations) -> we have then to do len(list(p.annotations))

* Should (re)introduce annotation.type/relation.type -> builtin

* Shouldn't p.uri be initialized at p.url by default ?

* Should add docstrings everywhere (esp. properties (p.meta...) [which
  should be inferred from the getter's docstring ?], etc)

* Docstrings: use epydoc format (@param name: ...., @type name: ...,
  @return: foo... )?

* Docstrings: first line (just after """, so no """\n) should hold a
  concise description on 1 line, and finish with '.'. It is used by
  some tools.

* Suggestion: reuse TypedString / TypedUnicode (or equivalent) from
  the current model, to return string contents with associated
  mimetype

* package.py, l. 135: comments about 'hook function': a more generic interaction
 framework than a simple hook function may be necessary in fact, since
 there may be multiple needs for such interaction. It will maybe rely
 on defined hooks (static or dynamic), but it should be generic IMHO

* package save/save_as: inconsistent behaviour (erase forced for save,
  erase checked for save_as) -> decide for one

* there should be an explanation with examples somewhere of
    id-ref vs. id
    ADVENE_TYPE

* Content: deprecated content.XXX in favor of content_XXX ? Not sure
  if it is a good idea, I have a bad feeling here.

* Content: is the empty_content special case for relations necessary ?
  Or could be made more generic (e.g. for annotations)

* Content: think about the equivalent of the current .parse method,
  which returns a parsed representation of the content.

* Content: si j'interprete bien
        if path.exists(filename):
            file.__init__ (self, filename, "r+")
        else:
            file.__init__ (self, filename, "w+")

si le fichier existe dj, je ne peux qu'ajouter  la fin. COmment je
fais pour craser alors ? En fait, on ne peut pas vraiment savoir avec
quel mode l'ouvrir avant d'avoir l'opration correspondante
(get_content_data / set_content_data)

The handling of missing elements:
    * list.iter_items: yield idref for missing elements: dangerous ? Maybe better yield None ?
    
    * relations.__iter__: yet another behaviour (raise exception). To unify also (+ iter_members)
    
    * tag.iter_elements: 2 possible behaviours for missing elements (through yield_idrefs param)

-- 

* Implement __in__, __cmp__, etc for annotation (if pos in annotation:... )

* package.get_by_uri ?? Or have p.get also handle URIs (split fragment and check base URI)

* annotation a: how to get a.relations ? a.incomingRelations, a.outgoingRelations...

* typedRelatedIn/Out, incomingRelations/outgoingRelations

* annotationTypes/relationTypes in TALES expressions becomes annotation_types/relation_types ?

* package.get(id) -> wrapper to have package/get/id in TALES
