воскресенье, 6 декабря 2009 г.

Инноватор ли Microsoft?

David A. Wheeler
26 марта 2001 c небольшими изменениями на 11 сентября 2006

Введение
Джим Оллчин, (бывший исполнительный директор MS – прим. перев.) пытается убедить правительство США, что программное обеспечение (ПО) с открытыми исходными кодами (или, по крайней мере, Общественная публичная лицензия – General Public License) это угроза для США и интеллектуальной собственности. При этом одним из его аргументов служит утверждение, что ПО с открытым исходным кодом представляет собой угрозу для инноваций. В своих последних “судебных разбирательствах”, Microsoft также использует аргумент “инноваций” в качестве оправдания для своих собственных (хорошо известных и признанных судом незаконными) методов ведения бизнеса.
Однако после изучения приводимых ими доказательств, я сделал вывод, что Microsoft в реальности НЕ является инноватором, поэтому ее претензии на отмену решений суда, потому что “они инноваторы” явно не обоснованны. Суд определил, что методы ведения бизнеса Microsoft незаконны: популярность ее продуктов вызвана отнюдь не инновациями, а тем, что она “подсаживает” клиентов на свой продукт (ведь без клиентов не будет прибыли) [*]. Однако это не делает из Microsoft новатора, по крайней мере, в области IT-технологий. Нет ничего плохого в том, что какая-то компания не является новатором. Но для отмены судебных решений о наказании за незаконную деятельность и накладывании новых ограничений на конкурентов через суд (как они это любят делать – прим. перев.), должны быть серьезные доказательства наличия инноваций.
Ниже я приведу доказательства того, что:

  1. Ни одна из ключевых инноваций программного обеспечения не является собственной разработкой компании Microsoft;
  2. Все важные продукты Microsoft в основном представляют собой копии существовавших ранее продуктов, и
  3. Существующие ключевые технологии Microsoft также не являются инновационными.

Microsoft не является новатором, и поэтому она не должна использовать термин “инновации” ни для защиты собственных интересов, ни в качестве аргумента для убеждения других в том, что ПО с открытым исходным кодом (ОSS) представляет собой угрозу для процесса создания инноваций (поскольку для подтверждения этого нет никаких серьезных доказательств).
Но для начала мы должны определить термин “инновация”. “Инновацией” не является простое комбинирование нескольких функций в одном продукте – это описывается термином “интеграция” и не требует каких-либо “инноваций”, а только серьезного объема работы. В частности, если компания интегрирует функции в один продукт для того, чтобы препятствовать своим клиентам использовать конкурирующие продукты (хорошо известная практика Microsoft) – то это “хищничество”, а не инновации.
“Инновация” – это не конечный продукт, хотя некий продукт может реализовать или иметь в своем составе какие-то инновации. Новая реализация какого-то продукта, созданная для того, чтобы, например, сделать то же самое, но на другом компьютере (системе, архитектуре), также не является инновацией. Инновация – это новая идея. И в данном контексте, имеется в виду что это новая идея в технологиях ПО.

Microsoft никогда не являлась разработчиком своего основного программного обеспечения

Ну что ж, давайте попробуем определить понятие “наиболее важные (ключевые) технические нововведения в области программного обеспечения” и увидеть, автором каких из них является Microsoft. Несколько лет назад я заинтересовался темой того, “что являлось наиболее важными инновациями в программном обеспечении”, и поэтому составил собственный список различных событий, имеющих отношение к компьютерному миру. Я использовал множество различных источников, чтобы не упустить ничего важного. Например, я использовал информацию из архива истории компьютеров IEEE (IEEE - институт инженеров электрики и электроники – прим. перев.), виртуальный музей вычислительной техники и интернет-хронологию Гоббса. Я не обнаружил существования общепринятого списка наиболее важных инноваций в программном обеспечении, поэтому возможно, что это самый точный список. Понятно, что до 1975 года у Microsoft не могло быть никаких инноваций, так как они тогда только появились, но я хотел создать список ключевых инновационных технологий в ПО вообще, потому что так нагляднее можно увидеть, что именно они собой представляют. Таким образом становится очевидно, что то, что некоторые принимают за инновации Microsoft, на самом деле существовало задолго до ее появления.
Мои результаты (список основных инноваций в программном обеспечении), приведены здесь (чуть позже постараюсь осилить перевод и его – прим. перев.). Список интересен тем, что он включает в себя графический пользовательский интерфейс, текстовые процессоры и многое другое, что мы принимаем сегодня как должное. Ничего из приведенного там не было создано Microsoft. Проще говоря, нет никаких доказательств того, что Microsoft когда-либо создавала какие-либо важные инновации в ПО.
Некоторые из приведенных инноваций являются необходимыми для создания продуктов, однако этот уровень достигается каждым программистом, разрабатывающим какой-либо продукт (независимо от того, создаются проприетарные продукты или свободное/открытое ПО). И, наоборот, некоторые из приведенных инноваций (например, TCP/IP и World Wide Web) первоначально были реализованы и распространялись как свободное/открытое ПО. Если вы хотите увидеть реальные инновации, то свободное/открытое ПО имеет лучший послужной список по количеству инноваций, чем программное обеспечение Microsoft.

