Что такое СПО

Публикуемая статья представляет собой стенограмму доклада «Что такое СПО», сделанного директором Института системного программирования РАН Виктором Петровичем Иванниковым на семинаре «Вычислительные технологии в естественных науках. Перспективные компьютерные системы: устройства, методы и концепции», который прошёл в марте 2011 года в Тарусе под эгидой Института космических исследований РАН.

Отдельные фрагменты этого текста удивительно актуальны сейчас в связи с импортозамещением ПО в России.

D-Russia.ru благодарит за возможность опубликовать работу Виктора Петровича Иванникова организаторов состоявшейся 1-2 декабря 2016 года первой научно-практической открытой конференции Института системного программирования РАН (по словам главы ИСП РАН Арутюна Аветисяна, конференция будет ежегодной).

Виктор Петрович скоропостижно скончался за три дня до конференции, которую должен был открыть.

Первая конференция ИСП РАН стала посвящением памяти академика Иванникова – докладчики отдали должное заслугам учёного и произнесли слова соболезнования его близким.

Виктор Петрович Иванников. (С) "Время Новостей", 2009
Виктор Петрович Иванников. (С) «Время Новостей» 2009

Прежде чем начать говорить о СПО, хотелось бы привести некоторые факты: как вообще возникли программное обеспечение (ПО), программная индустрия и как программа вдруг превратилась в продукт, в товар. Вроде бы это такая творческая область, где есть место фантазии, и вдруг такая прозаическая вещь как товар.

Дело в том, что программы, конечно, возникли тогда же, когда в 1940–1950-х гг. появились первые компьютеры, но индустрии программного обеспечения, как самостоятельной отрасли, не существовало. В Советском Союзе её вообще не было, т. е. всегда поставлялись компьютеры с программным обеспечением. Но, конечно, в научном сообществе накапливались огромные библиотеки, например, в CERN. И как-то незаметно эта индустрия возникла.

Конечно, существует всегда много разных интерпретаций того, как это произошло, но многие связывают появление программной индустрии со знаменитой системой 360/IBM. Многие помнят, что в СССР было такое политическое решение во многих отраслях микроэлектроники, в компьютерах и т. д., как копирование. И были линии ЕС ЭВМ — это как раз система 360.

Система 360 вышла в 1965–1967-х гг., и возникла очень сложная ситуация для всех других производителей вычислительной техники, таких как General Electric, Control Data Corporation и т. д., потому что было сделано приложение по управлению данными IMS, знаменитый монстр языков PL/1, очень много приложений. Остальные производители были поставлены в очень тяжелые конкурентные условия. IBM захватило около 75% рынка. В 1967 году Control Data Corporation обратилась в министерство юстиции США с запросом о нарушении IBM антитрестового законодательства, что грозило IBM расчленением на компании, как, например, произошло с American Telephone and Telegraph Company. Разбирательство министерства юстиции тянулось около двух лет, но уже в 1968 году в IBM возникла идея о разделе продукции, с тем, чтобы отдельно продавать аппаратуру и программы, т. е. программа становится товаром, и отдельно — услуги, связанные с сопровождением ПО.

IBM создала специальную Task Force — рабочую группу из 100 человек на full time, которая продумывала в течение года эту бизнес-модель, ценовую политику и т. д. В 1969 году IBM открыла архитектуру с системой 360, т. е. идея заключалась в том, что выпускается ряд машин разной производительности с почти одним и тем же ПО, и с совместимостью, хотя это не очень получилось. Фирма объявила о разделе продукции и тем самым на рынке появилась возможность независимым производителям разрабатывать программы.

Нужно сказать, что те, кто покупал технику IBM или арендовал ее, были не очень довольны, потому что суммарная стоимость возросла. Были установлены достаточно высокие планки на стоимость программы независимо от числа копий — одна или миллион, но, тем не менее, лицензия за каждую копию стоит достаточно дорого.

Именно так возникли такие монстры, как Microsoft, Oracle. Всё это производные от продуктов, которые первоначально были разработаны в IBM.

До этого было принято распространять программы с открытым кодом, например, в течение длительного времени выходил журнал «Алгоритмы», где масса программ была в открытых кодах. Это обычная практика для научного сообщества, Кнут (Дональд Кнут – автор трёхтомника «Искусство программирования». – ред.), например, написал TeX (текстовый редактор, «заточен» на научные тексты со сложными формулами. – ред.) открытым кодом. Закрытие кода создало определенные неудобства для научного и образовательного сообщества. Но появились разработки так называемого Free Software или Open Source полюса, т. е. с открытым кодом, например, FreeBSD (Unix, Berkley) и проект GNU (его начал Ричард Столман, основатель Free Software Foundation, он написал достаточно интересные и большие программы, вошедшие в этот проект, например, компилятор GCC, редактор EMACS), которые были особенно популярны в научной и студенческой среде. Возникла целая философия, связанная с открытым кодом.

