Увидев переводную публикацию о поддержке древнего как кости мамонта legacy-кода, не могу не поделиться историей из своего опыта, а заодно, и призвать написать тех, кто также как и я сталкивался с подобными задачами. Да и за державу обидно — почему подобные публикации – в основном, переводные? У нас есть и было немало программистов-самородков, ваяющих свое, ни с чем не совместимое программное обеспечение – свои собственные СУБД, графические интерфейсы, драйвера для промышленного оборудования собственной разработки. По работе я немало сталкивался с творениями местных кулибиных, и еще расскажу про них, если будет интерес.

Случилась эта история в 2001 году и началась с того, что в FIDO-шной конференции $CRACK$.TALKS, обычным содержанием которой являлись кряки, объявления о поиске кряков и разговоры крякеров «за жизнь», я увидел нетипичное объявление с вопросом кто мог бы взяться за доработку графической программы. Так как в этой конференции «доработкой» любили называть взлом коммерческого программного обеспечения, например, «отвязку» от аппаратного ключа, а коммерческим взломом я не занимался, то на это объявление я не стал обращать внимания, решив, что тут уж найдутся те, кто выполнит заказ, связавшись с адресатом через личную почту. Однако, через неделю объявление повторилось, мне стало интересно о чем идет речь, и я связался с его автором.

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

Встретивший меня мой будущий клиент оказался начальником местного ИТ-отдела, был уже в годах, но по разговору чувствовалось, что он «из наших» — программистов, хотя, и бывших, «отошедших от дел». После чего он подвел меня к компьютеру, с огромным по тем временам 21 дюймовым монитором, на котором красовалась вот такая вот картинка:



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

Из дальнейшего объяснения, я узнал, что речь идет о доработке GEM/3 Desktop, который в свое время был конкурентом MS Windows 2.0, уже его последняя коммерческая версия была 15-летней давности. Но зачем ее дорабатывать? Оказалось, что в газете использовалась древняя версия настольной издательской системы Ventura Publisher, которая запускалась только из-под GEM/3, но зато позволяла автоматизировать верстку страниц газеты, получая текст объявлений из БД – на тот момент ни одна другая система такого не умела.



Немного поколебавшись, я взялся за эту работу. Задача состояла в доработке драйверов для дисплея с высоким разрешением 1280х1024. Драйверов было несколько, свой драйвер для разных видеоадаптеров и для каждого разрешения. Но все они поддерживали разрешение не больше 800х600, именно поэтому на увиденном мною мониторе были такие крупные пиксели, что согласитесь, не очень удобно для верстки полноформатной газеты.

Интернета у меня тогда под рукой не было, а исходников драйверов в комплекте не шло, так что взяв у клиента архив с GEM, я начал ковырять двоичный код драйверов, с тем, чтобы найти в нем все константы, задающие поддерживаемое драйвером разрешение, и заменить их на нужные. Мне это удалось, но не тут-то было: GEM, в свою очередь, работал под MS-DOS, в реальном режиме, и для доступа к видеопамяти его драйвер переключал банки видеопамяти. Простой заменой констант тут было не обойтись, надо было искать код переключения банков видеопамяти – задача нелегкая. К тому же, драйвер был продвинутый и не просто предоставлял интерфейс для перекидывания графики на дисплей, а умел рисовать графические примитивы – линии, прямоугольники и круги, код отрисовки, перемешанный с переключением банков видеопамяти был довольно запутанным. Но тут мне повезло: видеоадаптер, поддерживаемый одним из драйверов, переключал видеобанки путем вывода команд в обычно не используемый аппаратный порт, так что, переключение видеобанков можно было отловить по номеру этого порта. Через неделю работы (как обычно — в основном ночью) мне удалось научить драйвер 800х600 от этого видеоадаптера работать в 1280х1024, хотя, с некоторыми графическими примитивами возникали глюки отрисовки.

И тут мне позвонил клиент и сообщил, что он нашел исходники (!) GEM. Оказывается, перекупившая GEM компания Caldera в 1999 году их зарелизила под лицензией GPL. В начале каждого файла с кодом был копирайт Caldera, но все остальное оставалось в первозданном виде 15-летней давности.



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



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

