воскресенье, 2 ноября 2025 г.

Используем git для отправки патчей в LibreOffice

Это больше для себя памятка. Ни для кого с минимальным опытом программирования всё ниженаписанное не новость =)

Итак в терминале, убедившись, что мы в каталоге с исходным кодом проекта:

git pull - синхронизируем локальный исходный код с сервером

git checkout -b <branch_name> origin/master - создаем ветку

Делаем наш патч

make check - гоняем тесты для патча

git commit - записываем правки в историю

./logerrit submit master - коммитим патч в геррит на ревью

Если надо патч поправить после ревью или по любой иной причине:

git checkout <branch_name> - переходим в нашу ветку с патчем

Правим патч, чтобы стало как надо

git commit --amend -a - обновляем (!!! это важно !!!) правки в истории

./logerrit submit master - коммитим обновлённый патч в геррит на ревью

вторник, 28 октября 2025 г.

TDF объявили о найме еще трёх программистов

Какое счастье-то. TDF объявили о найме еще трёх программистов:

Для улучшения работы с макросами, включая исправления багов, допиливание совместимости с VBA и нормальную работу с Python

Для улучшения Base (и мне это кажется пустой тратой ресурса, в текущих реалиях никто не юзает однопользовательские БД локально, хватает электронных таблиц) 

Для улучшения UI с упором на macOS (мне кажется, что эта вакансия была определённо заточенной под Патрика, но что-то ничего не слышно, чтобы его наконец наняли)

Я очень надеюсь, что дополнительные товарищи программисты будут таки наняты и сделают LibreOffice ещё круче =) 

PS: по ссылкам есть информация, как с ними связаться, если вдруг вы пишете код на плюсах и желаете поработать над проектом и получать за это деньги =)

воскресенье, 10 августа 2025 г.

Маркус Морхард вернулся и сообщил о своей работе над фичей в Calc, аналогом "форматировать как таблицу" из Excel

Markus Mohrhard - это один из старых разработчиков LibreOffice, со срача с которым я начинал свое вхождение в проект. Последние много лет он был неактивен, но вот недавно он объявился, сделал пару патчей, а сегодня написал письмо в список рассылки о том, что делает фичу для Calc, аналог функции "форматировать как таблицу" из Excel.

Вот кривой перевод его сообщения (я читаю архив рассылки, а там нет скриншотов, о которых он говорит в письме):

"Я немного поэкспериментировал с реализацией поддержки стилей таблиц Calc, включая поддержку OOXML. Я не очень доволен некоторыми решениями в дизайне, поэтому хотел узнать мнение других (разработчиков), прежде чем тратить на это время.

Код находится в ветке feature/calc-table-styles.

Прилагаю два скриншота, показывающих сравнение рендеринга моего тестового документа в MS Excel и текущего рендеринга в Calc.

Обратите внимание, что это (изменение) также включает в себя ряд связанных улучшений диапазонов базы данных, включая небольшую боковую панель со свойствами стилей диапазонов/таблиц базы данных, дескриптор для изменения размера диапазонов базы данных при их выборе и скрипт для генерации информации о стиле OOXML по умолчанию, чтобы мы могли легко использовать их из кода..."

И там в письме дальше длинный список того, что надо бы ещё сделать в этом направлении, вы не думайте, что он выкатил готовую фичу прям =) Но всё равно это очень хорошее начинание, в свое время Маркус делал механизм автообновления для LibreOffice, который в итоге всё же допилили и в 25.2 он уже работает, так что и с этой фичей случится тоже самое, рано или поздно.

пятница, 16 мая 2025 г.

GSoC 2025 и LibreOffice

