НовостиОбзорыСобытияIT@WorkРеклама
Государство и ИТ:

Блог

ПО для госучреждений по госзаказу должно быть свободным

В этой статье я не буду говорить о таких аспектах, как: «ПО разрабатывается за деньги налогоплательщиков и должно принадлежать народу», «в СПО нельзя закопать бюджет, потому что по исходному коду любой независимый специалист может адекватно оценить его стоимость» и т.п. Здесь я распишу практическую точку зрения, почему СПО будет действительно выгодно для всех ее участников.
[spoiler]
Итак, проблема на типовом примере, хоть и вымышлен, но максимально приближен к действительности.

Возьмем комитет муниципального контроля города N. Перед ним возникает задача паспортизовать рекламные конструкции всего города.

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

Теперь возьмем почти такой же комитет города M. Почему почти такой же? Потому, что это муниципальное учреждение, которое формируется мэром города. Поэтому оно хоть и выполняет типовые задачи, но все они в некотором роде по своему уникальны, т.е. задачи выполняют типовые, но каждый со своим местным колоритом.

Так вот, у этого комитета города М так же возникает задача паспортизовать рекламные конструкции своего города.

Решение. Аналогичное городу N.

Вот она, проблема №1
В городе N для решения из бюджета выделено 500 тыс. рублей, в городе M столько же (хотя зачастую бывает не столько же, а плюс/минус километр, но не об это сейчас речь) и так для каждого города нашей огромной страны.

Не многовато ли?

«Много, очень даже много» - говорят в верхних слоях власти на очередном заседании по оптимизации и развитию страны в области ИТ. Далее принимается решение: - Необходимо разработать централизованное ПО (далее по тексту ЦПО) паспортизации рекламных конструкций.

Вот она, проблема №2
Хоть смысл этого ЦПО понятен и его технические задачи практически на 90% схожи между всеми комитетами муниципального контроля, но есть 10% уникальных механизмов, которые присущи только тому или иному комитету (механизмы внутренней работы между отделами и механизмы внешнего взаимодействия с другими госучреждениями).

И это ЦПО будет выглядеть на этом фоне примерно так. Перед нами ставят две машины: мерседес и запорожец. Внешне они одинаковы, есть колеса, двигатель, руль, сиденья и пр. И дают нам задачу разработать универсальный (централизованный) технический паспорт, по которому переоборудуют заводы по производству мерседесов и запорожцев и по которому начнут единый выпуск машин. Ужасно, да? А вот теперь представьте завод, которому приходит этот технический паспорт и руководитель вызывает всех рабочих  и говорит им : «Теперь мы будем собирать наши надежные мерседесы вот по этому централизованному техническому паспорту».

Думаете, это не возможно? Возможно, и еще как. Я сам лично наблюдал такую картину внедрения ЦПО и не однократно видел, как медленно, но верно вставали дыбом волосы от руководителя до персонала. Если необходимо, могу более детально, в комментариях рассказать на живых примерах, что из этого получалось.

Поехали дальше.

Проблема №3
Допустим, ЦПО в итоге все равно разработали и внедрили. И тут внезапно в городе N мэр города перед комитетом ставит задачу:  - Срочно провести анализ и выявить рекламные конструкции, которые находятся выше 15 метров, чтобы для них увеличить налоги. И это решение мэра именно этого города. Пример выдуман, конечно, но на практике нечто подобное происходит постоянно.

И, казалось бы, решить технически этот вопрос можно за полдня, надо то всего чуть-чуть поправить базу данных, синхронизовать идентификаторы с местной ГИС и вот он, отчет.

А на самом деле что происходит? Этот комитет подает запрос в местное управление ИТ с постановкой задачи мэра о том, какие необходимо внести дополнения в ЦПО согласно этой задачи. Далее управление ИТ формирует ТЗ и отправляет его разработчикам на доработку, согласно договору поддержки, либо проводит новый тендер на доработку. Короче говоря, весь этот процесс затягивается, в лучшем случае, на месяц.

И разве это не проблема, задачу, решение которой занимает 5 часов превращать в эпопею длиною в месяц и более? А сколько в итоге бюджетных средств на эти механизмы тратятся, так про это вообще лучше промолчать.

И что? Нет решений по данным проблемам?
Есть. И даже придумывать многое не нужно. СПО и его модель уже давно работает на различные компании на уровне мира. Сообщество, его количество разработчиков и просто участвующих в процессе разработки (тестеры, писатели и т.п.) в таком саморегулируемом процессе доходит до несколько тысяч. И самое главное, все это не превращается в бардак, а живет и развивается вполне успешно на протяжении многих лет. Так почему бы просто взять и не переложить механизм разработки и развития СПО в государство? В чем проблемы то?

