вторник, 12 января 2010 г.

ERP по лицензии GPL: условия выживания

Часть 1. Почему я об этом захотел написать?
Примерно лет 10 назад я плотно сидел на внутренней автоматизации предприятия: генераторы отчетов, датасеты, гриды, печать, БД- т.е. весь типичный набор технологий "автоматизатора". Мой друг занимался, в то же самое время, той же автоматизацией, но на базе 1С. Он очень любит программировать в 1С, т.к. встроенный язык 1С очень прост в освоении, а сама программа имеет развитой инструментарий для генерации различных отчетов и экранных форм. Мы периодически затевали споры на тему: "Что лучше: 1С или язык программирования, типа Delphi, C#, Java и СУБД?" Существенным аргументом в мою пользу было то, что на универсальном языке программирования и СУБД я мог гораздо гибче программировать, чем на 1С, да и быстродействие получалось чувствительно выше. Его аргументом было то, что на 1С можно очень быстро ваять отчеты и экранные формы.
Однажды он поинтересовался у меня по другому поводу, как осуществлять подключение к БД из языка программирования, т.к. программируя в 1С, он этого не знал, а тут потребовалось зачем-то. При нем я на форму накидал мышкой компонент, в их свойствах прописал подключение к БД. Мастер настроек сам при этом предложил доступные БД для прописывания пути к ним, так что ручками и набирать ничего не пришлось. Пять минут- и приложение готово! Я запустил его, на экране показалась форма с заполненным данными из БД гридом. Все это сортировалось, месторасположение и ширина колонок могли изменяться. Накидав на скорую руку приложение для демонстрации, я повернулся к приятелю, чтобы подробней спросить у него, что ему показать. Его лицо было вытянуто, глаза как два пятака, а он сам, буквально, онемел. Пришлось ему повторить вопрос. Его "расклинило", и он воскликнул: "Как у тебя получилось написать целую программу? Ты ведь даже до клавиатуры не дотронулся!"
Я знаю, что в 1С делать отчеты, экранные формы ничуть не легче, чем в распространенных IDE универсальных языков программирования. Конечно же, благодаря своей заточенности под конкретные функции, 1С гораздо проще и быстрее внедрить. При использовании универсальных языков программирования трудно будет вначале, пока не написан своеобразный framework, набор функций, позволяющий оперировать информацией на метауровне. А потом уже, по ходу работы, 1С не будет иметь никаких преимуществ перед универсальными язками программирования+framework+СУБД. Только получается, что на каждом предприятии этот framework обычно пишут с нуля. Как обычно, попадают на те же грабли, на которые наступали другие разработчики другого предприятия. Потом оголтело бегают по форумам в Интернете с криками "help! help! что делать если...".
Тогда я задумался, а почему, собственно, нельзя написать такой framework, чтобы его все использовали, а не изобретали каждый раз новый велосипед? Тогда получилось бы красиво: из плюсов 1С мы бы получили быстрое и простое развертывание приложения на предприятии, а из плюсов универсальных языков программирования - гибкость программирования и хорошее быстродействие. А хорошо бы, чтобы стоил он недорого или вообще, как Linux, бесплатный был.
Время шло, и я окончательно пришел к мысли, что не надо фантазировать, а лучше использовать готовые системы, типа 1С. Но подспудно грызла мысль: "А что если получится как у Товальдса, только в области ERP?" Вроде все понятно: собрать вместе свои наработки, оформить их, так чтобы это выглядело единым framework'ом, и выложить для публичного доступа. А народ там подтянется, framework начнет развиваться. Но, с другой стороны, меня грыз "червячок": а зачем это надо, ведь та же 1С, фактически и представляет собой тот самый framework. Система недорога, а, если учесть развитость воровства ПО в нашей стране, то, вообще, цена перестает быть решающим аргументом.
Поэтому, осознавая бесплодность своих мыслей 10-летней давности, я решил их изложить в блоге, не ставя перед собой цели реализовать эдакую GPL ERP а-ля Linux. Больше "в назидание потомкам", чем для попытки, что-то реально сделать.
Продолжение следует...