пятница, 1 сентября 2017 г.

LibreOffice и GSoC 2017. Результаты

Как вы знаете, Google каждое лето проводит мероприятие Google Summer of Code, в котором студенты имеют возможность заработать денег путем написания кода по заявкам от проектов с открытым исходным кодом. 2017 год исключением не был и проект LibreOffice получил 9 "грантов" для реализации студентами. Ниже имена героев и описание проектов и достигнутых результатов:
Aleksas Pantechovskis - реализация фильтра импорта QuarkXPress. Цель этой задачи - сделать реверс инжиниринг формата документа, созданного в QuarkXPress 4 (и более ранних версиях, 3.1-3.3, они похожи) и реализовать фильтр импорта - библиотеку C++ на основе librevenge. Начиная с QuarkXPress 5, его файлы шифруются, но, последней широко используемой версией была именно версия 4. Задача выполнена, создана библиотека импорта libqxp
Вот результат работы фильтра импорта на сегодня:
Gautam Prajapati - улучшение LibreOffice для платформы Android. Цель этой задачи - улучшение клиента Android LibreOffice, устранить его самые неприятные ошибки, добавить новые функции в средство просмотра документов и экспериментальную часть для редактирования, улучшить UI / UX, производительность и сделать его более простым и дружественным для разработчиков, улучшить документацию и встроенные комментарии. Задание было таким размытым, что можно считать его выполненным, вот здесь отчет студента о его работе, которая была больше технической, чем нацеленной на какие-то заметные простому пользователю вещи.
Grzegorz Araminowicz - улучшение в работе фильтра импорта SmartArt в LibreOffice. Цель - понятна без дополнительной расшифровки. SmartArt - это формат хранения диаграмм в файлах Office Open XML, который был представлен в MS Office 2007. Он позволяет отделять данные от способа представления, в результате чего образуются сложные диаграммы, созданные из записей маркированного списка. В настоящее время LibreOffice использует предварительно отрендеренную версию диаграммы, для MS Office 2010 и новее. Диаграммы из файлов MS Office 2007 часто выглядят пустыми. Целью проекта является расширение поддержки загрузки и компоновки диаграмм SmartArt. Это сделает LibreOffice более совместимым с OOXML-файлами и позволит в конечном итоге получить полную функциональность SmartArt, включая редактирование и экспорт. Проект был запущен как улучшающий импорт формата VML, но вскоре был изменен. Задача выполнена, реализовано достаточно большое количество необходимых для импорта фич из SmartArt. Вот отчет в списке рассылки разработчиков от студента.
Aditya Dewan - улучшения для LibreOffice Online. Цель - сделать важные функции, существующие в настольной версии LibreOffice и в других ведущих офисных пакетах, доступными для LibreOffice Online. В результате работы в LibreOffice Online была реализована интерактивная горизонтальная линейка во Writer Online и была расширена текущая реализацию WOPI для поддержки функциональности «Сохранить как». Ниже приведена демонстрация работы линейки:
Mohammed Abdul Azeem - миграция из старого Parser в FastParser (речь идет о парсере XML). Большая часть импорта ODF использует устаревший парсер. FastParser является потоковым, основанным на токенах и он быстрее, чем предыдущий парсер. Разработчики стремятся использовать FastParser почти везде и сделать некоторые улучшения в самом FastParser. Что выполнено в рамках проекта: распаковка zip вынесена в отдельный поток, все независимые контексты заменены на использование быстрых токенов, сделано много оптимизаций и рефакторинга кода, исправлены некоторые ошибки. Что еще пока в работе: замена XSAXDocumentBuilder2 на XFastDocumentHandler. Первый есть в нескольких модулях (sc, sw, starmath, sd и т.д.) и приводит к сбою на множестве тестовых примеров. Что не сделано: наблюдается несколько мелких проблем, для которых нужно написать тестовые примеры, преобразование оставшихся устаревших контекстов. Я не уловил, считается ли эта задача выполненной по меркам GSoC, но вот отчет студента о проделанной работе.
Varun Dhall - замена бинарного буфера обмена EditEngine на фильтр ODF. Проект включает в себя модификацию различных модулей, таких как editeng, xmloff, svl, sfx, dtrans и приложений, таких, как Draw / Impress / Calc для изменения буфера обмена. Перед отправкой данных в фильтр экспорта необходимо обработать правильный выбор текста. Для предотвращения регрессий также требуются новые модульные тест. Проект завершен, основные достигнутые цели: формат StarOffice больше не используется для операций копирования / вставки, сериализация SfxItemPool не используется нигде вне таблицы Auto-Formats, поля-гиперссылки копируются должным образом без потери информации, весь неиспользуемый код сериализации удаляется из всех модулей и приложений, что решает проблему ремонтопригодности. Отчет студента о завершении проекта доступен по ссылке.
Muhammet Kara - переработка диалога Настройка. Главное достижение этого проекта - была добавлена возможность для поиска необходимых пользователю опций в диалоге Настройка, которые он бы хотел добавить на панель инструментов или в меню или назначить сочетание клавиш, чтобы ему не приходилось вручную листать бесконечные списки или думать, в каком же разделе находится необходимый элемент. Также была проведена чистка кода. Ранее вся функциональность диалога была расположена в одном файле на более, чем 5000 строк кода. И как финал вот ссылка на видео с тем, что получилось в итоге.
Ximeng Zu - исправление большинства раздражающих ошибок для LibreOffice Android Viewer и добавление нового функционала. Что было сделано в рамках проекта: реализована поддержка файлов, защищенных паролем; добавлена панель адреса и формул; реализована вставка изображений, включая выбор из галереи и получение фото с камеры; динамический DPI для Calc; исправлена неправильная обработка внутренних ссылок, как внешних; некоторые исправления ошибок. Вот ссылка на отчет студента в списке рассылки.
Akshay Deep - улучшение диалога Специальные символы. Об этом я уже писал чуть ранее вот здесь. Продублирую здесь ссылку на его блог с отчетом о работе. Цель проекта достигнута.

PS: я некоторые специфично программистские вещи просто не знаю, как сказать по-русски, поэтому если кто-то почитает оригиналы и меня поправит по моему тексту, то я буду только благодарен.

1 комментарий:

  1. Ещё очень неплохо было бы наконец сделать возможность создавать диагональные границы в ячейках таблицы во Writer'е или хотя бы отображать их при импорте. Причём в Calc диагональные ячейки уже давно есть.

    ОтветитьУдалить

Внимание! Сообщения проходят премодерацию!