Я не буду в этом посте расписывать все технические детали того, как это должно работать, а пока только поверхностно опишу весь механизм. Здесь ведь главное выбрать правильный вектор, а уж коррективы вносить можно будет по ходу дела. И причем, еще раз подчеркиваю, ни чего нового не придумано, модель СПО, его сообщество, взаимодействие между потребителем и исполнителем успешно работает в масштабе мира. А главное, эта модель способна соорганизовать огромное количество участников, порой доходит до несколько тысяч и более, что явно подойдет для нашей большой страны.

СПО – это решение описанных  выше проблем
Итак. Теперь представим, что есть закон, который обязывает подрядчика (производителя софта) открывать исходный код, т.е. на выходе ЦПО уже будет СПО.

Решение проблемы №1
Решено созданием ЦПО.

Решение проблемы №2
Подрядчик разрабатывает ядро, а именно те самые 90% будущей системы. Причем делает это ядро таковым, чтобы потом любое решение, адаптированное под конкретное госучреждение, можно подключить в виде плагина (модуля) к этому ядру. Такой механизм позволяет сделать из него полноценный софт, конкретно заточенный под определенное учреждение.

Далее, когда готово ядро со всей технической документацией, проводится тендер в каждом городе на разработку модуля, адаптированного конкретно под госучреждение, в котором этот продукт будет работать. Обязательно, эти модули будут также СПО, с размещением в публичном репозитарии.

Тем самым в итоге получается ЦПО, но с мелкими доработками, адаптированными для каждого госучреждения под его механизм работы.

Затраты для государства будут существенно ниже, поэтому проблема №2 решена. А еще возникают всевозможные плюсы от СПО.

Так как в ходе разработки все ежедневные комиты (commit – зафиксировать изменения в исходном коде в репозитарии) программистов будут фиксироваться в публичном репозитарии, всегда можно независимо проконтролировать ход разработки. Что и как пишут программисты и т.п. А самое главное, нет комитов - подрядчик не работает.

Качество кода заметно возрастет, потому как в репозитарии всегда видно, кто, когда, во сколько и что именно закомитил программист. По себе знаю, работает психологический фактор, который как внутренний голос запрещает писать подобный код: if (1==1)else… :)

У каждого СПО продукта помимо публичного репозитария обязательно наличие таких инструментов как: форум, система тикетов, биржа проектов и пр. Т.е. все самое необходимо для создания сообщества вокруг этого СПО. А это позволит всем участникам СПО напрямую общаться между собой, решать проблемы, возникшие уже на этапе формирование ТЗ, написание кода и т.п. Прочие плюсы коммуникации.

И самое интересное, обратите внимание, сколько сопутствующего бизнеса породит это СПО.

Допустим, моя компания не участвовала в разработках ни ядра, ни модулей СПО для комитета муниципального контроля. Но тут, директор одной крупной рекламной компании, при встрече мне говорит: «Я на днях разговаривал с руководителем комитета, он мне расхваливал свой новый софт, сказал, что теперь все рекламные конструкции города у него как на ладони. А нельзя ли в мою компанию разработать такой софт?». Тут, мне, конечно же, становиться интересно, что это за софт такой? И я через интернет, по его названию, выхожу на сообщество продукта, его описание, а главное, на открытый исходный код. И при небольшом анализе понимаю, что для того, чтобы внедрить этот софт в его компанию будет достаточно написать к ядру этого СПО адаптированный модуль под его нужды. И делов-то всего на месяц, на одного программиста. Вот это круто! – восклицаю я. Тут же выставляю счет этой компании, и через месяц его компания начинает работать на этом СПО. Мало того, я могу задействовать своих программистов, а могу и закинуть задачу на биржу проектов и привлечь как свободного программиста, так и программиста из сообщества, компании разработчика. Выбор и его свобода просто впечатляет. Про экономию такой модели даже говорить не буду, она очевидна.

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

А завтра, глядишь, весь процесс согласования, паспортизации и т.п. рекламных конструкций, без участия даже самого государства станет полностью автоматизированным, ведь затраты на это будут настолько малы, что смогут быть профинансированы самими компаниями. Потому как  государство и сами компании будут работать на одном СПО.
Итак, два зайца убиты, осталось зацепить третьего одним выстрелом из патрона под названием СПО.

Решение проблемы №3
Напомню, мэр поставил срочную задачу перед комитетом сделать выборку рекламных конструкций по высоте. Чтобы решить подобную задачу, при текущих реалиях, нужен как минимум месяц или вообще, без наличия денег в бюджете, решению не подлежит.

