Сейчас вовсю идёт тестирование новой версии MyChat — 4.13. Одна из фишек, которая была реализована в готовящейся версии — это цветовая и шрифтовая разметка сообщений. Более подробно о технологии написано в официальной новости. Вроде не супер-пупер-мега фишка — всего-то сделали разметку сообщений, а раньше был просто чёрный текст. Удобнее теперь стало.
Пользователи недоумевают — а чего же так долго новая версия не выходит? Всего-то добавили мелочь, а свежей версии всё нет и нет. «Тестируют» что-то разработчики. Думаю, следует обстоятельно рассказать, «почему, что и как», дабы непосвящённые люди понимали «кухню» разработки коммерческого софта.
Итак, начнём сначала.
Миф №1. Представим себе, что сейчас успешно работает какая-то версия нашей программы. Всё хорошо, все пользователи довольны, а мы (разработчики) думаем, чего бы такого крутого нового сделать.
Реальность. В действительности, если программа установлена не на двух компьютерах, дома и на работе, а на десятках тысяч, как MyChat — проблемы и неприятности будут сыпаться каждый день, неослабевающим потоком. Большие и маленькие ошибки, недоработки, несовместимости с разными программами, нюансы работы в разных операционных системах, при разных настройках сети, антивирусов (я их люблю отдельно 🙂 ), файрволов и прочего добра.
То есть, если версия более-менее стабильна, нет крупных ошибок — проблемы всё равно будут. И их нужно всё время решать. И разработчики не размышляют, плюя в потолок, чего бы такого крутого и нового придумать, а решают повседневные задачи и проблемы своих пользователей — покупателей продукта. Пусть и не мгновенно. Возможно, закладывая нужный функционал на будущую версию, но всё равно — решают.
Миф №2. Сделать новую «фишку» и выпустить по-быстрому свежую версию — раз плюнуть. А разработчики «морозятся». Ну сделайте нам исправление и дайте версию-обновление, а остальные клиенты, у которых нет такой проблемы — подождут просто выхода новой версии, и всё.
Реальность. Часто, чтобы просто исправить какую-то проблему или доработать нужный функционал, нужны месяцы труда. Мало того, дать версию сейчас клиенту — означает обеспечить совместимость для перехода с текущей версии на промежуточную, а также с промежуточной — на релиз, который будет доступен всем. Чтобы было более-менее понятен объём работы — приведу пример с внедрением шрифтовой разметки в сообщениях, которая уже работает в версии 4.13.
Понедельник, день первый.
Всё начинается с идеи. Один пользователь предложил сделать нам цветовую и шрифтовую разметку сообщений. Мы давно об этом думали, но всё было как-то недосуг, да и запросов серьёзных не было от клиентов. Теперь — есть. Решено, делаем.
Делать разметку, как в форумах, используя BB-коды, как-то несолидно. Во-первых, нужно как в нормальных текстовых редакторах, в режиме WYSIWYG. Нажал кнопочку — шрифт жирный, нажал другую — зелёный, третью — по правому краю, и так далее. А во-вторых, если сделать BB-кодами, большая часть пользователей не сможет ими пользоваться. Это сложно для обычных людей, коих на порядки меньше, чем гиков. Значит, придумываем интерфейс, функции и расположение кнопок. Сделали с десяток разных вариантов и остановились на панели инструментов, которая будет скрыта по умолчанию, чтобы не загромождать экран, а включаться только тогда, когда нужно будет использовать эту самую разметку. Ну и, ясное дело, быстрые клавиши никто не отменял. Ctrl+L, Ctrl+R, Ctrl+B и так далее. Они должны работать. Забегая вперёд, покажу, что из этого вышло:
Нужно сказать, что мгновенно придумать готовый интерфейс получается только у гениев, обычно это долгий труд, перебирание вариантов и куча потраченного времени.
Вторник, день второй.
Разрабатываем технологию разметки, как это будет работать в окошке воода сообщений, как будет отрисовываться в окне истории полученных и отправленных сообщений, как формировать пакеты данных для отправки на сервер, как обрабатывать полученные данные и так далее.
Пятница, день пятый.
Технология вроде бы опробована, функционировать может. Теперь планомерно начинаем реализацию всех нужных нам методов. Панель форматирования приобрела вот такой вот вид:
Пришлось переделать часть «быстрых» клавиш, которые уже были заняты, для того, чтобы у пользователей не было «ломки». Например, общепринятая комбинация клавиш Ctrl+R в Miscrosoft Word — это выравнивание текста по правому краю. В MyChat же это была конвертация набранного текста в неверной раскладке («Ghbdtn» -> «Привет»).
Понедельник, день восьмой.
Реализовываем разметку жирный/наклонный/подчёркнутый/зачёркнутый шрифт. Разбираемся с динамическим формированием стилей текста, когда разные стили накладываются друг на друга.
Вторник, день девятый.
Реализовываем выравнивание текста по абзацам. Слева, справа, по центру, по ширине. Новые права на сервере для включения/отключения функции шрифтовой разметки сообщений на клиентах. На это уходит два дня.
Четверг, день одиннадцатый.
Цвет текста, фона, фон абзацев. Очистка стилей после отправки сообщений. Рефакторинг функций рендеринга текста во всех окнах чата с учётом новой технологии. Опция в настройках для отключения разметки входящих сообщений, чтобы клиент имел возможность получать текст с сервера без форматирования, как раньше.
Понедельник, день пятнадцатый.
Изменяемый размер шрифта сообщений, отступы для текста, перенос функционала в приваты и оповещения. Изменение серверной и клиентской баз данных для хранения оповещений с учётом шрифтовой разметки. Подготовка «нулевых» баз данных клиента и сервера с учётом новых изменений для инсталляторов MyChat Client и MyChat Server. Дополнения к функциям экспорта и импорта настроек клиента чата.
Среда, день семнадцатый.
Специальный парсер сообщений, который преобразовывает внутренний код сообщений MyChat в «удобоваримую» для человека форму, чтобы можно было передавать текст сообщений в плагины и обратно, в MyChat клиент. Отладка, тестирование. Изменения в автоматической системе обновления базы данных сервера и клиента для новой версии. Ещё 4 дня.
Понедельник, день двадцать второй.
А у нас ещё есть история отправленных и принятых сообщений. На клиенте чата. В каналах, приватах, принятые и отправленные оповещения. Надо обновить базу данных истории сообщений, чтобы она была в новом формате. У меня лично, например, основная база клиента, в котором я постоянно общаюсь по рабочим вопросам, создана была в 2009 году. В базе истории находится 208 тысяч сообщений на сегодняшний день. И это всё нужно сконвертировать в автоматическом режиме, чтобы обновление старых клиентов прошло максимально гладко. Потеря истории сообщений недопустима.
Вторник, день двадцать третий.
Продолжаем «пилить» обновление базы данных, тестируем алгоритмы конвертации, делаем локализацию интерфейса на украинский и английский языки (названия кнопок и всплывающие подсказки панели форматирования текста). Реализация «быстрых» клавиш для разметки текста.
Итого — минимум три недели на «простенькую фишку». И работы ещё полностью не завершены. Помним, что это только одна из новых возможностей, а в готовящейся версии их как минимум несколько.
Так что, несмотря на кажущуюся простоту создания программного обеспечения, это большой и сложный труд.