воскресенье, 3 мая 2009 г.

Вещи, которые удивили меня на прошедшей неделе

Вот так правят баги разработчики ACE!

Есть такая C++ библиотека – ACE. В принципе, очень хорошая библиотека. С большим количеством возможностей. Портированная под большое количество платформ. Бесплатная. Пользуемся ей уже года четыре. Но чем больше пользуемся, тем больше хочется сменить ее на что-нибудь другое (например, Qt или Poco, или даже Boost). Причем не столько из-за качества самой библиотеки, сколько от качества ее развития. Как раз на днях в очередной раз был удивлен этим качеством (точнее, его отсутствием).

Итак, история такова. В сентябре 2008-го года (более семи месяцев назад!) вышла версия ACE 5.6.6. В которой я сразу же нашел критический баг – из-за ошибки в классе ACE_Thread_Manager многопоточное приложение временами падало при завершении нитей. Потратив несколько часов и убив кучу нервов (поскольку баг проявлялся в новой версии SObjectizer, которую мы только-только закончили и собирались публиковать, и я первым делом искал проблемы в SObjectizer) я ошибку нашел. И запостил описание бага в ACE-овскую багзилу, да не просто описание, а с патчем для его исправления. В сентябре 2008-го… Через полтора месяца после выхода ACE 5.6.6 вышла версия ACE 5.6.7, в которой данной проблемы уже не было. И я, грешным делом, подумал, что найденный мной баг исправили.

Но буквально позавчера (на дворе май 2009-го!) приходит мне письмо из ACE-овской багзилы. Мол, пытаемся накатить ваш патч и после этого у нас падает тест Thread_Pool_Test. Можете ли, мол, прислать работающий патч. Работающий, блин! Мало того, в описании бага теперь значится, что я числюсь как человек, который диагностировал баг, и, сюрпрайз-сюрпрайз, как ответственный за его устранение!

Зашибись, ребята работают! Я им полгода назад выслал патч для конкретной версии 5.6.6. Они его проигнорировали тогда. И вместо применения моего патча, просто откатили какие-то изменения, которые были сделаны при переходе от 5.6.5 к 5.6.6. А теперь, после выхода 5.6.7, 5.6.8 и 5.6.9, они пытаются применить мой патч. И я теперь должен опять тратить свое время для того, чтобы понять что к чему.

Для того, чтобы разобраться, пришлось тянуть HEAD-ветку из svn-репозитория. Затем ставить себе Perl, чтобы через MPC сгенерировать себе проектные файлы… И все это для того, чтобы выяснить две простые вещи:

  • мой оригинальный патч просто так на текущую ветку не накатывается. Одна строчка претерпела изменения и все. А из-за неполностью сделанного патча ACE вообще не компилируется. Как у них ACE скомпилировался и упал тест Thread_Pool_Test – фиг знает;
  • если проделать необходимые изменения ручками, то все собирается и ничего не падает. По крайней мере у меня на Visual C++ 7.1 (как раз там, где был баг в 5.6.6).

В общем, закинул я им обновленный патч. Но осадочек-то остался. Какого хрена было тянуть полгода, а потом пытаться в версии 5.6.10 фиксить баг из версии 5.6.6? Это для меня загадка. Да при этом назначать меня ответственным за его исправление.

Вот, блин, OpenSource в одном из своих ярких представлений. Но я все равно не понимаю… Ну не хватает у вас ресурсов на поддержание проекта в актуальном состоянии, так нафига вы его под BSD-like лицензии выкладываете? Продавайте за деньги, как Qt. И живите с этих денег. А нет, так оперативно разбирайтесь с тем, что вам пользователи присылают.

А ведь где-то осенью 2008 мы заслали к ним патч для расширения функциональности ACE_TTY_IO под Win32. И он так и не был принят до сих пор. Теперь я не удивлюсь, если осенью 2009 я получу очередное письмо с просьбой прислать актуальную версию нашего прошлогоднего исправления.

2.5M euro на разработку MINIX 3!

Вот это было приятное удивление. Уже несколько лет знаменитый Эндрю Таненбаум (Andrew Tanenbaum) занимается разработкой MINIX 3, Unix-подобной операционной системы, построенной на принципах микроядра. На неделе я узнал, что в конце 2008-го года он получил грант в 2.5M евро на свою разработку. Что позволит продолжать работу над MINIX 3 еще в течении пяти лет.

Хоть мне самому от этого ни тепло, ни холодно, но все равно приятно. Имхо, это правильно, когда таким заслуженным дядькам, как Таненбаум, дают возможность сделать что-нибудь стоящее.

Водопроводный кран с тачскрином и распознаванием физиономий!

Ну это просто из разряда “афигеть”:

Водопроводный кран с сенсорным экраном. И камерой! И распознаванием лиц пользователей! Т.е. настраиваешь себе ту температуру, которая нравится, сохраняешь настройку. Потом подходишь – кран на тебя смотрит внимательно, и включает именно ту температуру, которую ты когда-то заказывал :)

Комментариев нет: