понедельник, 3 ноября 2014 г.

Охота на ошибки. Чего ждать? К чему стремиться?

Сообщество LibreOffice готовится к международной сессии по выявлению ошибок. В русском переводе это звучит как «Охота на ошибки». В связи с широким освещением события, в русскоязычном сообществе появилось много вопросов, которые я, как переводчик раздела QA в вики TDF и программист, хотел бы прокомментировать. Для того, чтобы не заниматься холиварами, я бы хотел сразу оговориться, вся эта информация будет полезна только тем, кто действительно заинтересован в том, чтобы иметь качественный свободный офисный пакет. Если вам безразлично качество инструментария, которым вы пользуетесь, вы не поддерживаете идеи OpenSource, или вам просто лень что-либо предпринимать, то, скорее всего, читая эту статью, вы только потеряете время. Я хочу ответить на вопросы людей, у которых есть сомнения, а не убедить вас в том, что в нашей команде не хватает именно вас.


Как исправляются ошибки

Давайте начнём с самого конца. Как программист исправляет ошибку? Например, пользователь заявляет, что во Writer имеется ошибка, описывает действия, которые он производит для того, чтобы программист мог воссоздать проблему и решить её. На сегодняшний день кодовая база LibreOffice составляет примерно девять миллионов строк. Назвав приложение, мы сокращаем участок примерно в 8 раз. Назвав действия для воссоздания ошибки, мы позволяем ещё в десятки раз сузить круг поиска, но даже в этом случае, количество строк может превышать несколько тысяч. Попробуйте, просто ради забавы, найти одну опечатку в тексте примерно из 20 тысяч знаков. Сколько у вас уйдёт времени? При этом нужно учитывать, что в проекте LibreOffice на сегодняшний день нет как таковых оплачиваемых программистов. Проект разрабатывается десятком компаний и свободными программистами, которые работают по доброй воле, а не по обязательству. Если мы вспомним, что программисты тоже люди, им приходится тратить время на заработок денег, семью, в конце концов на сон и еду, то мы поймём, что это просто люди, такие же как и мы с вами, и время у них сильно ограничено. Всё это приводит к мысли, что ошибки должны сортироваться по важности. Именно этим занимается команда QA. Они стараются определить насколько серьёзна ошибка, сколько она затрагивает пользователей, насколько она простая в исправлении. В первую очередь, естественно исправляются ошибки, которые затрагивают большое количество пользователей. Именно такая стратегия позволяет постоянно улучшать пакет приложений. А те, кто пользуется LibreOffice, знают, что улучшения видны от версии к версии.
Что происходит с простыми ошибками, которые не затрагивают большое количество пользователей? Они переходят в проект «Простой работы» (easyHack), эти ошибки оставляются для новых программистов, которые могут при помощи них, включиться в проект, понять его структуру и стать его разработчиками.

Зачем нужно подавать отчёты об ошибках

При прочтении вышесказанного может сложиться впечатление, что отчёт об ошибке можно и не подавать. Зачем, если у разработчиков не хватает времени исправить то, что есть? И они ещё создают проекты, где хранятся ошибки которые они не собираются исправлять.
Это не совсем так. Да, есть ошибки которые тянутся ещё с ОО.о. Но в большинстве своём, все ошибки, которые затрагивают большое количество пользователей, исправляются в ближайшее время. Но возникает вопрос: Как программист или член команды QA может узнать, что ошибка затрагивает много пользователей, а не одного-двух? Есть два способа:
  • Первый — это логика, они смотрят, насколько важным является функционал, например, аварийное завершение при сохранении файла, понятно что это затронет всех пользователей, а вот начинать формулу со знака плюс вместо равно в Calc, вероятнее всего, затронет малое количество пользователей.
  • Второй — если о проблеме мало заявляют, значит этой функцией мало пользуются.
Вы не заявили об ошибке? Она до сих пор не исправлена? Сами виноваты! Да, вы не проголосовали, а значит не захотели, чтобы её исправили. Как не прискорбно, телепатия не доступна ни команде QA ни программистам, поэтому они ждут прямого заявления проблемы.
Вот почему важно заявлять о всех, подчёркиваю, абсолютно всех ошибках, какими бы они мелкими и неважными не казались. Это создаёт тот самый естественный приоритет ошибок, по которому разработчики узнают, что это нужно исправить в первую очередь.

