Драматическая история Python и Zope
Шрифт:
Долгое время все, что они делали, развивалось у них внутри. Они занимались коммерцией, делали сайты, продавали свою коммерческую программу, давали по ней консультации, и за счет этого делали деньги. В основном ориентировались на новостные сайты, так сложилось. Потом они решили, что пора и остальную
Так оно и оказалось, потому что 1.9 была под менее открытой лицензией, в ней было обязательно иметь на сайте ссылку на Digital Creations. А в 2.0 было уже необязательно, просто рекомендовано. То есть исходники стали совершенно свободными, бери Zope, ставь его, используй и вперед - наслаждайся жизнью. :) Они тоже не сразу все открыли. Первоначально была открыта довольно большая часть Zope, но некоторые значительные компоненты, которые на самом деле в маленьких сайтах особо не нужны, а нужны только для крупных сайтов, долгое время не открывали. Например, компонент ZTable, для манипуляций с большими таблицами данных, компонент Zope Enterprise Option для кластеризации нескольких инсталляций Zope в один большой сайт. Через некоторое время ZTable, совсем перестали развивать, а Zope Enterprise Option был открыт, то есть теперь его также можно скачать, как все остальное, и использовать.
Сейчас почти не осталось каких-то закрытых частей. Все исходные тексты раздаются, а деньги они делают за счет создания сайтов или консультаций по своим продуктам. Сами же они говорят, что с тех пор, как они открыли Zope, их бизнес увеличился в 3 раза!
При переходе от версии 1.9 к 2.0
С переходом Гвидо в Digital Creations возникает интересная тонкость - дело в том, что Zope добавил в Python интересный механизм. В Python существует дихотомия между типами данных и классами. От классов можно наследовать обычным способом, от типов наследовать нельзя, и это иногда раздражает. Допустим, нужен какой-то особенный класс-список, но от типа "список" наследоваться нельзя, поэтому приходится применять не очень удобный механизм делегирования.
А в Digital Creations тот самый Джим Фултон написал механизм ExtensionClass, который залезает глубоко в интерпретатор Python и позволяет от типов наследоваться. Не совсем обычным образом, правда, то есть это все еще не совсем наследование. Но это наполовину решение проблемы. С переходом Гвидо в Digital Creations этот механизм, наверное, будет доведен до ума, и дихотомия между типами и классами исчезнет совсем, и все объекты станут нормальными классами.