В этом году LibreOffice также принимает участие в программе GSoC. Заявлены следующие проекты и исполнители по ним:

  • Adam Seskunas - перепишет построитель отчетов для Base с Java на C++
  • Karthik Godha - добавит новый диалог для настройки стилей таблиц Writer и Calc (учитывая, что стили таблиц и там и там не существуют толком, то решение более, чем странное, делать UI для функционала, которого в общем-то нет)
  • Devansh Varshney - реализует автодополнение и подсказки при написании кода макросов в Basic IDE
  • Manish Bera - реализует автодополнение при написании кода макросов на Python (и мне не очень-то понятно, как это будет работать во внешних редакторах, потому что LibreOffice своего едактора кода для Python не имеет, а Jim не смог завершить свой патч)
  • Mohamed Ali Mohamed - реализует биндинг для языка Rust
  • Ujjawal Kumar - добавит возможность импорта файлов с разметкой Markdown в LibreOffice
  • Shardul Vikram Singh - переработает механизм отображения слайд шоу в Impress на использование примитивов DrawingLayer (это что-то очень низкоуровневое, зато может за собой тысячу регрессий потянуть).

Менторить указанных выше товарищей будут Thorsten Behrens, Stephan Bergmann и Sarper Akdemir из allotropia; Rafael Lima; Jonathan Clark, Heiko Tietze, Xisco Faulí, Michael Weghorn и Hossein Nourikhah от самого фонда TDF.

Пожелаем им всем удачи!

пятница, 9 мая 2025 г.

суббота, 1 февраля 2025 г.

Xisco Fauli добавил кучу новых функций в Calc

Из достаточно длинного списка ещё не реализованных функций электронных таблиц MS Excel в будущий LibreOffice Calc 25.8 уже были добавлены следующие:

  • CHOOSECOLS
  • CHOOSEROWS
  • DROP
  • EXPAND
  • TAKE
  • TOCOL
  • TOROW
  • WRAPCOLS 
  • WRAPROWS
  • VSTACK
  • HSTACK

Я уж не знаю, чего Xisco решил этим заняться, так-то он QA в проекте, однако вот решил и сделал. Честь ему и хвала. Посмотрим, может он и остальные функции тоже запилит =)

Обновил пост еще парой функций

воскресенье, 1 декабря 2024 г.

Выпуск LibreOffice 25.2 alpha 1 - что нового?

Xisco Fauli в QA блоге проекта написал, что первая альфа LibreOffice 25.2 доступна для тестирования. Скачать можно по ссылкам, а новшества версии якобы написаны в РелизНотес.

Глянул я на тот РелизНотес, а там почти пусто =)) Разработчики забыли написать туда, свои активности или может вся работа делалась"под капотом" и юзеру просто не видна? Это отношение разрабов к наполнению релизнотесов в проекте мне всегда не нравилось, но и заставить их никто не может, такие дела...

вторник, 26 ноября 2024 г.

Управление макросами в LibreOffice - мы хотим перемен

Все, кто когда-либо сталкивался с макросами в LibreOffice, сталкиваются с забавной и раздражающей вещью - наличием кучи диалогов для выполнения одних и тех же действий для каждого языка программирования макросов, который поддерживает наш проект. В главном меню это выглядит вот так:

Мало разделения по языкам, так ещё и управление диалогами (которые можно создавать для макросов внутри LibreOffice) - это отдельная команда и свой диалог, выполнение макроса - это свой диалог.

У меня в свое время появилась идея, что все эти дела, связанные с управлением макросами должны быть в одном месте, в одном диалоге главном, который бы мог отображать макросы на всех ЯП, диалоги, и позволял бы выполнять действия над ними всеми в зависимости от языка и типа объекта. И я написал баг репорт - https://bugs.documentfoundation.org/show_bug.cgi?id=120658.

Идея единого диалога выглядела вот так, всё в одном диалоге:

Он был воспринят не очень однозначно и долго висел без какой-либо реакции (как и большинство наших баг репортов, кстати). Я сам-то не могу код на плюсах писать, а вот приставать к людям, которые код писать могут - это я могу. И вот мне повезло, я дважды просил Jim Raykowski глянуть, может ли он это реализовать и во второй раз он согласился и таки написал патч на почти четыре тысячи строк, который реализует мою идею. Вот ссылка на патч - https://gerrit.libreoffice.org/c/core/+/176254.