Одновременно начали возникать некоторые юридические основания и документы, регламентирующие использование этого нового СПО. Возникли две основные правовые ветви: идущая от Berkley и от Ричарда Столмана. Первая ветвь имеет четыре степени свободы по отношению к коду:

  • можно его использовать;
  • распространять;
  • изучать;
  • модифицировать, что-то добавлять, изменять.

Ограничение второй ветви: если использовать взятый от сообщества свободный код и что-то туда добавлять, необходимо точно так же вернуть это сообществу. Это линия GNU General Public License (GPL). Другая линия, Berkley, говорит о том, что возможно внесение каких-то изменений, затем закрытие кода, распространение его только в «бинарниках» и взимание платы за лицензию.

В открытом коде лицензии бесплатны. Сейчас много разных вариантов: MIT‑лицензия, Apache-лицензия. Они немного отличаются, но есть два принципиальных момента — возможность превращения открытого кода в коммерческий продукт, проприетарный с закрытым кодом, либо невозможность этого. Когда возникают комбинации свободного софта, который выпущен по разного рода лицензиям, появляются юридические проблемы, связанные с тем, как их в дальнейшем использовать.

Расскажу о личном опыте с открытым софтом. В 1990 году я познакомился с Ричардом Столманом по электронной почте, которая в это время возникла, получил все вещи, которые были сделаны в GNU, — отладчик, компилятор и т. д. В то время я работал с Владимиром Андреевичем Мельниковым (конструктор советских ЭВМ, академик АН СССР. – ред.). Традиционно инженеры делали машины, а мы — программное обеспечение для них, системное ПО. Я с удивлением узнал, что на СПО можно сделать какую-то модель бизнеса.

В то время этим занималась только одна компания Sygnus, президентом которой был Майкл Тимман. С ним я встретился 1990 году на конференции в Стэнфорде. В ходе долгой беседы с использованием документации он пытался пояснить модель бизнеса. Компьютерных компаний в Калифорнии много, и иметь лабораторию, которая сопровождает или консультирует по GCC или отладчику, не имело смысла, потому что это дорого, поэтому компании заключали с Sygnus достаточно дешевые (по нынешним временам) контракты по 100 тысяч долларов. Они имели около 10-15 контрактов в год, около десяти молодых сотрудников — один ходил по конторам, другой заключал договоры, а все остальные были программисты. Потом Sygnus создал несколько подразделений в Европе, в Торонто. В них работало около 100 программистов.

Очень интересно, как позиционировали эти услуги. Сначала в розницу (сопровождение отдельной программы), потом потребовалось определить направленность компании, её специализацию. Сейчас очень часто повторяется термин «Стек программных продуктов», т. е. дается некоторое решение, некоторая цепочка SDK (Software Development Kit), можно откомпилировать, отлаживать, редактировать — всё это разные инструменты. Была еще система управления версиями — когда много человек работают и вносят много изменений — согласованное управление версиями. Потом эта компания была куплена очень крупной компанией Red Hat.

Рассмотрим соотношение разработчиков и прочего персонала в софтверных компаниях. В общей сложности в компании Red Hat около 2 тысяч сотрудников, из них разработчиков-программистов около 250. Это нормальное соотношение в софтверных компаниях, где 10% людей занимаются разработкой, а остальные — администрация и огромное подразделение маркетинга и продаж, которое занимается распространением ПО. Год тому назад на сайте Red Hat были опубликованы бухгалтерские отчеты. Бизнес заключался в продаже услуг по сопровождению, идея Майкла Тиммана, т. е. предлагают стек. Они предлагают Linux (GNU Linux), хотя товарный знак Linux’а зарегистрирован на персональное имя Линуса Торвальдса. Но в этот стек входит еще система управления базами данных, Postgres и MySQL, не говоря уже о наборе компиляторов GCC, десять разных языков, полтора десятка разных платформ, несколько сотен драйверов на все виды внешних устройств — это все идет под Linux — две базы данных, JBoss — система поддержки документооборота, виртуальная машина. Есть несколько градаций, плата за сопровождение от 1500 до 5000 дол. Все зависит оттого, как быстро вам отвечают, как быстро исправляют и т. д.

Это значит, что в группе из 250 человек есть эксперты по ядру Linux, по библиотекам Linux, GCC, Postgres и MySQL и т. д. Ядро Linux — это 10 миллионов строк, т. е. уровень этих экспертов очень высок. Ошибок в ПО на самом деле очень много, и, когда пользователь присылает обращение о каких-то неполадках, нужно искать и исправлять ошибки. Есть разработчики какой-то конкретной библиотеки, и изменения должны быть посланы туда. Если ошибка найдена в ядре Linux, то для включения исправлений в мейнстрим Linux нужно договориться, чтобы этот патч взял Линус Торвальдс. Но вначале нужно эти исправления выполнить, для чего и нужны эксперты, очень квалифицированные в каждой компоненте.

Есть еще один очень интересный источник доходов — Red Hat. Судя по всему, СПО развиваться без финансирования со стороны мощных корпораций, типа IBM, Intel, в принципе, не может. Сопровождением не удается компенсировать все затраты компании, особенно на разработку, создание чего-то нового.

