Выбрать главу

Так оно и оказалось, потому что 1.9 была под менее открытой лицензией, в ней было обязательно иметь на сайте ссылку на Digital Creations. А в 2.0 было уже необязательно, просто рекомендовано. То есть исходники стали совершенно свободными, бери Zope, ставь его, используй и вперед - наслаждайся жизнью. :) Они тоже не сразу все открыли. Первоначально была открыта довольно большая часть Zope, но некоторые значительные компоненты, которые на самом деле в маленьких сайтах особо не нужны, а нужны только для крупных сайтов, долгое время не открывали. Например, компонент ZTable, для манипуляций с большими таблицами данных, компонент Zope Enterprise Option для кластеризации нескольких инсталляций Zope в один большой сайт. Через некоторое время ZTable, совсем перестали развивать, а Zope Enterprise Option был открыт, то есть теперь его также можно скачать, как все остальное, и использовать.

Сейчас почти не осталось каких-то закрытых частей. Все исходные тексты раздаются, а деньги они делают за счет создания сайтов или консультаций по своим продуктам. Сами же они говорят, что с тех пор, как они открыли Zope, их бизнес увеличился в 3 раза!

При переходе от версии 1.9 к 2.0 кроме лицензии мало что изменилось. Но в течении 2000 года пользователи и разработчики довольно быстро подхватил исходники Zope, стали их развивать, и версия за версией вышли 2.1 и 2.2. Произошли довольно значительные изменения, появился и новый язык шаблонов: если старый язык шаблонов у них больше похож на Apache SSI (типа <!--#var foo-->), то новый больше похож на XML (<dtml-var bar>) - он проще. В 2.3 сделан совсем большой шаг, появился виртуальный хостинг. Если раньше для виртуального хостинга надо было мучиться с Apache, ставить сложные модули - модуль mod_pcgi2 или FastCgi, то сейчас виртуальный хостинг можно сделать на чистом Zope.

С переходом Гвидо в Digital Creations возникает интересная тонкость - дело в том, что Zope добавил в Python интересный механизм. В Python существует дихотомия между типами данных и классами. От классов можно наследовать обычным способом, от типов наследовать нельзя, и это иногда раздражает. Допустим, нужен какой-то особенный класс-список, но от типа "список" наследоваться нельзя, поэтому приходится применять не очень удобный механизм делегирования.

А в Digital Creations тот самый Джим Фултон написал механизм ExtensionClass, который залезает глубоко в интерпретатор Python и позволяет от типов наследоваться. Не совсем обычным образом, правда, то есть это все еще не совсем наследование. Но это наполовину решение проблемы. С переходом Гвидо в Digital Creations этот механизм, наверное, будет доведен до ума, и дихотомия между типами и классами исчезнет совсем, и все объекты станут нормальными классами.