TL;DR: Haiku может стать великолепной настольной операционной системой с открытым исходным кодом. Мне правда этого хочется, но требуется еще много исправлений.
Два дня я изучаю Haiku, неожиданно хорошую операционную систему. Сейчас третий день, а мне эта операционка нравится так сильно, что я непрестанно размышляю: как бы сделать ее операционной системой на каждый день? В плане общих идей мне больше нравится Mac, но вот беда: она поставляется без открытого исходного кода, и приходится искать альтернативы с открытым исходным кодом.
За последние лет 10 это чаще всего означало Linux, но и у него свой набор проблем.
Операционная система Haiku, представленная на DistroTube.
Я попробовал Haiku, как только о ней узнал, был сразу же впечатлен — особенно с рабочим окружением, которое "просто работает", а также явно намного превосходит любое рабочее окружение для Linux, которые я знаю концептуально. Хочу-хочу-хочу!!!
Давайте на третий день посмотрим реальную работу!
Отсутствующие приложения
Доступность приложений — весьма "судьбоносный" аспект любой операционной системы, старая тема. Коль скоро речь идет о Haiku, мне известно, что для большинства случаев есть разные доступные варианты.
Однако я до сих пор не могу найти приложения для моих повседневных нужд:
- редактор разметки (к примеру Typora). Конечно, есть CuteMarkEd, но у него, похоже, нет ни кнопок, ни клавиатурных сокращений для разметки текста. Также есть Ghostwriter, но у него нет клавиатурного сокращения для пометки текста в виде встроенного кода, или блока кода.
- захват экрана в анимированный GIF (к примеру Peek). Есть BeScreenCapture, но он такое не умеет.
- ПО для 3D-принтеров (к примеру, Ultimaker Cura, PrusaSlicer).
- 3D САПР (к примеру FreeCAD, OpenSCAD, или встроенный в Onshape). Есть LibreCAD, но он только 2D.
Модель разработки
Что же нужно Haiku для успеха, с точки зрения доступных приложений? Конечно же, привлечь разработчиков.
На текущий момент командой разработчиков Haiku, безусловно, проделана огромная работа по внедрению различных популярных приложений, однако для полного успеха, как платформы, нужна возможность легкого создания версий приложений для Haiku. Cборка приложения для Haiku должна быть, в идеальном случае, еще одним вариантом в существующей матрице сборки Travis CI или GitLab CI. Ну как такая компания, как Ultimaker, создатель популярного ПО Cura для 3D-принтеров с открытым исходным кодом, пойдет на сборку своих приложений для Haiku?
Я убежден, что классический подход с "сопровождающим", который собирает и поддерживает пакеты для определенного дистрибутива Linux, не масштабируется при большом списке приложений. Можно поспорить, есть ли ПО для 3D-принтеров в этом списке, но, к примеру, ПО для организации расписания конкретной школы — находится. Что предлагает Haiku для таких приложений? (Обычно они написаны с применением Electron, доступны для всех операционок, под Linux чаще всего обернуты в AppImage, что означает доставку всем пользователям без особых проблем).
LibreOffice
Понятно, что наличие LibreOffice для Haiku — немалый подвиг, о котором пользователи BeOS могли только мечтать, однако не все идеально.
В моем случае (Kingston Technology DataTraveler 100 USB stick) для запуска требуется порядка 30 секунд, а разработчики подсказали, что обычный запуск приложений не должен превышать 4-5 секунд (в случае использования обычного жесткого диска [на моем SSD все запускалось меньше секунды, — прим. переводчика]).
Хотелось бы как-то видеть прогресс запуска большого приложения, к примеру, "прыгающую иконку", смену курсора, или что-то еще в этом роде. Заставка LibreOffice появляется только через несколько секунд, а до того вы и не знаете, что происходит.
Прыгающие иконки приложений как признак того, что приложения запущены.
- Клавиатурные сокращения, показываемые в меню, ошибочны (подписано Ctrl+O, а по факту Alt+O, я проверял: Alt+O работает, а Ctrl+O — нет).
- Alt+Z не работает (к примеру, в Writer).
- Проблема “Application LibreOffice has aborted the shutdown process” [это так задумано, — прим. переводчика].
Время запуска приложений
ПРИМЕЧАНИЕ: пожалуйста, воспринимайте данный раздел с долей критики. Производительность на самом деле отличная, если полагаться на мнение других людей. У меня результаты сильно отличаются… предполагаю, что особенности моей настройки и сделанные до сих пор измерения антинаучны. Буду обновлять этот раздел по мере появления новых идей / результатов.
Производительность запуска (не нативных) приложений… не так уж велика, разница примерно в 4-10 раз. Как вы можете заметить, было использовано только 1 ядро процессора при запуске не родных приложений, по непонятной мне причине.
Как я вижу скорость запуска приложений.
-
Запуск Krita занимает порядка 40 секунд на флешке Kingston Technology DataTraveler 100, подключенной к порту USB2.0 (запуск Krita AppImage занимает долю секунды на Xubuntu Linux Live ISO через USB2; нужно больше тестов). Поправка: Около 13 секунд на SATA SSD с отключенным ACPI.
-
Запуск LibreOffice занимает 30 секунд на флешке Kingston Technology DataTraveler G4, подключенной к порту USB2.0 (доля секунды на Xubuntu Linux Live ISO через USB 2; нужно больше тестов) Поправка: Меньше 3 секунд на SATA SSD с отключенным ACPI.
Также я слышал, что новейшие разработки улучшат производительность на SSD в более чем 10 раз. Жду, затаив дыхание.
Другие рецензенты постоянно хвалят Haiku за бодрую работу. Интересно, что не так с моей системой? Поправка: да, сломан ACPI на моей системе; если отключить — система работает шустрее.
Я сделал несколько тестов.
#
# Linux
#
me@host:~$ sudo dmidecode
(...)
Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Product Name: OptiPlex 780
me@host:~$ lsusb
Bus 010 Device 006: ID 0951:1666 Kingston Technology DataTraveler 100
# On a USB 2 port
me@host:~$ sudo dd if=/dev/sdc1 of=/dev/null bs=64k count=4096
4096+0 records in
4096+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 7.03517 s, 38.2 MB/s
# On a USB 3 port
me@host:~$ sudo dd if=/dev/sdc1 of=/dev/null bs=64k count=4096
4096+0 records in
4096+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 2.08661 s, 129 MB/s
#
# Haiku - the exact same USB stick
#
/> dmidecode
# dmidecode 3.2
Scanning /dev/misc/mem for entry point.
# No SMBIOS nor DMI entry point found, sorry.
# On a USB 2 port
/> dd if=/dev/disk/usb/1/0/raw of=/dev/null bs=64k count=4096
4096+0 records in
4096+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 7.44154 s, 36.1 MB/s
# On a USB 3 port
/> dd if=/dev/disk/usb/1/0/raw of=/dev/null bs=64k count=4096
4096+0 records in
4096+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 7.47245 s, 35.9 MB/s
Для полной прозрачности я проверял все на двух разных машинах c Linux и Haiku. Если нужно — повторю тесты на аналогичной машине. Все еще непонятно, почему приложения запускаются медленнее, чем через usb2.0 на Linux. Обновление: в syslog этой машины есть много ошибок, связанных с USB. Так что приведенные выше результаты могут быть нетипичными для Haiku в целом.
Как гласит известная поговорка: не можешь измерить — значит, не управляешь. А раз есть желание улучшить производительность, то, думаю, набор тестов в порядке :-)
Сочетания клавиш
Для перебежчиков с других операционок у Haiku все просто замечательно, когда дело доходит до сочетаний клавиш. Лично мне больше всего нравятся сочетания клавиш в стиле Mac, когда удерживаешь клавишу слева от пробела («Ctrl» на клавиатурах Apple, «Alt» на других) при наборе буквы или цифры. Поскольку Haiku действительно хорошо работает в этой области, я чувствую, что могут быть рассмотрены следующие варианты:
Сочетания клавиш на рабочем столе и для него
Мне нравится, что можно щелкнуть иконку и нажать Alt-O, чтобы открыть ее, или использовать более традиционное сочетание Alt-вниз.
Точно так же было бы неплохо, если бы для перемещения файла в корзину можно было нажать Alt-Backspace, в довесок к Alt-T.
Для отображения рабочего стола: было бы неплохо применять Alt-H — для того, чтобы «Скрыть», и Shift-Alt-H — чтобы «Скрыть все». И, может, неплохо было бы ввести сочетание Shift-Alt-D — чтобы «Показать рабочий стол».
Cочетания в диалоговых окнах
Открываю StyledEdit, ввожу текст. Жму Alt-Q. Программа спрашивает, следует ли сохранить. Жму Alt-D для того, чтобы «Не сохранять», Alt-C для «Отмены». Но это не работает. Пробую использовать клавиши со стрелками, чтобы выбрать кнопку. Тоже не работает. Повторяю те же действия в приложении на основе Qt. Здесь, как минимум, работают клавиши со стрелками для выбора кнопки. (Управляющие клавиши для выбора кнопок изначально использовались в Mac OS X, но разработчики с тех пор, похоже, забыли об этой возможности.)
Сочетания для создания снимков экрана
Было бы просто отлично, если бы можно было нажать Alt-Shift-3 для снимка всего экрана, Alt-Shift-4 для появления курсора, который позволит выбрать область экрана, и Alt-Shift- 5 для текущего активного окна с его оформлением.
Интересно, настраивается ли такое вручную, но скорее всего это невозможно. По крайней мере, такая попытка у меня результата не дала [надо было попробовать обернуть в скрипт! — прим. переводчика].
Почти. Но не совсем. Игнорируется "-bw", плюс надо дополнительные настройки по умолчанию.
Другие вещи на клавиатуре
Чувствуется забота разработчиков, поэтому продолжу описывать свой опыт работы с клавиатурой в Haiku.
Невозможно ввести национальные символы
Символ "`" — особый, он может быть как частью другого символа (к примеру "e"), так и самостоятельным. В разных операционках его обработка также различается. К примеру, я не могу ввести данный символ на немецкой клавиатуре в KWrite; если попытаться его ввести — ничего не происходит. При вводе этого же символа в QupZilla получается ">>". В родных приложениях символ вводится, но нужно двойное его нажатие, чтобы он появился. Чтобы ввести его трижды (обычно это требуется при разметке блоков кода, я его так постоянно набираю), надо нажать кнопку 6 раз. В Mac ситуация обрабатывается более интеллектуально (достаточно трех нажатий при сохранении обычного ввода диакритических символов).
Приложения Java
Отсутствует JavaFX? На помощь приходит Java, не так ли? Ну не совсем:
pkgman install openjdk12_default
/> java -jar /Haiku/home/Desktop/MyMarkdown.jar
Error: Could not find or load main class Main
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application
Пойдем другим путем:
/> /Haiku/home/Desktop/markdown-writer-fx-0.12/bin/markdown-writer-fx
Error: Could not find or load main class org.markdownwriterfx.MarkdownWriterFXApp
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application
Оказывается, в реальной жизни приложения на java не такие уж и переносимые, как обещают в рекламе. Есть ли JavaFX для Haiku? Если да — почему не устанавливается вместе с openjdk12_default?
Не работает двойной клик по jar файлу
Удивлен, что Haiku не имеет понятия, как обработать двойной клик по файлу .jar.
Bash ведет себя странно
Поскольку есть bash
, ожидалось, что pipes будут работать:
/> listusb -vv > listusb.txt
bash: listusb.txt: Invalid Argument
Заключение
Почему я пишу эти статьи? По моему мнению, миру реально нужна операционная система с открытым исходным кодом вроде Haiku, явно ориентированная на ПК, и еще потому, что меня все больше раздражает тот факт, что рабочие окружения для Linux не действуют сообща. Я не спорю, что для создания желаемого пользовательского окружения для ПК нужно совершенно другое ядро или можно получить аналогичное окружение поверх ядра Linux, но мне интересно, что скажут по этому поводу эксперты по ядрам. А пока я просто балуюсь Haiku и делаю заметки в надежде, что они окажутся полезны для разработчиков Haiku и / или заинтересованной общественности.
Попробуйте сами! Ведь проект Haiku предоставляет образы для загрузки с DVD или USB, формируемые ежедневно. Для установки достаточно скачать образ и записать его на флешку с помощью Etcher.
Появились вопросы? Приглашаем вас в русскоязычный telegram-канал.
Обзор ошибок: Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS
От автора перевода: это третья статья из цикла про Haiku.
Список статей: Первая, Вторая.
Автор: Finnix