А вот видео - результат реализации:

В настоящее время патч ещё не влит в кодовую базу, идет процесс код-ревью. После того, как патч будет смержен, функционал надо будет потестить и потом надо будет поправить некоторые вещи в UI.
А самое забавное, что у нас нет под капотом механизма, который бы позволял управлять макросами на Python также, как идёт управление макросами на Basic. И в новом диалоге при выбранном макросе Python - выводится ошибка.
И дальнейшим планом видится именно допиливание нашего фреймворка для управления макросами так, чтобы можно было работать с Python макросами без лишних движений в виде установки расширения APSO и прочего. Но это тема для отдельного поста =)

среда, 9 октября 2024 г.

Для тех, кто захочет контрибьютить в LibreOffice

Этот пост - просто информация для желающих, с чего начинать контрибьютить в проект LibreOffice.

Вся актуальная информация на английском языке, но для программиста это не должно стать препятствием. Также вы уже должны знать С++, учить вас программировать с нуля здесь никто не будет.

Итак, для тех, кто захотел написать пару строк кода для LibreOffice:

Начать следует с прочтения вот этой ссылки - https://wiki.documentfoundation.org/Development/GetInvolved. Это ровно информация для новичков в проекте, как скачать исходники, как собрать свой билд, какие зависимости, для каких IDE есть предварительные настройки и как их включить, какой код стайл мы используем, как пишем патчи и как их засылаем. Обратите внимание, вам нужно достаточно современное железо с многоядреным процессором (4 и более ядер) и большое количество ОЗУ (8 или более Гб), потому что первоначальная сборка на 4-х ядерном Core i5 2,5 ГГц сборка занимала ровно два часа времени. Также необходимо около 30Гб сводобного места на диске (который уже должен быть SSD).

После того, как вы настроите окружение, встанет вопрос, а с чего же можно начать знакомиться с проектом. У нас есть список так называемых изи хаков именно для этой цели. Обычно это баг репорт, в котором достаточно подробно расписано что надо сделать и указана ссылка на конкретный файл или даже строку в исходниках. Вот этот список - https://wiki.documentfoundation.org/Development/EasyHacks/by_Required_Skill/Skill_C%2B%2B. Обратите внимание, список разбит на три группы по сложности, выбирайте себе любую цель и пробуйте написать патч.

Если вы достаточно опытный разработчик и вам сразу все понятно и возможно просто интересна какая-то конкретная тема, например производительность, утечки памяти, проблемы в поддержке каких-то форматов, UI, новые фичи - у нас есть багзилла с бесконечно длинным списком проблем. Также у нас есть некая сортировка проблем по темам, мы называем это МЕТА багами, найти их можно вот здесь -  https://wiki.documentfoundation.org/QA/Tracking_Bugs. Там есть фильтры, можно отсортировать то, что вам надо и покопаться в конкретных баг репортах по выбранной теме.

После написания патча, он должен попасть к нам в геррит - https://gerrit.libreoffice.org/q/status:open+-is:wip+branch:master. Конечно мы используем Git, однако у нас имеется возможность поправить пару строк, используя веб-интерфейс. До пуша в геррит вы обязаны прогнать свой патч, используя команду make check - это позволит вам локально прогнать все юнит-тесты. В геррите патч проверит бот Дженкинс, который также гоняет юнит-тесты для каждой из популярных десктопных ОС, а затем ваш патч должен пройти код-ревью и кто-то из опытных разработчиков с правами должен вам поставить +2 и замержить ваш патч.

Найти разработчиков всегда можно в рабочие часы по средне-европейскому времени в IRC канале - https://web.libera.chat/?chan=#libreoffice-dev. Общение на английском языке.

Также можно задать технический вопрос в список рассылки для разработчиков (также на английском языке) - https://wiki.documentfoundation.org/Development/Mailing_List

По каким-то организационным вопросам можно спросить у меня в Телеграм (пока его не прибили), ник @Kompilainenn.