Продукты Microsoft не инновационны

Ниже я привел то, что я понимаю как ключевые продукты Microsoft, и обнаружил, что ни один из них не является принципиально инновационным, либо это просто новая реализация уже существующих продуктов:

  1. Бейсик/BASIC: Microsoft появилась в 1975 году, но сам BASIC был изобретен еще в 1964 году, да и то был лишь еще одним из многих языков программирования.
  2. В 1981 г Microsoft выпустила MS-DOS. Данное название было просто новым именем данным Microsoft для QDos – “Quick and Dirty Operating System” (”Операционная система сделанная кое-как, на скорую руку, дешево и сердито” – прим. перев.), написанной Тимом Патерсоном из Seattle Computer Products за 6 недель незадолго до этого. Патерсон написал QDos с помощью купленного им руководства для CP/M и использовал это руководство в качестве основы для своей собственной программы, поэтому QDos сама по себе не несла ничего нового. Когда IBM вела c Microsoft переговоры относительно нового ПО для своих новых PC, Microsoft быстро купила QDos и переименовала его, что и позволило ей заключить сделку с IBM (это отражено в фильме “Пираты Кремниевой долины” – прим. перев.). Естественно, такое понятие операционной системы устарело уже в 1981 году, так что MS-DOS никак не тянет на инновацию. Позже, Microsoft добавила в нее такие функции, как поддержка каталогов, но они так же не были чем-то новым и их идея была взята из другой операционной системы (UNIX).
  3. Windows: В 1983 году Microsoft объявила, что она будет заниматься разработкой Windows. Windows 1.0 была окончательно выпущена ноября 1985 года (с двухлетним опозданием), но она работала очень плохо и имела мало приложений. Так было пока не наступило 22 мая 1990 года, когда была выпущена Windows 3.0, которая получила всеобщую поддержку и признание. Интерфейс Windows сильно напоминал интерфейс Apple Macintosh, который, в свою очередь, напоминал интерфейс Xerox PARC, который напоминал оригинальное изобретение Дугласа Энгельбарта, сделанное еще в 1968 году (графический интерфейс с использованием мыши). Поскольку Windows являлась копией Macintosh, который также базировался на основе более ранних работ, Windows также не может считаться инновацией.
  4. Windows NT/2000: В Microsoft Windows NT наконец-то появилась (с ограничениями) возможность многопользовательской работы и возможность защиты памяти, что позволяло использовать ее для работы в качестве сервера, однако это было сделано с обильным заимствованием идей из уже существовавших VAX VMS и UNIX-систем (которые также не были первыми из подобных операционных систем).
  5. Word: Это просто еще один текстовый процессор, который Microsoft начала разрабатывать в 1983 году. Lexitron и Linolex разработали в 1972 году первую экран-ориентированную систему обработки текстов, уже существовавшую до Microsoft и точно также им предшествовал WordStar (1979).
  6. Excel: табличный процессор, реализованный существенно позже своих предшественников - VisiCalc (1978) и Lotus 1-2-3.
  7. Access: Еще одна система баз данных. Поскольку она является реляционной, основная инновация которую она она воплощает – это модель Кодда, которая была разработана в 1970 году (Microsoft тогда еще не существовало).
  8. Internet Explorer (IE): Internet Explorer не является оригинальной разработкой Microsoft, он всего лишь слегка расширенный в возможностях старый веб-браузер NCSA Mosaic. По меньшей мере, до версии 5.5. выбрав пункт меню “Неlp”-”About” можно было увидеть, он основан на NCSA Mosaic. NCSA Mosaic (TM) был разработан в Национальном центре суперкомпьютерных приложений (NCSA) при университете Иллинойса в Урбана-Шампейн (the University of Illinois at Urbana-Champaign). Распространялся данный браузер по лицензионному соглашению со Spyglass, Inc. Резюме – веб-браузеры (и IE) не являются инновацией Microsoft.
  9. Active Directory: это еще одна реализация Lightweight Directory Access Protocol (LDAP), который восходит к концу 80-х годов (задолго до “Active Directory”), с собственным вариантом MIT Kerberos от Microsoft. Резюме, тоже никаких серьезных инноваций.