И вот здесь самое приятное, потому как госучреждение работает на базе СПО, а значит, дает полную свободу потребителю.

Хотя бы, например, такую.

Допустим, начальник комитета знаком со мной. Мэр поставил ему задачу, а он звонит мне и говорит:
- Александр, я знаю твои возможности, тут делов для тебя на пару часов работы. Мне срочно нужно сделать такую-то выборку по базе – и это очень важно, личное поручение мэра. Выручи, а? С меня банька с поляной на выходных.

Вот и всё решение! И овцы целы и волки сыты!
Васильев Евгений
Александр, а теперь я вас опущу на землю бренную, где AD поднять не могут, а большая часть разработанного ПО требует прав Администратора для нормальной работы.
С учетом того, как в нашей стране делается ПО для гос.нудж, лучше будет если система централизованная на СПО и в облаке. В такой системе можно будет работать с минимальными издержками для бюджета в городе с любой буквой. Причем система может позволить сделать клон и внесение своих наработок, а далее просить внести их основной проект. Дело в том, что форк ничем не отличается от отдельного проекта, так что форки на каждый город ничего не дадут. СПО имеет эффективность в том, что код пишется однажды, работает много раз и поддерживается централизованно.
Далее можно сделать систему мантайнеров, заказов и т.д. Я вам рекомендую посмотреть на проект ядра Linux. Именно этот проект можно назвать образцом. Множество компаний решают свои потребности внутри одного проекта. Наработки одного проекта помогают другим. Замечу, что редко кто используют хотя бы половину возможностей ядра, но никто не делает его форка. Вспомним историю по внесению изменений компанией Google кода написанного для Android. Именно постоянный поток кода в майнстрим позволяет ему быть эффективным. При всех "открытостях" 1С, именно отсутствие культуры майнстрима и порочного "клиент все оплатит", делает клиента заложником ППО и конкретного партнера 1С. Можем вспомнить повторное лицензирование производных продуктов.
СПО - это конкуренция, когда единственным преимуществом является - эффективное ведение разработки. В случае же ППО, качество разработки отходит на последний план пропуская продавцов-втюхивателей.
СПО - это не просто когда все коды открыты, а определенная инфраструктура. Сообщество появится со временем при нормальных условиях взаимодействия. Это - не проблема.
Николай Макаров
>>>>   После этого можно будет уже точно в ближайшие года такую волну не поднимать, второй раз люди не поверят. А еще хуже всего, разочаруются в самой идее СПО.

Не знаю, как там твои люди, но я лично в СПО не разочаровался. Более того, я перевёл на линукс нескольких человек в разных регионах, и они виндой не пользуются, ибо в винде, по сравнению с пингвином, все действия усложнены как будто специально. Разумеется, тут есть и сложности: в регионах практически нереально найти спеца по линуксу, но пингвин, к счастью, работает стабильно и особого присмотра не требует. Но спецов всё равно нет: там одни "виндоспециалисты", то есть эникейщики с гипертрофированным чувством борзоты, за которым настоящих знаний нет и никогда не было.

К сожалению, сейчас полностью ответить на твой пост я не могу, так как убегаю, но я обязательно сделаю это в самое ближайшее время.
Александр Кузьмин
где AD поднять не могут, а большая часть разработанного ПО требует прав Администратора для нормальной работы.
Знаю такие проблемы, сам неоднократно лечил их созданием ярлыка, который запускает утилиту, которая в итоге запускает этот софт с правами админа.

С учетом того, как в нашей стране делается ПО для гос.нудж, лучше будет если система централизованная на СПО и в облаке
Облако, это техническое решение работы софта, оно замечательное! Я сам платформу Абрикос такой задумал и реализовал – система интернет-приложений WebOS (т.е. теперь в новой версии BosUI).

Я вам рекомендую посмотреть на проект ядра Linux.
Когда я говорю о том, что есть уже решения из мирового опыта, как раз и имею ввиду то, как построено сообщество Linux и работа в нем, а так же ему подобные. Опять же, инструменты для сообщества в платформе Абрикос я проектирую исходя из этого опыта (модули: менеджер задач, доска проектов, биржа проектов и т.п.).

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

Т.е. ни чего нового я здесь не придумываю, а просто пытаюсь спроектировать мировоый опыт на нашу Российскую действительность, с учетом нашего менталитета. А он у нас, как бы это поправильнее выразиться, более избалованный, что ли…

P.S. Евгений, от меня привет родному городу!  :)