====
TODO
====

zope.publisher
--------------

- remove dependency from zope.publisher.
  
  - move interfaces and low level component like NotFound exception out of
    zope.publisher. This will probably never happen. But if so, make sure we
    can use the following component without zope.publiser:
    
    - traversal interfaces
    
    - request interfaces (for page adapters)
    
    - Redirect
    
    - NotFound
    
    - ???


locales
-------

- improve locales setup

  - apply locales if we apply a principal and not before. Because we don't need
    them before a principal get applied and most applications depend on
    principal or session based information if a locale get applied.
    Zope by default applies the locale very early before any session or
    principal is avilable. But this doesn't make sense because this will get
    changed later again based on session etc. Just skip this additional
    expensive locales lookup.

  - probably it's also a good idea to review the existing zope locales concept
    and make sure all locale data are cached in memory. I'm sure there is
    something we can improve since I got an error based on a missing value from
    z3c.form where the locales from a language selection was lookup the locales
    for the z3c.form default value ``missing`` ad this was ending in a missing
    file lookup for missing.xml. This looks like a non cached lookup? Or just
    not cached for unknown locales?

- support built-in locatization based on maxmind

  - merge our custom maxmind implementation into the request after we have an
    own request class. (lookup time < 2 milli second)