Есть, конечно, и другие продукты Microsoft, просто я не могу их все перечислить в столь короткой статье. Но конечно, если Майкрософт когда-нибудь создаст какой-нибудь свой собственный инновационный продукт, то он мог бы стать одним из лучших в ряду себе подобных. Вместо этого, мы находим, что основные продукты Microsoft – это большей частью реализации ранее существовавших продуктов. Нет ничего плохого в попытке повторного воссоздания таких же продуктов чуть лучше и дешевле, чем кто либо другой, а пользователи даже рады видеть данный тип конкуренции! Однако, это НЕ инновации.

Технологии Microsoft не инновационные

Даже если весь продукт не является инновационным в целом, он может включать в себя (реализовывать) некоторые инновации. Ведь так или иначе разработчики все равно привносят какие-то инновации; грубо говоря, разработчик тщательно продумывает каждую деталь и наверняка привносит в работу свои идеи.
Итак, давайте взглянем на некоторые технологии от Microsoft, и посмотрим, есть ли у них какие-либо инновации, которые значительно лучше, чем у других компаний или в свободном/открытом ПО:

  1. COM/DCOM: Это основные механизмы коммуникации в Windows, которые позволяют программам находить, вызывать друг друга и поддерживать “компонентное программирование”. Однако, это просто еще одна реализация удаленного вызова процедур (RPC), конечно же не первая, и к тому же COM даже не может работать по сети!
  2. SMB/CIFS: Протокол Microsoft для обмена файлам и работы с принтерами. Но не они изобрели его. Дополнительные сведения об этом приведены здесь
  3. . NET: Часто бывает затруднительно прийти к соглашению об определении .NET, что затрудняет его анализ. Наилучшее описание я нашел здесь – Sean Wilson’s “.NET – So What? (в оригинале приведена нерабочая ссылка – прим. перев.) Здесь говорится: “.Net – общее название для огромного количества различных инициатив Microsoft, включающее в себя несколько направлений: средства разработки, серверы, клиенты, веб-служб XML. Приложения исполняются внутри “.NET Framework”, которая по существу является аналогом Java (поддержка загрузки кода с использованием промежуточного формата). .NET Framework целенаправленно разработан для поддержки нескольких языков программирования, что не являлось целью разработки Java. Но в то же время инфраструктура Java также поддерживает несколько языков и разные устаревшие технологии (такие, как UCSD p-код и ANDF), которые были специально разработаны для этого много лет назад. В начале своей статьи он говорит, что .NET не особенно инновационен по идеям… Многие из заложенных в него идей уже были реализованы ранее и прекрасно известны.
  4. Сводные таблицы: В 1986 году Пито Саласу пришла в голову идея сводных таблиц в электронных таблицах, когда он работал в Lotus Development Corporation Group. Они были продемонстрированы в 1987 году, и программы, в которых они были реализованы (ныне Lotus Improv) были выпущен в 1988 году. Lotus Improv был выпущен для Windows в 1993 году. В Excel сводных таблиц не было до релиза Excel 97. (Source: “Pivot Table Data Crunching” by Bill Jelen and Michael Alexander).

Некоторые могут заметить, что у Microsoft имеются некоторые патенты. К сожалению, патенты на программное обеспечение, не свидетельствуют об инновациях, а говорят только о том, что заявитель имеет достаточно денег, чтобы представить многие патентные заявки. База данных существующих работ в области программного обеспечения, используемая патентными экспертами, является неадекватной, причем экспертам в данной области, как правило, платят меньше, чем остальным (что снижает их количество и квалификацию), патентные эксперты имеют очень мало времени для рассмотрения каждой заявки на патент и большой соблазн просто принять заявку (с незначительными изменениями), чем отклонять запрос как некорректный. В результате, часто предоставляются патенты в области программного обеспечения на уже существующие или очевидные идеи. Действительно, США в 2007 году решение Верховного суда усилило внутренние правила проверки патентов на “очевидность”, потому что многие патенты были предоставлены на очевидные идеи, в результате чего действие таких патентов, вероятно, неосуществимо. Даже если вы и примете такую неправдоподобную идею о том, что патенты на программное обеспечение отражают инновации и захотите сравнить количество идей с разработчиками свободного/бесплатного ПО, то станет ясно, почему многие лидеры в области свободного ПО сильно озадачены вопросами применения патентов. Это наводит на мысль о том, что подсчет патентов из сообщества свободного ПО по-прежнему не позволит провести беспристрастное сравнение количества идей (потому что там не принято патентовать идеи и поэтому нельзя использовать патенты как сравнительный показатель количества идей – прим. перев.). Многие страны не позволяют патентовать идеи в ПО, но в США это возможно, а также там существует целый ряд организаций, которые противостоят идее патентов на ПО. Более подробную информацию о проблемах с патентами на программное обеспечение, можно посмотреть на сайте таких организаций, как League for Programming Freedom (Лига за свободу программирования).