Например, IBM потребовалось Real Time Linux, не жесткий Real Time (во всех крупных корпорациях, кроме Microsoft, площадка одна и та же — Linux, на мобильных, серверах, рабочих станциях, везде, где угодно), эту работу фирма IBM оплачивала RedHat.

Наш собственный опыт: проблема процессора Itanium — наличие очень большого числа регистров. Чтобы одна инструкция не ожидала другую, планируют код (планируют перестановки) — это называется scheduling. Это обычно происходит на линейных участках, т. е. там, где нет перехода, а поскольку очень много регистров и распределение идёт не только на линейном участке, но и захватывает эти переходы, то планирование и распределение регистров становится достаточно сложным. Используется подход спекулятивного распределения, т. е.оцениваются вероятности перехода. Это можно выполнить в динамике, пропуская какие-то тестовые примеры, но статика лучше, например, если у вас стоит «if x=0 then», очевидно, что по этому «then» вы никогда не пойдете, вероятность равна нулю. Такого рода эвристики дают возможность подсчитывать вероятности и в соответствии с ними распределять регистры. Эту работу финансировала Hewlett Packard, и патчи были приняты в мейнстрим, т. е. по существу HP оплачивало развитие GCC.

Что сейчас происходит? Как правило, университетские или академические сообщества создают тот или иной код, разного рода приложения, большая корпорация Sun (сейчас не существует, её купила Oracle) выпустила Open Office, на который уже принят наш российский стандарт. Microsoft его поддерживает. Это открытый код, который Sun поддерживает и разрабатывает.

Еще один пример — это среда для разработки Eclipse, которую разрабатывает IBM. Это открытый проект, в который стекается масса новых идей, потому что разработчики по контракту или по собственной инициативе привносят новое и расширяют эту среду, тем самым постоянно её развивая.

В мире сейчас очень сильно активизировалось движение открытого кода среди корпораций, и не последнюю роль здесь играет третья, новая модель бизнеса, так называемые «облачные вычисления», когда программа, в частности, есть сервис. Если человек платит за какую-то услугу, то ему всё равно, какая она: проприетарная или открытый код. У Google есть система Map Reduce для обработки распределённых данных, на которой можно подвешивать некоторые свои собственные функции, для того чтобы обрабатывать распределенные данные. Yahoo купила компанию Hadoop, которая разрабатывает открытый код Map Reduce. Более того, Yahoo сейчас объявила о том, что она открывает все свои продукты. В том числе, у них есть своя линия Elastic Cloude, т. е. в Amazon можно запрашивать неограниченное число виртуальных машин и на них проводить вычисления. Очень много открытых пакетов, связанных, например, с математическим моделированием.

В нашей стране ситуация сложная. У нас есть квалифицированные программисты, но ландшафт очень большой. Например, ABBYY или Kaspersky делают очень интересные вещи, «1С:Бухгалтерия» насытила внутренний рынок. Но приблизительно на 2-3 миллиарда мы аутсорсим в России западные компании, которые потом на 5 миллиардов нам продают свой софт. Например, эти прикладные пакеты стоят несколько миллионов долларов на лицензии в год, и повторить это не так просто, потому что, если код содержит 4 миллиона строк, а производительность труда хорошего программиста 15 тысяч строк, то возникает больше 200 человеко-лет.

Проблема заключается еще и в том, что должна быть команда экспертов. Нужно создать проект, а это очень сложно. Недавно вышло постановление правительства № 2299-р, подписанное Владимиром Владимировичем Путиным (ошибка: не постановление, а распоряжение — ред.), о тотальном переходе госучреждений и подведомственных им организаций на СПО. По существу, этим постановлением создан рынок программ в России, т. е. по крайней мере госучреждения и подведомственные им организации вынуждены будут использовать открытый код.

Готово ли сообщество программистов? Есть несколько компаний: Alt Linux, компании в Санкт-Петербурге, Рейман (Леонид Рейман – бывший министр IT и связи. – ред.) купил Mandriva, ещё один такой дистрибутив, но нет той экспертизы, которая существует в Rad Hat или в SUSE.

В заключение хочу сказать о проблемах с Open Source:

  • Качество. Например, число ошибок в MS Windows — 15 на 1000 строк кода. Это после того как все отлажено, но потом идет так называемый процесс тестирования и число ошибок снижается в 10 раз. Стоимость тестирования заложена в себестоимость продукта, который выпускает Microsoft, и составляет, по разным оценкам, от 50 до 70 %. Соотношение разработчиков и тестеровв Microsoft — 1:1,5. Это огромная работа. Интересно, что в Linux, в среднем, семь ошибок на 1000 строк кода.
  • Сопровождаемость. [Для эффективного сопровождения ПО у нас] должны быть эксперты высочайшего класса.

Об авторе: Виктор Петрович Иванников (1940-2016), д.ф.-м.н., профессор, член-корреспондент АН СССР, академик РАН, первый директор Института системного программирования РАН