Материал из Tkabber Wiki.
Содержание
Введение
Увы, но у подавляющего большинства начинающих пользователей, пожелавших по какой-либо причине "попробовать" "версию из репозитория" (а то и "пересесть" на неё), есть серьёзное непонимание того, что такое "альфа версия" применительно к разработке программного обеспечения и под чем вы "подписываетесь", начиная использовать версию, находящуюся в разработке. Сюда же относятся вопросы в стиле "как мне получить версию из SVN???", которые обычно остаются неотвеченными в комнате Ткаббера.
Итак, в начале — основа-основ: "зрелое" программное обеспечение обычно разрабатывается циклически, путём повторения трёх этапов:
- Добавление новой функциональности (новых "фич"), улучшение старой. Самый главный и самый длинный период. Обычно про ПО, находящееся на этом этапе разработки, говорят, что оно "в альфа версии". Код в данном состоянии предназначен для "обкатки" только разработчиками и очень опытными пользователями.
- "Заморозка" следует после того, как ведущий ("мейнтейнер") проекта принял решение выпустить следующую стабильную версию. На этом этапе новая функциональность не добавляется (за исключением тривиальных вещей), только исправляются найденные ошибки. Обычно в этот период выпускается несколько "бета" версий, предназначенных для тестирования широкой публикой.
- Выпуск. После того, как ведущий проекта считает, что все очевидные ошибки найдены и исправлены, следует выпуск ("релиз") новой стабильной версии ПО.
Применительно к Ткабберу, эти три стадии определяют три варианта "доступности" Ткаббера для использования:
Разработка
Код официально доступен только через репозиторий.
"Заморозка" и широкое тестирование
Код доступен в виде стандартных архивов с "бета версиями"; они содержат то, что обычно (не совсем верно) называется "исходниками Ткаббера".
Релиз
Код доступен в виде "архива с исходниками"; он является единственной "референсной" формой распространения Ткаббера. Однако разработчики Ткаббера обычно выпускают Ткаббер в виде специальных дистрибутивов, предназначенных для удобного использования Ткаббера на конкретных системах и пригодных даже для совершенно неопытных пользователей, например, старпаков и инсталляторов.
"На переднем крае"
Настало время поподробнее остановиться на "нестабильной версии", которая "живёт" в репозитории системы управления версиями Subversion.
Существует несколько мифов и непониманий, связанных с нестабильной версией Ткаббера.
Во-первых, несмотря на то, что Ткаббер разрабатывается таким способом, что "голова" репозитория обычно вполне работоспособна, иногда туда вносятся баги. Иногда это весьма серьёзные баги, которые вполне могут приводить к частичной потери трудоспособности Ткаббером до тех пор, пока баг не будет исправлен. Непонимание того, что "нестабильная" версия в любой момент "вдруг" может оказаться неработающей — одна из главных проблем начинающих. Причем проблемы могуть быть самыми разными. Например, в одночасье может быть изменена система хранения протоколов чата, а код для автоматической конвертации старого формата в новый ещё не будет написан.
Посему совершенно неправильным является отношение к репозиторию просто как к неудобному (или, наоборот, удобному) способу получать новую функциональность в Ткаббере. Если что-то ломается, вы оказываетесь предоставлены сами себе.
Во-вторых, если вы не разработчик, и если вы, прочитав первый пункт, согласны быть "подопытным кроликом" (а наличие таких пользователей на самом деле весьма важно для разработчиков), вы принимаете на себя ответственность1 действовать по определённой схеме. Самое главное: вы обязательно должны читать логи коммитов в репозиторий или файл ChangeLog — без этого вы становитесь мишенью для несуществующих багов: изменившуюся функциональность или её конфликт со старыми настройками, плагинами и чем угодно ещё вы воспринимаете как баг и тратите время разработчиков на ковыряния с вашей проблемой.
Итак, подытожим: чтобы следить за нестабильной версией и помогать разработчикам выявлять ошибки, вы должны:
- Знать матчасть. В нашем случае это означает:
- Понимание принципа работы систем управления версиями и принципа работы Subversion; в частности, вы должны совершенно чётко представлять себе, что происходит, когда вы делаете svn update и что означают сообщения клиента в ходе выполнения этой операции.
- Умение "откатывать" версию вашего рабочего каталога назад, если вы наткнулись на баг в свежем коммите, который препятствует вашей нормальной работе с Ткаббером.
- Читать логи изменений в обязательном порядке. Сопоставлять наблюдаемые вами изменения в работе, проблемы Ткаббера с этой информацией.
- Уметь сообщать о багах так, чтобы разработчикам было понятно, о чём идёт речь.
Изучить матчасть поможет свободно доступная книга по Subversion (переведённая, между прочим, на русский). Если же всё изложенное — не для вас, не мешайте разработчикам разрабатывать и "вкладывайтесь" в тестирование на другой стадии — на стадии "пререлиза", о которой рассказано ниже.
Сделать: Объяснить отсутствие "ночных билдов"
Сделать: Объяснить почему Subversion, а не...
Пререлизы
Таковые бывают и у самого Ткаббера (обычно они называются "беты" и информация о них помещается как в новостях на официальном сайте, так и в списках рассылки), и у его дистрибутивов, которые собираются сразу после выхода релиза Ткаббера и затем обычно проходят стадию тестирования перед выпуском окончательных версий.
Беты, как правило, не содержат очевидных проблем, и их использование относительно безопасно для ваших нервов.
Тестирование пререлизных версий очень полезно для продукта. Имейте в виду, что проблемы в уже выпущенной стабильной версии свободного ПО — это проблемы, прежде всего, самих пользователей, так как за разработчиками редко стоит некая организация, способная организовать систематическое тестирование (при помощи оплаченной команды специалистов). Так что если вы хотите быть уверены, что стабильная версия будет работать так, как надо, тестируйте её бета-версии.
Сделать: написать про необходимость иметь "каноническую"
инсталляцию для тестирования "исходников"
1 Понятно, что в мире free software (и в мире проприетарного ПО, кстати, тоже) никто никому ничего "по настоящему" не обязан и ничего не должен. Здесь мы имеем в виду чисто "социальные" и моральные обязательства, которые влечёт за собой участие в программном проекте.
В помощь начинающему тестеру
Установка
В Линукс
Установка в линуксе проблем вызвать не должна. В Дебиане это вообще проще простого:
sudo apt-get install subversion subversion-tools
По желанию можно установить какой-нибудь графический front-end.
В Виндовс
Одним из самых популярных клиентов Subversion под Виндовс можно смело назвать TortoiseSVN. На странице скачивания можно найти как последнюю версию программы (32 и 64 бит), так и языковые пакеты. Русский пакет тоже присутствует, есть и мануал, пересказывать который здесь особого смысла нет.
Первые шаги
Самый первый шаг, который нужно предпринять, чтобы начать тестирование альфа-версии, описан на официальном сайте Ткаббера. Он сводится к скачиванию при помощи клиента SVN исходного кода Ткаббера куда-нибудь на жёсткий диск:
svn co http://svn.xmpp.ru/repos/tkabber/trunk/tkabber tkabber-svn
Эта команда скачает весь транк Ткаббера в каталог tkabber-svn, который создастся в том месте, откуда вы её (команду) запускаете. Если вам нужны плагины, можете скачать и их:
svn co http://svn.xmpp.ru/repos/tkabber/trunk/tkabber-plugins tkabber-plugins-svn
Можно скачать и их, и Ткаббер одной командой:
svn co http://svn.xmpp.ru/repos/tkabber/trunk tkabber-svn
В этом случае внутри каталога tkabber-svn вы найдёте два других: tkabber и tkabber-plugins. Если вам нужны неофициальные плагины, содержащиеся в соответствующем репозитории (там можно найти далеко не все плагины, описанные на этой вики), качайте их отсюда:
svn co https://svn.xmpp.ru/repos/tkabber-3rd-party/trunk/plugins tkabber-3rd
Запуск тоже прост (предположим, Ткаббер установлен в ~/bin/tkabber-svn):
cd ~/bin/tkabber-svn
./tkabber.tcl
Ещё одна полезная команда — update
После скачивания Ткаббера нет нужды проделывать процедуру checkout (co) каждый раз. Достаточно зайти в каталог Ткаббера или его плагинов и набрать
svn update
Если вам нужно откатиться на какую-то конкретную ревизию, пишите что-нибудь вроде
svn update -r 1000
Для автоматизации обновления в Windows (при использовании TortoiseSVN) можно создать батник с таким содержанием:
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe"/path:"c:\Program Files\TkabberSVN\" /command:update /closeonend:2
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe"/path:"c:\Documents and Settings\User\Application Data\Tkabber\plugins\" /command:update /closeonend:2
Подробности использования этих двух основных команд можно узнать, запросив помощи, например:
svn help co
svn help up
Первые шаги при использовании альфа-версии Ткаббера под виндами почти ничем не отличаются от линуксовых, разве что вместо набора (а то и копи-пейста) одной строчки вам придётся самостоятельно продираться сквозь дебри графического интерфейса или штудировать довольно объёмный мануал.
Сделать: Впрочем, если какой-нибудь доброволец разовьёт тему виндовс, возражений не будет.
Как параллельно работать с обычной и альфа-версией Ткаббера
Удобно иметь в системе установленную из репозиториев ОС стабильную версию Ткаббера, а каталог с альфой забросить куда-нибудь к себе в домашний каталог (например, в ~/tkabber-svn — меньше геморроя с правами на запись в файлы, если потребуется или захочется что-нибудь допилить. Однако следует помнить, что в любом случае будут читаться рабочие конфигурационные файлы, лежащие в вашем домашнем каталоге: ~/.tkabber/config.tcl и ~/.tkabber/custom.tcl, а у разных версий Ткаббера могут быть разные идеи о доступных настройках, и потому совместно использовать одни и те же конфигурационные файлы сильно разными версиями Ткаббера может и не получиться.
Для решения этой проблемы рекомендуется заставить Ткаббер использовать другой каталог для
хранения настроек при помощи установки переменной окружения TKABBER_HOME: создайте
отдельный каталог для настроек альфа-версии Ткаббера, например, ~/.tkabber-svn а скрипт
запуска (например, ~/bin/tkabber-svn) сделайте таким:
#!/bin/sh
export TKABBER_HOME=~/.tkabber-svn
exec wish ~/tkabber-svn/tkabber/tkabber.tcl "$@"
Теперь можно скопировать файлы конфигурации из ~/.tkabber в ~/.tkabber-svn и запускать
альфа-версию как ~/bin/tkabber-svn (или просто tkabber-svn, если ~/bin находится
у вас в переменной окружения PATH).
Возможно, вы захотите, чтобы логи обе версии вели совместно (формат хранения логов меняется
куда реже настроек). Для этого убедитесь, что переменные ::logger::options(logdir) (группа
настроек "Customize" → "Chat" → "Logging") показывают на один и тот же каталог. Ну, или можно
создать симлинк ~/.tkabber-svn/logs → ~/.tkabber/logs.
Как сообщать о баге
- Перво-наперво, как уже было посоветовано выше, внимательно прочитайте ChangeLog: возможно, ваш баг — на самом деле фича :)
- Обновитесь — вдруг проблему уже разрешили?
- Сохраните лог ошибки, чтобы потом было чего предъявлять разработчикам (иначе в лучшем случае не поверят).
- Иногда бывает нелишним сделать скриншот эпицентра. Вывесьте его на каком-нибудь публичном фотохостинге (например, imageshack (обязательно копируйте самую последнюю ссылку на закачанную картинку из предложенных — она без рекламы) или keep4u), и не надо предлагать скинуть скрин в приват или закинуть на почту.
- Однако перед тем как бежать жаловаться, попробуйте повторить ошибку. Если она повторяется из запуска в запуск, постарайтесь проанализировать обстоятельства, которые могли её вызвать: какие программы запущены параллельно, какие сопутствующие Ткабберу пакеты установлены, ну и прочее.
- Попробуйте проблему локализовать (не перевести на русский, а сузить поиск, отрезав варианты, в которых ошибка не наблюдается).
- Сообщая об ошибке, без напоминаний укажите версию операционки (в случае с Линуксом не помешает и версия оконного менеджера), тикля и самого Ткаббера.
...и ещё немного о социальном аспекте:
- Обязательно имейте под рукой то, что у вас глючит, когда просите о помощи! Бессмысленно "заходить с бомбуса", находясь на работе, и рассказывать о проблемах подключения Ткаббера, оставшегося дома.
- Если проблема происходит не у вас, а у вашего друга/свата/брата, будет намного лучше, если эта персона сама зайдёт в комнату Ткаббера и задаст свой вопрос — не стоит играть в испорченный телефон.
- Никогда не спрашивайте — "есть ли кто живой" и готов ли кто-нибудь помочь вам. В Интернете принцип "NATAJA" (Never Ask To Ask, Just Ask) должен исповедоваться неукоснительно: посетители конфы не сидят всё своё время перед компьютерами, а также живут в разных часовых поясах. Посему просто чётко и максимально подробно сформулируйте свой вопрос и ждите. Если ждать нет возможности, через некоторое время проверьте логи конференции — возможно, кто-то уже прочитал и ответил на ваш вопрос (те, кто в состоянии ответить, обычно читают логи и увидят его). Если ответа на вопрос не было, вежливо спросите, не появилось ли у кого идей по поводу вопроса такого-то.
Сделать: дописать, если чего не хватает
Сделать: вообще-то этот раздел нужно слить с соответствующим
куском "Острова посланных на..." и оформить в виде отдельной статейки с тупым названием
"Как правильно задавать вопросы" Согласен.