Заключение

Я показал, что:

  1. Ни одна из существующих инноваций программного обеспечения не была предложена Microsoft,
  2. Ключевые продукты Microsoft – в основном копии существующих продуктов, и
  3. Ключевые технологии Microsoft не являются инновационными.

Microsoft всегда “висели на хвосте” у тех, кто является реальными инноваторами. Возможно, Microsoft имеет талант в мелочах, но нет абсолютно никаких доказательств того, что они более талантливы, чем какая-либо другая группа разработчиков.

Я не считаю плохой компанию, которая не является инновационной. В конце концов, цель Microsoft (или любой другой компании) – зарабатывание денег для своих акционеров, а не создание инноваций. Но утверждать, что вы инноватор, если вы им не являетесь – лицемерно. Оправдание незаконных действий во имя инноваций, когда этих инноваций не было — лицемерно вдвойне. И, если этот аргумент является центральным для убеждения правительства в том, что ему не следует поощрять свободное/открытое ПО, то простой анализ быстро приводит к выводу о его (аргумента) неправильности.

Только Microsoft, кажется, считает, что свободное/бесплатное ПО является основной проблемой для компьютерной индустрии. Множество ключевых нововведений пришли из сообщества свободного/бесплатного ПО, включая практически весь Интернет, поэтому очевидно, что такое ПО стимулирует инновации, а не наоборот. С другой стороны, свободное ПО получило в настоящее время широкое признание, и тому есть много причин. Например, многие крупные компании (такие как IBM, HP и Sun) осуществляют поддержку открытых проектов. Даже аналогичные Microsoft компании, продающие проприетарное программное обеспечение, такие как Oracle, находят способы, чтобы взаимодействовать со свободными проектами.

В этом контексте, заявление Оллчина:”меня волнует поддержка правительством ПО с открытым исходным кодом и я не думаю, что у нас есть достаточно грамотных политиков, чтобы понимать данную угрозу”, имеет скрытый подтекст.

Вместо этого создается ощущение, что Microsoft просто не хочет изменить свою бизнес-модель с учетом изменяющихся условий окружающей среды и желаний своих клиентов. Это слишком плохо, ведь ничто не мешает Microsoft изменить свой подход к ведению бизнеса. Ну что ж, многие ранее существовавшие монополии сделали ту же ошибку. Я не против Microsoft и я не против проприетарного программного обеспечения. Более того, я рад похвалить Microsoft или любую другую компанию, если она делает хорошие и правильные вещи. Однако, меня беспокоит, когда любая организация делает такие явно неправдоподобные заявления. И тем более неправильно, что Microsoft оправдывает свои незаконные действия, претендуя на инновации, которых у них никогда не было.

(c) Copyright by D. Wheeler
Перевод А. Чернышев



Источник: freeschool.altlinux.ru.

вторник, 1 декабря 2009 г.

Аналог reply-to из PF в IPFW

Нашел интересную статью с описанием работы межсетевого экрана IPFW. В частности, упомянута реализация действия, аналогичного reply-to из PF:
«
Тот факт, что на самом деле "перепрыгивание" выполняется на параметры действия, позволяет использовать это для интересных вещей. В частности, с использованием появившегося во FreeBSD 6.2 параметра tag на каждый пакет можно навешивать внутриядерный тег, что в применении со skipto позволяет сделать, к примеру, запоминание, с какого шлюза пришел входящий пакет на машине с каналами к двум разным провайдерам, и ответные пакеты отправлять в тот канал, откуда они пришли (допустим, у вашей машины только один IP-адрес, и сделать fwd на базе внешнего адреса не получится), т.е. реализовать аналог reply-to из PF:

ipfw add 100 skipto 300 tag 1 in recv $ext_if1 keep-state
ipfw add 200 skipto 300 tag 2 in recv $ext_if2 keep-state
ipfw add 300 allow { recv $ext_if1 or recv $ext_if2 } # входящие снаружи
ipfw add 400 allow in recv $int_if # разрешить ответы на внутреннем проходе
ipfw add 500 fwd $gw1 tagged 1 # остались ответы на внешнем интерфейсе,
ipfw add 600 fwd $gw2 tagged 2 # зарулим их куда надо
»