Что ждать от подачи отчёта

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

Как подать эффективный отчёт об ошибке

В вики TDF есть статья, которая подробно рассказывает как подать отчёт об ошибке. Кстати, обратите внимание на страницу компоненты. Она была переделана таким образом, чтобы было проще искать уже имеющиеся ошибки в трекере. Нет ничего страшного, если вы создадите дубликат отчёта об ошибке, но лучше этого избегать, так как это отнимает человеческие ресурсы.
Мне хотелось бы в дополнение к этому рассказать следующее. Хотя официально команда QA и разработчики каждый раз подчёркивают, что нет необходимости совершать какие-либо дополнительные действия обычному пользователю, вы действительно можете помочь, тем что дадите дополнительную информацию. Это значительно облегчит и сортировку ошибок, и само исправление.
  1. Если программа аварийно завершает работу, вы можете воспользоваться советами с этой страницы и предоставить отладочную информацию. Она реально помогает разработчикам понять, где может быть проблема.
  2. Если вы более опытный пользователь, вы также можете воспользоваться тестами для анализа. Многие из них требуют минимального знания системы, хотя иногда заставляют напрягаться.
  3. Есть также специальный инструмент, который позволяет найти тот момент, когда ошибка появилась в коде. Он требует знаний и умений, но при желании, поддаётся освоению.
  4. Самое простое, что вы можете сделать, это проверить в какой версии появилась найденная вами ошибка. Для этого есть статья по параллельной установке. Вы можете иметь столько версий LibreOffice на компьютере, сколько вам потребуется.
  5. Если ваша ошибка связана с документом, не забудьте его прикрепить. Если документ большой, выложите его куда-нибудь (например, dropbox, яндекс диск) и дайте короткую ссылку. Если вам нужно прикрепить несколько файлов (например, скриншоты, логи, документ) объедините их в архив. Не забудьте пояснить что вы прикладываете.

Вместо послесловия

Давайте в заключении, дам одну идею, точку зрения на разработку. С моей стороны, она открывает истинную картину вещей.
В английском языке есть слово «developer». Developer — это разработчик, другими словами человек который делает вклад в развитие проекта. И, если подумать о членах сообщества как о разработчиках (вкладчиках), то становится видно, что кто-то несёт положительный вклад, а кто-то нулевой. И дело вовсе не в том, сколько он пишет кода, а как много он готов отдать в проект. Представим себе простую шкалу -1, 0, 1. За ноль возьмём обычного пользователя. Он просто пользуется, никому ничего не говорит, ничего никому не советует, не пишет, короче не участвует. Если человек пишет отчёт об ошибке, его вклад не может быть нулевым, он привлекает внимание программиста к проблеме, и тем самым делает положительный вклад. Если пользователь готов конструктивно рассуждать о программном продукте, рекомендовать его, он опять делает положительный вклад, потому что он находит потенциального вкладчика, который может писать руководства, сообщать об ошибке, отвечать на вопросы пользователей, участвовать как-то в проекте. Если человек постоянно пытается сливать «свою боль» в темах, посвящённых продукту, и тем самым отпугивает народ, то какой он вклад вносит?
Когда мы говорим об OpenSource, нет людей которые не занимаются разработкой. Продукт именно такой, как мы все его делаем. Когда люди заявляют: «Разработчики не могут осилить...», «Разработчики не исправляют...», для меня это звучит как: «Я ничего не сделал в этой жизни для улучшения этого продукта!». Конечно, спасибо за честность, но просто само по себе это заявление не несёт пользы, согласно нашему трекеру ошибок, ему нужно присвоить статут NEEDINFO.
У вас есть конкретные вопросы? Вы хотите помочь, но не знаете как? Есть группы в соцсетях, в которых люди готовы вам помогать. Есть IRC-канал #libreoffice-ru на Freenode на котором есть люди, готовые вам помочь. Необходимого лишь ваше желание.

Начните с простого: Нашли ошибку, расскажите о ней разработчикам.