В качестве хорошего примера совместных усилий с открытым исходным кодом группа из четырех разработчиков прокладывала путь для студентов-стажеров этого лета, чтобы добавить совместное редактирование в LibreOffice.
Как отмечает Майкл Микс в своем недавнем посте в блоге, в настоящее время совместное редактирование является одной из «последних, больших недостающих функций» в LibreOffice.
Ведется экспериментальная работа по устранению этого пробела, и это одна из интересных задач в списке для Google Summer of Code, который в настоящее время находится на стадии, когда студенты могут подать заявку и определить проекты, над которыми они хотят работать.
Подход к добавлению совместного редактирования в LibreOffice заключается в использовании платформы обмена мгновенными сообщениями с открытым исходным кодом Telepathy. Это предлагает API для протоколов обмена мгновенными сообщениями, которые будут использоваться в качестве канала связи между приложениями, а не людьми.Конечно, было бы довольно легко определить и внедрить новый протокол, позволяющий компонентам LibreOffice общаться друг с другом, но это означало бы необходимость реализации инфраструктуры для поддержки связи, т. Е. большого количества серверов. Используя протокол обмена мгновенными сообщениями, LibreOffice может просто использовать существующие серверы для передачи сообщений. Конечно, есть небольшая проблема с поставщиками мгновенных сообщений, позволяющими пропускать трафик LibreOffice.
Работа по подключению телепатического кода к ядру LibreOffice была начата несколько недель назад Эйке Ратке из RedHat. Чтобы продвинуться вперед, в офисах Collabora в Кембридже был организован «быстрый взлом», где Уилл Томпсон (Collabora) присоединился к Эйке плюс Майклу Миксу и Робу Маккуину из Suse.
Микс описывает процесс:
Поэтому после некоторого первоначального обзора дизайна от Уилла мы с радостью взломали его — я потратил большую часть своего времени на повторное погружение в основной код calc. Легко забыть, насколько героичны хакеры, работающие в верхней части LibreOffice, — в конце концов, нижние уровни системы являются общими и имеют больше возможностей для использования и полировки. Я покопался в коде представления и убедился, что использовался объект ScDocFunc — разделение больших операций (таких как ввод ячейки) на ряд более мелких и простых операций в транзакции отмены в модели.
Тем временем Эйке работал над тем, чтобы наши модульные тесты работали с различными ужасами интеграции в основной контур, а основные каналы связи создавались и отправляли сообщения от А до В. Затем он подключил это к моей хромой работе по демонстрационному протоколу, чтобы получить сообщения и совместное редактирование.
Will — предоставление бесценного вклада в разработку, помощь в взломе, помощь в отладке, работа с API, «Утверждающий» для обработки входящих запросов на подключение от центра управления полетами, преследовал неясные неправильные взаимодействия с исключениями g_signal и C++, обеспечивал безостановочный энтузиазм и был образцовым хостом.
Мы провели большую часть недели, с понедельника по пятницу, с раннего утра до позднего вечера, запершись в удивительно приятной солнечной комнате, рубя, опустив головы — с редкими разочарованными звуками, качая головой на код, остро нуждающийся в дисциплине, и так далее.
Это видео является доказательством того, что прогресс был достигнут:
Совместные усилия являются доказательством концепции с открытым исходным кодом, хотя и в ситуации, когда корпоративные компании RedHat и Suse жертвуют рабочую силу. Это также отличный пример проекта, в котором может участвовать студент Google Summer of Code, с наставниками, которые уже столкнулись с проблемой и подготовили почву. Однако, как отмечает Микс, «мы подозреваем, что эта [задача] будет довольно популярной», и он призывает потенциальных кандидатов в GSoC взглянуть на других в списке Фонда документов.