Zope

Zope

История возникновения фирмы Digital Creations и Zope. Digital Creations подхватила Python довольно рано, в году примерно 1994. И стали они заниматься разработкой коммерческих интернет-решений . Обычная маленькая фирма, ничего интересного из себя не представляющая.

В 1996 году к фирме присоединился Джим Фултон, ничего не знающий о разработке интернет-решений, но довольно хорошо разбирающийся в Питоне, в тонкостях реализации, и вообще - человек, хорошо понимающий языки программирования. Твердый сторонник объектно-ориентированного подхода, он хорошо его понимает и хорошо умеет его использовать.

Одно из первых дел, с которого он начал - ему предложили где-то прочитать лекцию по протоколу CGI, а он ничего о CGI не знал, и, пока они летели в самолете, Пол Эверит, начальник (CEO) Digital Creations, прочел ему лекцию о CGI. С этой лекцией в голове Джим Фултон поехал на конференцию, где он должен был эту лекцию прочесть, успешно ее прочел, а после лекции подошел к Эвериту и к другим членам Digital Creations, ужаснулся и сказал: "это что ж за протокол такой!" Его поразил протокол CGI своей чрезмерной простотой. Хотя надо сказать, что во многом именно благодаря этой простоте WEB стал тем, что мы имеем сейчас.

Но к тому времени Фултон решил, что это стыдно - иметь такие протоколы, и надо создавать что-то объектно-ориентированное. Вот тут-то им и был задуман первый брокер объектных запросов, который расшифровывал URL и не просто тупо следовал каким-то простым заданным правилам, но честно в дереве объектов искал нужный объект и вызывал его на выполнение. И Digital Creations создала два продукта - один коммерческий, который они использовали внутри, а часть этого продукта - назывался он BoBo Object Publisher - они сделали полностью открытым.

Долгое время все, что они делали, развивалось у них внутри. Они занимались коммерцией, делали сайты, продавали свою коммерческую программу, давали по ней консультации, и за счет этого делали деньги. В основном ориентировались на новостные сайты, так сложилось. Потом они решили, что пора и остальную часть коммерческого софта, который у них есть, открывать, и в августе 1999 года они опубликовали то, что стало Zope версии 1.9. Они так же объявили, что на подходе версия 2.0, которая будет совсем открыта.

Так оно и оказалось, потому что 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 этот механизм, наверное, будет доведен до ума, и дихотомия между типами и классами исчезнет совсем, и все объекты станут нормальными классами.