Tuesday, September 25, 2007

Why Zope community use namespace packages ?

Zope project and the community in general use lots of namespaces
packages. Though, we have some non-namespace packages like
ZODB3,ZConfig etc. Zope community has created many namespaces
for packages like `zope`, `zope.app`, `zc`, `z3c`, `lovely` etc. Here
`zc` stands for Zope Corporation, `z3c` for Zope 3 Community and
lovely for Lovely Systems' packages.

Python is a language with namespace support at many levels.
Remember, the last line of Zen of Python reads like this: "Namespaces
are one honking great idea -- let's do more of those!"
Take it positively, don't interpret it more ;)

A namespace package will not have any method,class or any other
objects defined in that level. So a normal namespace package will be
only having an empty `__init__.py` file. Eggs and setuptools provides
some new advantages for the distribution of namespace packages. So,
normally a namespace package's `__init__.py` file will contain
something like this:

import pkg_resources
pkg_resources.declare_namespace('zope')

That's all you required to put in your namespace package's
`__init__.py` file. But you also will be required to add one more
keyword argument for `setup` function in your `setup.py` script like
this:

namespace_packages=['zope']

You can even have nested namespace packages, in that case you have to
add it like this:

namespace_packages=['zope', 'zope.app'],

Remember, Zen of Python also says: "Flat is better than nested." .
Even though Zope use `zope.app` nested namespace package, Zope
community discourage nested namespace packages. The `zope.app`
namespace may be consider as a mistake of Zope project.

The `zope` and `zope.app` were the first namespace packages used by
Zope. I still remember the appraisal I got from Jim Fulton after
implementing his proposal for making `zope.app` a pure namespace
package.

Here I will list some advantages of namespace packages. Feel free to
add/explain anything you found. :)


  1. Better grouping for projects/community/companies
  2. Better name for packages and don't worry about a name conflict
  3. Re-use package name in different namespaces
  4. Easy distribution as eggs

I think the last point requires bit explanation. Consider two
packages in same namespace, `zope.interface` and `zope.testbrowser`.
In Python, package name is tied to directory structure. So, in normal
distutils based distribution both `interface` and `testbrowser` should
be under `zope` directory. But setuptools and eggs allows you to
install both separately and still use both.

Let's save some names for new generation smart Python programmers !
Don't pollute top-level names, use namespace packages !!

Monday, September 17, 2007

zopeproject, a new way to getting started with Zope 3

Yesterday Philip announced zopeproject 0.4 . This is the easiest way to getting started with Zope 3. I have created a screencast here. I used virtualenv for installing zopeproject, and it was really cool.

Friday, September 14, 2007

BangPypers mailing list moved to python.org !

Today Anand B. Pillai (one of BangPypers list moderator and HarvestMan fame) with help from Jeff Rush moved BangPypers mailing list from Yahoo! groups to python.org. Thanks to Anand and Jeff Rush !

The initial motivation for this move was Brad Allen from Dallas Ft. Worth Pythoneers. He had a talk ("Python user groups unite!") at Bangalore Barcamp 4 in last july. He talked about Python advocacy and what Python user groups can do for this. He also gave lots of tips for running a successful user group from his experience at Dallas group. Thanks Brad for all this.

BTW, There is mailing list created for "Support and Mentoring of Usergroup Organizers (Current or Wannabe)". Also there is a Usergroup advocacy list.

Zope 3 for Djangoers

Today I found this blog in blogosphere : http://www.lorenzogil.com/blog/ ( I couldn't find name of blogger anywhere in that site)

The blogger has started writing some articles for Django programmers who want to use (or sitch to) Zope 3. So far there are three parts published . I think these articles will be useful for any Zope 3 programmers . Congratulations to the author !

BTW, In the first article the blogger mention that Python 2.5 cannot be used, but it's not true anymore. My student (Nikhil N from Kerala, India) has successfully ported Zope 3 to Python 2.5 as part of Google Summer of Code 2007. But Python 2.5 will not be officially supported until Zope 2 is also ported (This is a Zope Community policy, Yes ! we will not drop Zope 2 for anything, even for Python 3.x !!) . Zope Foundation had four GSoC projects and all of them are successfully completed. We will write more about this later.

Saturday, September 1, 2007

First python 3.0 try !

Congratulations to Guido and all other Python developers !

Today I came to office for some works, but when I looked at planet.python.org
I found many posts about Python 3.0 alpha1 release. Then I downloaded Python 3.0
from here: http://www.python.org/download/releases/3.0/

Here is my first "Hello World" program after compilation:


And here is the digg story (Digg it!): http://digg.com/programming/Python_3_0a1_Released

BTW, it would be really useful if "2to3" is available as egg.

Zope 3 has started discussing about Python 3 port, but it looks like no one is interested.

One of my favorite toolkit is PyGTK, and see they are really going to port it soon. But it will be only released after Python 3.0 final release.