Комментарии (20)


  1. CMHungry
    14.09.2015 15:42

    wow! здорово


  1. datacompboy
    14.09.2015 15:53
    +2

    Раз код был GPL, обновлённый драйвер зарелизен?


    1. Rumlin
      14.09.2015 16:25
      +3

      Скорее всего не было возможности.

      Интернета у меня тогда под рукой не было

      Да и в 2001 году куда его релизить? Например, GitHub появился в 2008.


      1. danfe
        14.09.2015 16:33
        +9

        С другой стороны, в 1991 г. у Линуса Торвальдса не возникло проблемы «как/куда зарелизиться». Да и вообще много у кого не возникало. :-)


      1. A1ien
        14.09.2015 16:35
        +5

        Не ГитХабом едины:) Тогда уже существовал sourceforge.net


      1. ivlis
        14.09.2015 16:37

        До 2008 года кодом не обменивались что ли? GNU как-то без github написали же. И в 2001 году в Москве уже был интернет с лимитом 1GB/мес, что по тем временам было довольно прилично. Ну и гугл уже тоже что-то искал.


        1. Rumlin
          14.09.2015 20:20

          Сильно подозреваю, что автору не был доступен даже диалап.


    1. xforce
      14.09.2015 16:36
      +45

      GPL обязывает передать исходник только тому, кто получил и само ПО. Так что релизить на публику и не обязан, если делал для какой-то конторы и она дальше ПО никуда не выкладывала.


  1. valashko
    14.09.2015 17:00

    Отличная история, но мне кажется, больше подходит для Geektimes.


    1. petrovnn
      15.09.2015 13:23
      +9

      не хожу на гиктаймс, тостер и прочее что отпочковалось от хабра


  1. zamsky
    14.09.2015 19:41
    +3

    Ерунда какая-то. C 1990 года программа имела версию по Windows (3.0). С 1993 она была куплена компанией Corel и продавалась под названием Corel Ventura Publisher 4.2. На этом пакете работали все известные мне компании группы «Из рук в руки». Формат публикации с 3.0 по 4.2 практически не поменялся. Зачем в 2001 году надо было связываться с этим древним говном мамонта, когда была уже 7 версия программы — мне непонятно.


    1. zedalert
      14.09.2015 21:25
      +7

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


    1. Viacheslav01
      15.09.2015 01:24
      +7

      Для работы, важно пока работает, не трогать. Много раз встречался с ситуацией когда работает софт наидревнейшей версии, но его обновить никто не даст! Потому как все работает, так как надо!


      1. zamsky
        15.09.2015 09:32

        Так я вам и рассказываю с позиции человека, который работал и с Xerox Ventura, и c Corel Ventura. Переход между ними был безболезненный, насколько помню.


        1. batyrmastyr
          15.09.2015 13:58

          А что по деньгам? Не нужно было оплачивать заново?


          1. zamsky
            15.09.2015 16:14

            В то время, когда черно-белый принтер формата A3 стоил $10000, купить пакет за примерно $300-400 было не так накладно.


        1. PapaTramp
          15.09.2015 14:00

          А новые версии могли брать данные из базы?


          1. zamsky
            15.09.2015 16:17

            Не было никаких баз, использовался маркированный текст.


    1. sunman
      16.09.2015 20:32
      +2

      Вспоминаю теперь, что задавал клиенту тот же вопрос, на что мне было отвечено, что под Windows-версией Ventura нет этого функционала (может быть, какого-то плагина?).
      Газету вы угадали — она самая.


    1. mickvav
      20.09.2015 20:39
      +1

      У меня одноклассник года три назад спрашивал, не завалялось ли в хозяйстве 10" флопии и дисковода под них. Отрыли в институте древний прибор, который стыкуется к такому же древнему компу. Всё это работает, но сети нет. Денег на новый прибор не предвиделось. Кажется, в итоге нашли подходящий 5" дисковод…