Let's try to summarize answers about top-level namespace with use cases
and examples... I hope I understood them well...

About "yes" or "no" meaning:

yes
  It fits the (work-in-progress) convention. You would
  recommend it.

no
  You wouldn't recommend the naming pattern for *new*
  projects (we can't require existing projects to be renamed).

=====

Project is standalone (doesn't mean "have no dependencies"),
released on PyPI:

* only one-level name is recommended, no namespace package
* yes: sphinx, flask, lettuce
* no: zc.rst2 (brand name is superfluous)

=====

Project is made of several subprojects which are not
standalone, released on PyPI:

* a namespace package is recommended

* the top-level namespace is functional: projects in
  namespace make a bigger project. They are not designed
  to work as standalone components.

* yes: ? Have you examples of such a use case?

* no: plone.app.* (too many levels)

=====

Project is related to another one (i.e. kind of contrib),
released on PyPI:

* note: there is a difference between "related to another
  project" and "depends on another project". As an example,
  Fabric depends on ssh, but is not a contrib of it.

* choice depends on conventions of related project

* if there is no specific convention, a namespace package
  is recommended

* the top-level namespace is functional: projects in
  namespace have a common characteristic, they are specific
  to something, usually another project.

* yes: collective.castle

* yes because of explicit specific convention: sphinxcontrib-feed,
  Flask-Admin

* no: castle, feed, admin, Plone.recipe.command (not specific
  to Plone, in fact related to zc.buildout)

* Use of additional metadata is highly recommended (keywords,
  topic::framework)

=====

Project is standalone, but really experimental (i.e.
name could change, not sure to publish version 0.2),
want to make it public:

* I want to share code, but I am really not sure it will
  live long. I don't want to "block" a name slot.

* use a one-level name, as any standalone public project

* publish it on gitorious/github/bitbucket accounts

* don't register it with PyPI until it becomes a bit
  mature? i.e. start with code repositories only?

* not valuable enough to be mentioned in PEP 423?
  Maybe not in the scope of PEP 423. I mean it is more
  about "what kind of projects we register with PyPI"
  than "which name to choose".

=====

Project is standalone, but specific to my own usage, i.e.
I use it as personal software. It's not private because
I want to share the code (maybe someone will like it).

* use an one-level name, as any standalone public project

* publish it on code repositories.

* register it with PyPI? if only ready to maintain and
  document?

* not valuable enough to be mentioned in PEP 423?
  Maybe not in the scope of PEP 423. I mean it is more
  about "what kind of projects we register with PyPI"
  than "which name to choose".

=====

.. note::

   conventions for private projects are provided as
   informational guidelines.


Project is private, made of only one component:

* a namespace package is recommended (not sure for this
  rule, could be an one-level project name)

* the top-level name can be any unique arbitrary value.
  The company name could be a good choice.

* the top-level namespace is not functional, but represents
  an ownership: the project is specific to the customer/product.
  It contains closed-source parts.

* yes: mycustomer.website

* no: mycustomerwebsite, website

=====

Project is private, made of several components:

* a namespace package is recommended

* the top-level name can be any unique arbitrary value.
  The company name could be a good choice.

* the top-level namespace is not functional, but represents a
  common background: as an example, all components are specific
  to the customer/product.

* yes: mywebsite.blog, mywebsite.auth, mywebsite.calendar (where
  these components could be standalone WSGI applications, but
  contain specific stuff related to the customer/product).

* no: blog, auth, calendar


=====

Do you prefer the examples above to the "top-level namespace relates to code 
ownership" rule?
Do you see other use cases?


Benoit

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to