diff options
32 files changed, 2155 insertions, 73 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e7e3002 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.hugo_build.lock +public diff --git a/.spellcheck-allow.txt b/.spellcheck-allow.txt new file mode 100644 index 0000000..a14a49d --- /dev/null +++ b/.spellcheck-allow.txt @@ -0,0 +1,89 @@ +AOSP +BSP +CalVer +Dependabot +LTS +Lightbox +ODM +OSDevConf +OpenHands +PEM +PRs +RGB +RSS +RULKC +SCSS +SHA +UI +YAML +backlink +canonicalise +changelog +codespell +cron +dirs +docroot +env +favicon +flavoured +frontmatter +github +hostname +hunspell +inlined +labelled +linux +mailto +md +nginx +og +params +px +repo +roadmap +rsync +rsyncing +rsyncs +rulkc +submodule +toolchain +url +апстрим +Митапы +Форк +агенда +архитектур +бэк +валидируемый +валидны +вендоров +деплой +десктопов +драфты +коммит +коммитит +коммиты +конфиге +мейнтейнеров +мерж +мержа +митапы +патчей +перебилдит +перевыпустили +перегенерировать +прогонятся +продакшн +продакшне +пуше +пушем +разрулит +ревью +репозитории +репозитория +санкционные +удвоений +форк +форка +форке +форки @@ -1,3 +1,3 @@ -# ⚛️ LANDAU Kernel +# ⚛️ LANDAU -**⚡ Linux kernel Advanced for Next-gen Devices & Architectures ⚡** +**⚡ **Linux And Neo-Depositorium Associated Unity** ⚡** diff --git a/_config.yml b/_config.yml index 00aced3..08f844f 100644 --- a/_config.yml +++ b/_config.yml @@ -1,3 +1,3 @@ -title: LANDAU Kernel -description: Linux kernel Advanced for Next-gen Devices & Architectures +title: LANDAU +description: Linux And Neo-Depositorium Associated Unity theme: jekyll-theme-hacker diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..48405c1 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,88 @@ +# ⚛️ LANDAU + +**Linux And Neo-Depositorium Associated Unity** + +--- + +## 🧪 Что такое LANDAU? + +**LANDAU** — это зонтичный проект, объединяющий усилия российского open-source сообщества по развитию ключевых системных компонентов. + +Название проекта отсылает к выдающемуся физику-теоретику, нобелевскому лауреату **Льву Давидовичу Ландау** — создателю научной школы, воспитавшей поколения ученых. Как Ландау объединял физиков вокруг новых идей, так и LANDAU призван объединить разработчиков для создания единой технологической базы. + +--- + +## 🎯 Что мы развиваем? + +LANDAU охватывает широкий спектр open-source проектов, критически важных для системной экосистемы: + +| Проект | Назначение | Статус | +|--------|------------|--------| +| 🐧 **[LANDAU Linux](./landau-linux/)** | Форк ядра LANDAU Linux | ✅ Активен | +| 🖥️ **LANDAU U-Boot** | Форк загрузчика для встраиваемых систем LANDAU u-boot | 🚧 В планах | +| 🔧 **LANDAU EFI** | Поддержка LANDAU UEFI | 🚧 В планах | +| 📦 **LANDAU QEMU** | Эмуляция и виртуализация LANDAU | 🚧 В планах | +| 🏗️ **Другие проекты** | TBD | 🚧 В планах | + +--- + +## 📅 Мероприятия и обсуждения + +Мы проводим митапы и конференции (RULKC Meetup #1, OSDevConf 24/25/26), чтобы собрать мнения инженеров и компаний, определить потребности рынка, вместе спроектировать архитектуру будущего форка. + +### 🎙️ Список событий + +* **[Открытый микрофон #001: «Форк ядра. Инженеры для инженеров, или при чем тут LANDAU»](./open_mic_27_03_2026/)** + * **📅 Дата:** 27 марта 2026 года + * **⏰ Время:** 20:00 + * **📍 Формат:** Очно / Online + * Первая открытая дискуссия о практической инженерной мотивации создания форка, его целях и проблемах, которые он может решить. + +### 🗂️ Архив встреч + +* 📌 **(Скоро)** Материалы и резюме прошедших круглых столов будут появляться здесь. + +--- + +## 🤝 Контакты и сообщество + +### 🌐 Russian Linux Kernel Community + +Проект ⚛️ LANDAU развивается под эгидой сообщества RULKC. Присоединяйтесь к нам! + +| Канал | Ссылка | +|-------|--------| +| 🏠 **Основной сайт** | [rulkc.org](https://rulkc.org) | +| 📧 **Mail** | [rulkc@rulkc.org](mailto:rulck@ruclk.org) | +| 💬 **Telegram-канал** | [https://t.me/linux_kernel_O](https://t.me/linux_kernel_O) | +| 🐙 **GitHub** | [github.com/rulkc](https://github.com/rulkc) | +| 📧 **Mailing List** | [rulkc@linuxtesting.org](mailto:rulkc@linuxtesting.org) | + +| | | +|---|---| +| <a href="http://rulkc.org" target="_blank"><img src="rulkc.png" alt="RULKC" width="120"></a> | **💬 Присоединяйтесь к обсуждению:**<br>Будьте в курсе всех новостей проекта ⚛️ LANDAU и мероприятий RULKC в нашем Telegram-канале:<br>[t.me/linux_kernel_O](https://t.me/linux_kernel_O) | + +<br> + +📌 *Этот сайт — отправная точка для навигации по инициативе LANDAU. Все ключевые документы, анонсы и ссылки на репозитории будут добавляться по мере развития проекта.* + +## 🤝 Сообщество + +LANDAU развивается под эгидой [**Russian Linux Kernel Community (RULKC)**](https://rulkc.org). + +| Канал | Ссылка | +|-------|--------| +| 🏠 **Основной сайт** | [rulkc.org](https://rulkc.org) | +| 📧 **Mail** | [rulkc@rulkc.org](mailto:rulkc@rulkc.org) | +| 💬 **Telegram-канал** | [t.me/linux_kernel_O](https://t.me/linux_kernel_O) | +| 🐙 **GitHub** | [github.com/rulkc](https://github.com/rulkc) | + +<br> + +| | | +|---|---| +| <a href="https://rulkc.org" target="_blank"><img src="rulkc.png" alt="RULKC" width="120"></a> | **💬 Присоединяйтесь к обсуждению**<br>Все новости и анонсы в нашем Telegram-канале | + +--- + +📌 *Этот сайт — центральная точка входа во все проекты LANDAU.* diff --git a/content/landau-linux/_index.md b/content/landau-linux/_index.md new file mode 100644 index 0000000..1da986e --- /dev/null +++ b/content/landau-linux/_index.md @@ -0,0 +1,39 @@ +# ⚛️ LANDAU Linux + +--- + +## 🎯 О проекте + +LANDAU Linux - это **upstream-first форк** ядра Linux, исправляющий и +расширяющий его функционал: + +* 🔄 **Регулярное обновление:** Следование за актуальными версиями ядра Linux +(раз в 2+ месяца). +* 📦 **Приём патчей:** Включение полезных наработок, которые по разным +причинам не попали в оригинальный репозиторий ядра Linux (драйверы, +архитектурные доработки). +* 🖥️ **Поддержка специализированной аппаратуры:** Создание единой ветки ядра +как основы BSP для процессоров различных архитектур (ARM, MIPS, RISC-V, +Эльбрус), аппаратных платформ, потребительской электроники, в том числе +разрабатываемой в России. +* 👁️ **Прозрачность:** Открытый процесс ревью, современный CI и совместное +тестирование. + +Проект решает текущие задачи индустрии: сохраняет и развивает код ядра, борется +с его фрагментацией, а за счет консолидации открытых решений создает синергию +для всех, кто использует Linux в качестве системного ПО. В долгосрочной +перспективе LANDAU Linux станет надежной основой для разработчиков IP-ядер, +ODM-производителей, создателей дистрибутивов и других участников экосистемы. + +--- + +## 📄 Ключевые документы + +| Документ | Описание | +|----------|----------| +| 📋 **[LANDAU Linux Maintenance](./maintenance/)** | Официальный процесс maintenance LANDAU Linux | + +--- + +[⬅️ Вернуться на главную LANDAU](../) + diff --git a/content/landau-linux/maintenance/_index.md b/content/landau-linux/maintenance/_index.md new file mode 100644 index 0000000..865831a --- /dev/null +++ b/content/landau-linux/maintenance/_index.md @@ -0,0 +1,583 @@ +--- +title: "📋 Манифест сопровождения ядра LANDAU Linux" +description: "Описание процесса разработки ядра LANDAU Linux — ветки, релизы, версионирование и сопровождение" +draft: false +--- + +# 📋 Манифест процесса сопровождения ядра LANDAU Linux + +> **LANDAU Linux** — форк <u>ядра Linux</u> с собственной схемой версионирования +> и предсказуемым циклом релизов. Этот документ описывает формальный процесс +> сопровождения (maintenance) проекта. + +--- + +## 🧭 1. Обзор + +### 🎯 Цель + +Обеспечить стабильный, предсказуемый и документированный процесс выпуска релизов +LANDAU Linux с отслеживанием оригинального репозитория ядра Linux. + +### 📖 Глоссарий + +| Термин | Полное название | Описание | +|--------|-----------------|----------| +| **V** | VERSION | Major версия ядра Linux. Определяет основной номер версии (например, `6` в `6.12.7`). | +| **P** | PATCHLEVEL | Middle версия ядра Linux. Определяет минорный номер версии (например, `12` в `6.12.7`). | +| **S** | SUBLEVEL | Minor версия ядра Linux. Определяет номер стабильного обновления (например, `7` в `6.12.7`). | +| **E** | EXTRAVERSION | Поле в версии ядра Linux, в которое встраивается версия ядра LANDAU Linux. Ядром Linux обычно используется для `-rc` релизов. | +| **MR** | Merge Request | Запрос на слияние одной Git-ветки с другой. Оформляется в виде ссылки на Git-репозиторий и ветку авторизованного мейнтейнера с формальным описанием. | +| **RMW** | Rebase & Merge Window | Временной отрезок (2 недели), в рамках которого мейнтейнеры LANDAU переносят свои изменения на новую базовую версию ядра. | +| **Bundle** | — | Полный набор изменений репозитория LANDAU Linux, отличающий его от оригинального ядра Linux. Есть общий Bundle и Bundle-ы мейнтейнеров. | +| **EOL** | End-of-Life | Завершение этапа поддержки выпущенной версии продукта. Ветка больше не получает обновлений и архивируется. | + +### 🪞 Зеркала оригинальных репозиториев Linux + +На сервере **[git.rulkc.org](https://git.rulkc.org)** поддерживаются постоянно +обновляемые зеркала: + +- 🔷 `torvalds/linux` — основная ветка ядра Linux +- 🔷 `stable/linux` — стабильные релизы ядра Linux +- 🔷 `linux-next` — интеграционное дерево linux-next + +--- + +## 🏷️ 2. Схема версионирования + +### 📐 Формат версии LANDAU Linux + +``` +VERSION.PATCHLEVEL.SUBLEVEL.lXYZ +``` + +| Компонент | Пример | Описание | +|-----------|--------|----------| +| `VERSION` | `7` | Мажорная версия ядра | +| `PATCHLEVEL` | `0` | Минорная версия ядра | +| `SUBLEVEL` | `12` | Номер стабильного обновления ядра | +| `l-rcX` | `l-rc1`, `l-rc2` | Сборочный номер отладочного релиза LANDAU Linux | +| `lXYZ` | `l`, `l1` | Сборочный номер стабильного релиза LANDAU Linux | + +### 🏷️ Git-теги + +Используются **аннотированные теги** в формате: + +``` +v7.0.l-rcX +v7.0.lXYZ +``` + +Пример: `v7.0.l-rc1`, `v7.0.l`, `v7.0.l5` + +--- + +## 🌿 3. Cтратегия организации GIT-веток + +### 📌 Основные GIT-ветки + +| Ветка | Назначение | +|-------|-------------| +| `landau-next` | GIT-ветка следующего релиза LANDAU Linux, куда мейтейнеры отсылают свои MR | +| `landau-V.P.y` | Текущая GIT-ветка для релиза LANDAU Linux на базе <u>стабильного</u> ядра Linux с версией V.P | + +> `landau-next` - GIT-ветка для работы всех мейтейнеров вместе. В ней +> разрешаются конфликты и собираются все MR вместе для создания ветки +> `landau-V.P.y`. При старте нового RMW её HEAD насильно переносится +> (_force-push_) на новый релиз ядра Linux. + +### ⏳ Жизненный цикл GIT-веток + +```mermaid +%%{init: { + 'theme': 'base', + 'themeVariables': { + 'background': '#002b36', + 'primaryColor': '#073642', + 'primaryTextColor': '#839496', + 'primaryBorderColor': '#586e75', + 'lineColor': '#b58900', + 'secondaryColor': '#002b36', + 'tertiaryColor': '#073642', + 'edgeLabelBackground': '#002b36', + 'nodeBorder': '#586e75', + 'nodeTextColor': '#93a1a1', + 'clusterBkg': '#002b36', + 'clusterBorder': '#586e75', + 'fontSize': '20px', + 'fontFamily': 'monospace' + }, + 'flowchart': { + 'nodeSpacing': 80, + 'rankSpacing': 30, + 'curve': 'basis', + 'padding': 10 + } +}}%% +flowchart TB + subgraph Block1["Подготовка релиза (этап RC)"] + direction LR + A["<b>landau-next</b> → <b>linux-V.P.y</b>"] + B["Стабилизация <b>landau-next</b>"] + C{"Код<br><b>landau-next</b> стабилен?"} + D(("•••")) + E["P = P + 1"] + + A --> B + B --> C + C -->|Нет| B + C -->|Да| D + C -->|Да| E + E -.->|Ожидание релиза P| A + end +``` + +```mermaid +%%{init: { + 'theme': 'base', + 'themeVariables': { + 'background': '#002b36', + 'primaryColor': '#073642', + 'primaryTextColor': '#839496', + 'primaryBorderColor': '#586e75', + 'lineColor': '#b58900', + 'secondaryColor': '#002b36', + 'tertiaryColor': '#073642', + 'edgeLabelBackground': '#002b36', + 'nodeBorder': '#586e75', + 'nodeTextColor': '#93a1a1', + 'clusterBkg': '#002b36', + 'clusterBorder': '#586e75', + 'fontSize': '20px', + 'fontFamily': 'monospace' + }, + 'flowchart': { + 'nodeSpacing': 80, + 'rankSpacing': 30, + 'curve': 'basis', + 'padding': 10 + } +}}%% +flowchart TB + subgraph Block2["Релиз LANDAU Linux"] + direction LR + A(("•••")) + B["<b>landau-V.P.y</b> → <b>landau-next</b>"] + C["Поддержка <b>landau-V.P.y</b>"] + D{"Статус<br><b>linux-V.P.y</b> <b>EOL</b>?"} + E["Архивация <b>landau-V.P.y</b>"] + + A --> B + B --> C + C --> D + D -->|Нет| C + D -->|Да| E + end +``` + +| Стадия | Действие | +|--------|----------| +| 🛑 Старт | Принудительное переназначение `landau-next` на базовую версию ядра Linux | +| 🔧 Разработка | Сбор и стабилизация изменений LANDAU в GIT-ветке `landau-next` | +| 🆕 Релиз | Создание `landau-V.P.y` на основе стабильной `landau-next` | +| 🔧 Поддержка | Сбор исправлений ошибок в GIT-ветке `landau-V.P.y` | +| 🐢 Окончание поддержки | Исходная версия достигает EOL | + +> В базовом представлении _поддержка_ подразумевает периодическую синхронизацию +> `landau-V.P.y` с исходной GIT-веткой `linux-V.P.y`. + +--- + +## 📅 4. График релизов + +### ⏱️ Цикл релизов ядра Linux + +В оригинальном репозитории ядра Linux поддерживается следующий цикл разработки: + +| Фаза | ⏰ Длительность | 📝 Описание | +|------|----------------|-------------| +| Разработка | 9-10 недель | Подготовка к новому релизу | +| Rebase & Merge Window | 2 недели | Приём новых Merge Requests от мейнтейнеров | +| RC-тестирование | 7-8 недель | Тестирование кандидатов на релиз | +| Финальный релиз | — | Публикация стабильного ядра | + +> ℹ️ **Важно**: Поскольку релизы LANDAU Linux базируются на стабильных релизах +> ядра Linux, то текущий цикл разработки всегда отстаёт от последней версии ядра +> Linux на **1 PATCHLEVEL**. + +--- + +## 🔄 5. Процесс выпуска LANDAU Linux + +### 📊 Полный цикл релиза + +```mermaid +%%{init: { + 'theme': 'base', + 'themeVariables': { + 'background': '#002b36', + 'primaryColor': '#073642', + 'primaryTextColor': '#839496', + 'primaryBorderColor': '#586e75', + 'lineColor': '#b58900', + 'secondaryColor': '#002b36', + 'tertiaryColor': '#073642', + 'edgeLabelBackground': '#002b36', + 'nodeBorder': '#586e75', + 'nodeTextColor': '#93a1a1', + 'fontSize': '20px', + 'fontFamily': 'monospace' + }, + 'flowchart': { + 'nodeSpacing': 80, + 'rankSpacing': 30, + 'curve': 'basis', + 'padding': 10 + } +}}%% +flowchart TB + subgraph Block1["Подготовка релиза (этап RC)"] + direction LR + A["📦 Новый релиз ядра Linux"] --> B + B(["🔓 1. RMW LANDAU Linux<br>(~2 нед.)"]) --> C + C["🔧 Перенос и слияние Bundle-ов"] --> D + D(["🔓 2. RC LANDAU Linux<br>(~1 нед. на RCx)"]) --> E + E["🔧 Исправление ошибок<br>(выпуск RC)"] --> F + F(("•••")) + end +``` + +```mermaid +%%{init: { + 'theme': 'base', + 'themeVariables': { + 'background': '#002b36', + 'primaryColor': '#073642', + 'primaryTextColor': '#839496', + 'primaryBorderColor': '#586e75', + 'lineColor': '#b58900', + 'secondaryColor': '#002b36', + 'tertiaryColor': '#073642', + 'edgeLabelBackground': '#002b36', + 'nodeBorder': '#586e75', + 'nodeTextColor': '#93a1a1', + 'fontSize': '20px', + 'fontFamily': 'monospace' + }, + 'flowchart': { + 'nodeSpacing': 80, + 'rankSpacing': 30, + 'curve': 'basis', + 'padding': 10 + } +}}%% +flowchart TB + subgraph Block2["Релиз LANDAU Linux"] + direction LR + A(("•••")) --> B + B(["✅ 3. Релиз LANDAU Linux"]) --> C + C["🔧 Публикация изменений<br>LANDAU Linux"] --> D + D(["🔓 4. Поддержка LANDAU Linux"]) --> E + E["🔧 Исправление ошибок и<br>синхронизация SUBLEVEL"] --> F + F(["🐢 5. EOL LANDAU Linux"]) + end +``` + +### 5.1 🆕 Этап RMW LANDAU Linux + +| Шаг | Действие | +|-----|----------| +| 1 | Создать GIT-ветку `landau-next` от первого релиза стабильного ядра Linux | +| 2 | Объявить сбор изменений LANDAU Linux от нижестоящих ментейнеров | +| 3 | Применить изменения LANDAU Linux в `landau-next` | +| 4 | Запросить повторную публикуцию изменений в случае сложных конфликтов | +| 5 | Провести базовое сборочное тестирование результирующей ветки `landau-next` | +| 6 | Обновить `EXTRAVERSION` на `l-rc1` и создать коммит "LANDAU Linux V.P.l-rc1" | +| 7 | Отметить коммит аннотированным тегом `vV.P.l-rc1` | + +> ℹ️ Переменная `EXTRAVERSION` в стабильных релизах ядра Linux остаётся пустым, +> потому может быть использована для сохранения версий LANDAU Linux. При этом +> оригинальные значения `VERSION`, `PATCHLEVEL`, `SUBLEVEL` в дальнейшем +> сохраняются для индикации версии исходного ядра Linux. + +| Параметр | Значение | +|----------|----------| +| ⏱️ Длительность | **~2 недели** | +| 🎯 Фокус | Сбор и базовая проверка работоспособности продуктов | +| 🏷️ Релизы | `l-rc1` | +| 🔧 Исправления | Незначительные проблемы разрешаются в merge-коммитах. Значительные - через повторный запрос изменения от ментейнера | + +### 5.2 🧪 Этап RC LANDAU Linux + +| Шаг | Действие | +|-----|----------| +| 1 | Получить корректирующие изменений LANDAU Linux от нижестоящих ментейнеров | +| 2 | Применить корректирующие изменения LANDAU Linux в `landau-next` | +| 3 | Провести базовое сборочное тестирование результирующей ветки `landau-next` | +| 4 | Cоздать коммит "LANDAU Linux V.P.l-rcX" для инкрементированной в `EXTRAVERSION` RC-версии | +| 5 | Отметить коммит аннотированным тегом `vV.P.l-rcX` | +| 6 | Перейти к 1. в случае выявления ошибок | + +| Параметр | Значение | +|----------|----------| +| ⏱️ Длительность | **~1 неделя** на каждый RC, но **не более 7-8 недель** | +| 🎯 Фокус | Регрессионное тестирование, стабильность, валидация фич | +| 🏷️ Релизы | `l-rc1`, `l-rc2`, `l-rc3` ... | +| 🔧 Исправления | Применяются непосредственно в ветку релиза по запросу нижестоящих ментейнеров | + +> ℹ️ Стабилизация GIT-ветки `landau-next` (отсуствие выявленных ошибок в +> очреденом RC-цикле) символизирует окончание этапа RC и выход на релиз. + +### 5.3 ✅ Релиз LANDAU Linux + +| Шаг | Действие | +|-----|----------| +| 1 | Убедиться в отсуствии существенных проблем на последнем этапе RC | +| 2 | Обновить `EXTRAVERSION` на `l` и создать коммит "LANDAU Linux V.P.l" | +| 3 | Отметить коммит аннотированным тегом `vV.P.l` | +| 4 | Создать GIT-ветку `landau-V.P.y` на основе последнего RC-релиза LANDAU Linux | + +| Параметр | Значение | +|----------|----------| +| ⏱️ Длительность | **более 1 недели** в последней фазе RC | +| 🎯 Фокус | Стабилизация собранных измений и опубликование списка изменений | +| 🏷️ Релизы | `l` | +| 🔧 Исправления | Отсуствуют в рамках последней фазы RC | + +### 5.4 🔄 Поддержка стабильной и LTS-версий LANDAU Linux + +| Шаг | Действие | Пример | +|-----|----------|--------| +| 1 | Определить последний `SUBLEVEL` в исходной GIT-ветки стабильного ядра Linux | `v7.0.1` | +| 2 | Применить изменения из стабильной GIT-ветки ядра Linux в `landau-V.P.y` | `git merge v7.0.1` | +| 3 | Получить корректирующие изменений LANDAU Linux от нижестоящих ментейнеров | - | +| 4 | Применить корректирующие изменения LANDAU Linux в `landau-V.P.y` при наличии | - | +| 5 | Инкрементировать `EXTRAVERSION` на единицу и создать коммит "LANDAU Linux V.P.Y.lX" | `l` → `l1` | +| 6 | Отметить коммит аннотированным тегом `vV.P.Y.lX` | `v7.0.1.l1` | + +| Параметр | Значение | +|----------|----------| +| ⏱️ Длительность | До получения статуса EOL исходной версии ядра Linux | +| 🎯 Фокус | Исправление серьезных ошибок, выявленных в стабильном релизе LANDAU Linux | +| 🏷️ Релизы | `l1`, `l2`, `l2`, ... | +| 🔧 Исправления | Применяются по запросу нижестоящих ментейнеров в рамках корректирующих релизов | + +Мейнтейнеры LANDAU Linux приняли решение **нативно поддерживать стабильные и +LTS-версии** ядра Linux до получения статуса EOL. Однако гарантировано +корректирующие изменения LANDAU Linux портируются в LANDAU Linux на основе +последней LTS-версии ядра Linux. Портирование изменений в более ранние версии +возможно при наличии ресурсов. + +⚠️ Особенности интеграции изменений в стабильную и LTS версии LANDAU Linux: + +| ✅ Разрешено | ❌ Запрещено | +|--------------|--------------| +| Исправления безопасности | Бэкпорт новых фич | +| Критические багфиксы | Новые драйверы | +| Стабилизирующие патчи | Изменения подсистем | +| Документация | Любые не-багфиксы | + +> 📌 **Принцип**: Поддерживается тот Changelog, который был на момент отвода LTS основного ядра. + +### 5.5 🔄 Завершение поддержки релиза LANDAU Linux (EOL) + +| Шаг | Действие | +|-----|----------| +| 1 | Получение статуса EOL исходной версии стабильного ядра Linux | +| 2 | Объявление о завершении поддержки LANDAU Linux в GIT-ветке `landau-V.P.y` | + +| Параметр | Значение | +|----------|----------| +| ⏱️ Длительность | Минимум несколько корректирующих релизов стабильной версии LANDAU Linux до регистрации EOL | +| 🎯 Фокус | Завершение поддержки релиза | +| 🏷️ Релизы | `lZ` | +| 🔧 Исправления | Не применяются | + +Поддержка **стабильной и LTS версий** LANDAU Linux завершается либо вместе с +получением статуса EOL исходной версии ядра Linux, либо после выпуска релиза +LANDAU Linux, основанного на последней LTS-версии ядра Linux. + +--- + +## 👤 6. Обязанности мейнтейнера + +| Область | Ответственность | +|---------|------------------| +| 👁️ Мониторинг исходного репозитория | Отслеживание новых релизов и RC-циклов | +| 📦 Применение патчей | Интеграция LANDAU-специфичных изменений ядра | +| 🏷️ Управление тегами | Создание аннотированных тегов в формате `vV.P.lZ` | +| 🧪 Координация RC | Организация тестирования кандидатов на релиз | +| 🔒 Безопасность | Мониторинг и применение исправлений безопасности | +| 📝 Документирование | Ведение changelog для каждого LANDAU-релиза | + +### 🏗️ Личные репозитории ментейнеров + +В личных репозиториях мейнтейнеры хранят и развивают собственные форки ядра +Linux с подведомственным им набором изменений. + +В целом, способ организации персональных репозиториев мейнтейнеры могут выбирать +самостоятельно. Например, можно разделить независимые изменения на GIT-ветки по +подсистемам и отправлять MR с каждым из них, либо предварительно объединить их в +единую GIT-ветку и отправить один целостный MR. При этом необходимо +придерживаться правила **преемственности предыдущих изменений и минимизации +merge-конфликтов**. То есть GIT-ветка, отправляемая в MR главному мейнтейнеру, +должна сохранять историю предыдущих изменений LANDAU Linux и их исправлений, а +также содержать последнюю версию оригинальной версии ядра Linux, для которого +готовится релиз LANDAU Linux. + +Для реализации такого требования удобно использовать подход **двойного +слияния**, суть которого в том, чтобы сначала мейнтейнеры своих репозиториев +LANDAU Linux (sub-LANDAU Linux) выполнили слияние своих GIT-веток с +`landau-next`, разрешили все конфликты и лишь потом отправляли MR в рамках этапа +RMW. + +```mermaid +--- +config: + gitGraph: + parallelCommits: false + mainBranchName: 'linux-V.P.y' +--- +gitGraph + branch baikal-next order: 2 + branch amlogic-next order: 3 + commit + commit + checkout baikal-next + commit + commit + checkout linux-V.P.y + commit + commit + commit id: "Linux V.P" tag: "vV.P" + branch landau-next order: 1 + commit id: " " type: HIGHLIGHT + checkout amlogic-next + merge landau-next + checkout baikal-next + merge landau-next + checkout landau-next + merge amlogic-next + merge baikal-next + commit id: "LANDAU Linux V.P.l-rc1" tag: "vV.P.l-rc1" +``` + +Таким образом, основная нагрузка по исправлению конфликтов ложится на +нижестоящих ментейнеров. Главному ментейнеру остаётся лишь собрать все MR в +`linux-next`. Если и в этом случае возникают сложные конфликты, то главный +ментейнер вправе попросить выполнить повторный цикл **двойного слияния**, чтобы +кросс sub-LANDAU Linux конфликты были разешены на стороне нижестоящих +ментейнеров. + +Опционально ментейнеры могут выполнять поддержку GIT-веток с патч-сетами для +последующей отправки изменений в оригинальный репозиторий ядра Linux. До момента +интеграции патч-сеты могут "поглощать" исправления и стилистические изменения в +процессе перебазирования на новую версию ядра Linux. Это упрощает сопровождение +таких GIT-веток, минимизируя лог изменений, который к тому же является лишним +при интеграции в ядро Linux. + +--- + +## 📖 7. Пример полного цикла релиза + +### Исходные данные + +Выпущено ядро Linux версии **`7.0`**. Это означает, что в оригинальном +репозитории ядра Linux изменения, добавленные в период окна слияния, достаточно +стабилизировались, этап RC завершён, EXTRAVERSION принимает пустое значение, +последний коммит символизирует релиз ядра Linux 7.0, а в GIT-репозитории +стабильных и LTS веток появляется новая ветка `linux-7.0.y`. + +### 📍 Пошаговый пример + +#### 👁️ Схема + +| Этап | Действие | Результат | Версия сборки | +|------|----------|-----------|---------------| +| 1 | Force-push GIT-ветки `landau-next` на `v7.0` | `landau-next` | — | +| 2 | Старт RMW | `landau-next` | `N/A` | +| 3 | Создание RC1 | `v7.0.l-rc1` | `7.0.l-rc1` | +| 4 | Создание RC2 | `v7.0.l-rc2` | `7.0.l-rc2` | +| 5 | Создание RC3 | `v7.0.l-rc3` | `7.0.l-rc3` | +| 6 | **Финальный релиз** и **создание нумерованной GIT-ветки** | `v7.0.l`<br>`landau-7.0.y` | `7.0.l` | +| 7 | Выходит оригинальный релиз `7.0.1` | Слияние изменений в `landau-7.0.y` | — | +| 8 | Обновление версии | `v7.0.1.l1` | `7.0.1.l1` | +| 9 | Исходная версия `7.0.x` получает статус EOL | GIT-ветка `landau-7.0.y` архивируется | — | + +#### 🔄 Детальное описание процесса + +1. **Выход нового стабильного релиза ядра Linux** (например, `v7.0` по результатам 7 недель стабилизации) +2. **Открытие RMW LANDAU Linux** — берём 2 недели на свой релиз LANDAU Linux: + - Затаскиваем патч-серии (MR) в ветку `landau-next`, на основе `v7.0` + - Там же происходит решение всех конфликтов + - Формируются первые общие сборки ядра +3. **Выпуск RC-версий** (например, `v7.0.l-rc1`) — RC-релизы делаются в GIT-ветке `landau-next` +4. **Тестирование** — длится до 7 недель (может быть меньше): + - Выпускаются RC-версии: `l-rc1`, `l-rc2`, `l-rc3` и т.д. +5. **Финальный релиз и отвод стабильной ветки**: + - Выпускаем релиз `v7.0.l` + - Создаём стабильную GIT-ветку **`landau-7.0.y`** на базе последнего релиза + - Вся дальнейшая поддержка этой версии ведётся в `landau-7.0.y` +6. **Завершение цикла `landau-next`**: + - Ветка `landau-next` останавливает свой рост на первом релизе `v7.0.l` + - Переключается на шаг 1, когда в исходном репозитории Linux выходит новый стабильный релиз (например, `v7.1`) +7. **Интеграция новых изменений SUBLEVEL из исходной стабильной версии ядра Linux**: + - Если в исходном репозитории меняется SUBLEVEL (например, `7.0.1`), мы интегрируем данный релиз в **`landau-7.0.y`** + - Повышаем свою версию: `v7.0.1.l1` + - То есть повышается версия LANDAU Linux, а SUBLEVEL получает новое значение согласно интегрированным изменениям +8. **Развитие стабильной версии**: + - Стабильная версия LANDAU Linux `v7.0` ведётся в ветке `landau-7.0.y` +9. **Окончание поддержки релиза**: + - Поддержка релиза ветки LANDAU Linux заканчивается, когда версия основного ядра больше не имеет статус стабильной на kernel.org (например, `7.0` достигла статуса EOL) +10. **LTS-поддержка**: + - Если основное ядро уходит в LTS, LANDAU поддерживает LTS до конца + - Приносятся только фиксы LANDAU Linux (без новых фич) и новые SUBLEVEL +11. **Гарантии поддержки**: + - LANDAU Linux Owners гарантированно поддерживают **одно последнее LTS ядро** + - Про поддержку более старых LTS ядер думаем при наличии ресурсов + +#### 🏷️ Пример полной цепочки тегов + +Для ядра `7.0.x` в LANDAU: + +``` +v7.0.l-rc1 → v7.0.l-rc2 → v7.0.l-rc3 → v7.0.l + ↓ + отвод landau-7.0.y + ↓ + v7.0.1.l1 → v7.0.2.l2 → ... +``` + +--- + +### Требования к патчам + +TODO + +### Pull requests + +TODO + +### Maintainers B4 usage + +TODO + +--- + +## 📚 8. Ссылки и ресурсы + +| Ресурс | URL | +|--------|-----| +| 📦 Репозитории LANDAU Linux | [https://git.rulkc.org/pub/scm/landau](https://git.rulkc.org/pub/scm/landau) | +| 🪞 Зеркала репозиториев Linux | [https://git.rulkc.org](https://git.rulkc.org) | +| 🔗 Оригинальные репозитории Linux | [https://kernel.org](https://kernel.org) | + +--- + +<div style="display: flex; justify-content: space-between; align-items: center; padding: 1rem 0; margin-top: 2rem; border-top: 1px solid #30363d; font-size: 14px; flex-wrap: wrap; gap: 10px;"> + <span>📌 <strong>Актуальная версия:</strong> 1.0</span> + <span>✍️ <strong>Поддерживается:</strong> LANDAU Maintainers</span> + <span>📅 <strong>Обновлено:</strong> 2026-07</span> +</div> + +[⬅️ Вернуться на страницу LANDAU Linux](../) diff --git a/open_mic_27_03_2026.md b/content/open_mic_27_03_2026/_index.md index 74cd4d7..15117d8 100644 --- a/open_mic_27_03_2026.md +++ b/content/open_mic_27_03_2026/_index.md @@ -80,7 +80,7 @@ --- **Контактное лицо:** RULKC -📧 [rulinuxkc@gmail.com](mailto:rulinuxkc@gmail.com) +📧 [rulkc@rulkc.org](mailto:rulkc@rulkc.org) 💬 [t.me/linux_kernel_O](https://t.me/linux_kernel_O) -[⬅️ Вернуться на главную страницу LANDAU](./index.md) +[⬅️ Вернуться на главную страницу LANDAU](../) diff --git a/rulkc.png b/content/rulkc.png Binary files differindex 8ae262d..8ae262d 100644 --- a/rulkc.png +++ b/content/rulkc.png diff --git a/hugo.yaml b/hugo.yaml new file mode 100644 index 0000000..407bf68 --- /dev/null +++ b/hugo.yaml @@ -0,0 +1,41 @@ +baseurl: "/" +languageCode: "ru" +title: "LANDAU" +theme: "landau-hacker" +googleAnalytics: "" +disqusShortname: "" +ignoreFiles: ["\\.Rmd$", "\\.Rmarkdown$", "_cache$", "\\.knit\\.md$", "\\.utf8\\.md$"] +footnotereturnlinkcontents: "↩" +disableKinds : ["taxonomy", "term"] +relativeURLs: true +canonifyURLs: false + +permalinks: + note: "/note/:year/:month/:day/:slug/" + post: "/post/:year/:month/:day/:slug/" + +menu: + main: + - name: Home + url: "" + weight: 1 + - name: About + url: "index.html" + weight: 2 + - name: Subscribe + url: "index.xml" + +params: + mainSections: + - git + - doc + description: "Linux And Neo-Depositorium Associated Unity" + # PaperMod doesn't like this + # footer: "© [Landau Unlimited](https://blog.landau.one/) 2026 -- {Year}" + +markup: + highlight: + codeFences: false + goldmark: + renderer: + unsafe: true diff --git a/index.md b/index.md deleted file mode 100644 index 62df8fd..0000000 --- a/index.md +++ /dev/null @@ -1,67 +0,0 @@ -# ⚛️ LANDAU Kernel - -**⚡ Linux kernel Advanced for Next-gen Devices & Architectures ⚡** -*(Продвинутое ядро Linux для устройств и архитектур нового поколения)* - ---- - -🧪 **О проекте** - -Проект назван в честь выдающегося физика-теоретика, нобелевского лауреата **Льва Давидовича Ландау** — создателя научной школы, воспитавшей поколения ученых. Как Ландау объединял физиков вокруг новых идей, так и наш форк призван объединить российских разработчиков для создания единой кодовой базы ядра. - ---- - -## 🎯 О проекте - -**LANDAU** — это инициатива [**Russian Linux Kernel Community (RULKC)**](https://rulkc.org) по созданию единого форка, ориентированного на развитие, а не изоляцию. - -Мы видим LANDAU как **upstream-first форк**, улучшающий mainline/stable ветки и работающий по модели **AOSP Common Kernel**: - -* 🔄 **Регулярное обновление:** Следование за актуальными версиями mainline / stable (раз в 1–2 месяца). -* 📦 **Приём патчей:** Включение полезных наработок, которые по разным причинам не попали в upstream (драйверы, архитектурные доработки). -* 🖥️ **Поддержка российского железа:** Создание единой ветки ядра как основы BSP для процессоров различных архитектур (ARM, MIPS, RISC-V, Эльбрус), аппаратных платформ и consumer электроники, разрабатываемой в России. -* 👁️ **Прозрачность:** Открытый процесс ревью, современный CI и совместное тестирование. - -Проект призван решать как текущие задачи индустрии (сохранение и развитие кода, снижение фрагментации), так и готовить основу для будущего — появления собственных IP- и Core-вендоров, ODM-производителей устройств на отечественных чипах. - ---- - -## 📅 Мероприятия и обсуждения - -Мы проводим митапы и конференции (RULKC Meetup #1, OSDevConf 24/25/26), чтобы собрать мнения инженеров и компаний, определить потребности рынка, вместе спроектировать архитектуру будущего форка. - -### 🎙️ Список событий - -* **[Открытый микрофон #001: «Форк ядра. Инженеры для инженеров, или при чем тут LANDAU»](./open_mic_27_03_2026.md)** - * **📅 Дата:** 27 марта 2026 года - * **⏰ Время:** 20:00 - * **📍 Формат:** Очно / Online - * Первая открытая дискуссия о практической инженерной мотивации создания форка, его целях и проблемах, которые он может решить. - -### 🗂️ Архив встреч - -* 📌 **(Скоро)** Материалы и резюме прошедших круглых столов будут появляться здесь. - ---- - -## 🤝 Контакты и сообщество - -### 🌐 Russian Linux Kernel Community - -Проект ⚛️ LANDAU развивается под эгидой сообщества RULKC. Присоединяйтесь к нам! - -| Канал | Ссылка | -|-------|--------| -| 🏠 **Основной сайт** | [rulkc.org](https://rulkc.org) | -| 📧 **Mail** | [rulinuxkc@gmail.com](mailto:rulinuxkc@gmail.com) | -| 💬 **Telegram-канал** | [https://t.me/linux_kernel_O](https://t.me/linux_kernel_O) | -| 🐙 **GitHub** | [github.com/rulkc](https://github.com/rulkc) | -| 📧 **Mailing List** | [rulkc@linuxtesting.org](mailto:rulkc@linuxtesting.org) | - -| | | -|---|---| -| <a href="http://rulkc.org" target="_blank"><img src="rulkc.png" alt="RULKC" width="120"></a> | **💬 Присоединяйтесь к обсуждению:**<br>Будьте в курсе всех новостей проекта ⚛️ LANDAU и мероприятий RULKC в нашем Telegram-канале:<br>[t.me/linux_kernel_O](https://t.me/linux_kernel_O) | - -<br> - -📌 *Этот сайт — отправная точка для навигации по инициативе LANDAU. Все ключевые документы, анонсы и ссылки на репозитории будут добавляться по мере развития проекта.* diff --git a/layouts/partials/head-additions.html b/layouts/partials/head-additions.html new file mode 100644 index 0000000..0aa1935 --- /dev/null +++ b/layouts/partials/head-additions.html @@ -0,0 +1,26 @@ +<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script> +<script> + document.addEventListener('DOMContentLoaded', function() { + // Look for mermaid code blocks + const mermaidBlocks = document.querySelectorAll('pre code.language-mermaid'); + if (mermaidBlocks.length > 0) { + mermaid.initialize({ + startOnLoad: false, + theme: 'default', + flowchart: { + useMaxWidth: true + } + }); + + mermaidBlocks.forEach((block, index) => { + const graphDefinition = block.textContent; + const div = document.createElement('div'); + div.className = 'mermaid'; + div.innerHTML = graphDefinition; + block.parentNode.parentNode.replaceChild(div, block.parentNode); + }); + + mermaid.init(); + } + }); +</script> diff --git a/scripts/spellcheck.sh b/scripts/spellcheck.sh new file mode 100755 index 0000000..caf08f4 --- /dev/null +++ b/scripts/spellcheck.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash +# Spell-check Markdown sources using hunspell with ru_RU + en_US dictionaries. +# Words listed in .spellcheck-allow.txt are accepted as correct. +# +# Usage: scripts/spellcheck.sh [paths...] +# Default scope when no args given: content/, docs/, README.md, AGENTS.md. + +set -euo pipefail + +ROOT=$(cd "$(dirname "$0")/.." && pwd) +ALLOW="${ROOT}/.spellcheck-allow.txt" +[ -f "${ALLOW}" ] || { echo "missing allow list: ${ALLOW}" >&2; exit 1; } + +cd "${ROOT}" + +PATHS=("$@") +if [ "${#PATHS[@]}" -eq 0 ]; then + PATHS=(content docs README.md AGENTS.md) +fi + +# Build the file list. Avoid `mapfile`/`readarray` so the script runs on +# Bash 3.2 (macOS default) as well as Linux's modern bash. +files=() +while IFS= read -r line; do + [ -n "${line}" ] && files+=("${line}") +done < <( + for p in "${PATHS[@]}"; do + [ -e "${p}" ] || continue + if [ -d "${p}" ]; then + find "${p}" -type f -name '*.md' + else + printf '%s\n' "${p}" + fi + done | sort -u +) + +if [ "${#files[@]}" -eq 0 ]; then + echo "no markdown files found" + exit 0 +fi + +# Sanity check: confirm hunspell can actually load both dictionaries. +# (On some environments — e.g. GitHub Actions ubuntu-24.04 runner image — +# Ubuntu's hunspell-ru / hunspell-en-us packages can install successfully +# but leave /usr/share/hunspell/ stripped of the .aff/.dic files. Set +# DICPATH to a directory containing ru_RU.{aff,dic} and en_US.{aff,dic} as +# a workaround.) +if echo 'архитектура' | hunspell -d ru_RU,en_US -l | grep -qx 'архитектура'; then + echo "::error::hunspell ru_RU dictionary not loaded properly" + echo "DICPATH=${DICPATH:-(unset)}" + hunspell -D 2>&1 | head -30 + exit 1 +fi +if echo 'architecture' | hunspell -d ru_RU,en_US -l | grep -qx 'architecture'; then + echo "::error::hunspell en_US dictionary not loaded properly" + echo "DICPATH=${DICPATH:-(unset)}" + hunspell -D 2>&1 | head -30 + exit 1 +fi + +# Explicit template — bare `mktemp` errors on macOS/BSD (`too few X's in template`). +unknown=$(mktemp "${TMPDIR:-/tmp}/landau-spellcheck.XXXXXX") +trap 'rm -f "${unknown}"' EXIT + +for f in "${files[@]}"; do + awk ' + BEGIN { fm = 0; code = 0 } + NR == 1 && /^---[[:space:]]*$/ { fm = 1; next } + fm && /^---[[:space:]]*$/ { fm = 0; next } + fm { next } + /^[[:space:]]*```/ { code = !code; next } + code { next } + { + gsub(/<[^>]*>/, " ") # HTML tags + gsub(/`[^`]*`/, " ") # inline code spans + gsub(/https?:\/\/[^[:space:])]+/, " ") # URLs + gsub(/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/, " ") # emails + gsub(/[][(){}|*_~#]/, " ") # markdown punctuation + # Strip invisible Unicode chars that confuse hunspell tokenizer. + # Byte sequences below are the UTF-8 encodings of: + gsub(/\xef\xb8\x8f/, " ") # U+FE0F variation selector-16 + gsub(/\xef\xb8\x8e/, " ") # U+FE0E variation selector-15 + gsub(/\xe2\x80\x8d/, " ") # U+200D zero-width joiner + gsub(/\xe2\x80\x8c/, " ") # U+200C zero-width non-joiner + gsub(/\xe2\x80\x8b/, " ") # U+200B zero-width space + print + } + ' "$f" \ + | hunspell -d ru_RU,en_US -l \ + >> "${unknown}" +done + +# Empty unknown list = nothing to filter; happy exit. +if [ ! -s "${unknown}" ]; then + echo "Spell check OK across ${#files[@]} files." + exit 0 +fi + +# Filter accumulated unknowns against the allow list (exact, fixed strings). +sort -u "${unknown}" -o "${unknown}" +filtered=$(grep -vxFf "${ALLOW}" "${unknown}" || true) + +if [ -n "${filtered}" ]; then + echo "::error::Unknown words found in markdown sources:" + printf '%s\n' "${filtered}" | sed 's/^/ /' + echo + echo "If these are intentional (proper nouns, technical terms)," + echo "add them to .spellcheck-allow.txt. Otherwise, fix the spelling." + exit 1 +fi + +echo "Spell check OK across ${#files[@]} files." diff --git a/themes/landau-hacker/LICENSE b/themes/landau-hacker/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/themes/landau-hacker/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<https://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<https://www.gnu.org/licenses/why-not-lgpl.html>. diff --git a/themes/landau-hacker/README.md b/themes/landau-hacker/README.md new file mode 100644 index 0000000..05c2ea7 --- /dev/null +++ b/themes/landau-hacker/README.md @@ -0,0 +1,19 @@ +# landau-hacker – тема для Hugo сайта LANDAU + +**landau-hacker** – это адаптация темы [Hacker](https://github.com/pages-themes/hacker) от GitHub Pages под движок [Hugo](https://gohugo.io/). Тема используется на официальном сайте проекта [LANDAU](https://landau.one). + +## Особенности + +- Минималистичный «технический» дизайн с зелёным акцентом. +- Тёмный фон, моноширинные шрифты. +- Адаптивная вёрстка, поддержка относительных ссылок (`relativeURLs`). +- Встроенные архетипы для **новостей** и **событий**. +- Страница 404 в стиле темы. + +## Установка + +### 1. Скопировать тему в проект + +```bash +git clone https://gitflic.ru/project/maquefel/landau-hacker themes/landau-hacker +``` diff --git a/themes/landau-hacker/archetypes/default.md b/themes/landau-hacker/archetypes/default.md new file mode 100644 index 0000000..43dca9a --- /dev/null +++ b/themes/landau-hacker/archetypes/default.md @@ -0,0 +1,5 @@ +--- +title: "{{ replace .File.ContentBaseName "-" " " | title }}" +date: {{ .Date }} +draft: true +--- diff --git a/themes/landau-hacker/archetypes/events.md b/themes/landau-hacker/archetypes/events.md new file mode 100644 index 0000000..667497e --- /dev/null +++ b/themes/landau-hacker/archetypes/events.md @@ -0,0 +1,38 @@ +--- +title: "{{ replace .File.ContentBaseName "-" " " | title }}" +date: {{ .Date }} +description: "" +type: events +draft: true +--- + +# 🎙️ {Заголовок события} + +## «{Подзаголовок / тема}» + +--- + +📅 **Дата:** {ДД месяц ГГГГ} +⏰ **Время:** {ЧЧ:ММ} +📍 **Формат:** Очно / Online (гибрид) +👥 **Организатор:** [RULKC](https://rulkc.org) (Russian Linux Kernel Community) + +--- + +## 🧭 О встрече + +{Краткое описание...} + +--- + +## 📝 Регистрация и контакты + +🔗 {ссылка на регистрацию} + +--- + +**Контактное лицо:** RULKC +📧 [rulkc@rulkc.org](mailto:rulkc@rulkc.org) +💬 [t.me/linux_kernel_O](https://t.me/linux_kernel_O) + +[⬅️ Вернуться на главную страницу LANDAU](/) diff --git a/themes/landau-hacker/archetypes/news.md b/themes/landau-hacker/archetypes/news.md new file mode 100644 index 0000000..0683b46 --- /dev/null +++ b/themes/landau-hacker/archetypes/news.md @@ -0,0 +1,9 @@ +--- +title: "{{ replace .File.ContentBaseName "-" " " | title }}" +date: {{ .Date }} +description: "" +type: news +draft: true +--- + +{Текст новости...} diff --git a/themes/landau-hacker/layouts/404.html b/themes/landau-hacker/layouts/404.html new file mode 100644 index 0000000..e939055 --- /dev/null +++ b/themes/landau-hacker/layouts/404.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html lang="{{ site.Language.Lang | default "ru" }}"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>404 — Страница не найдена · {{ site.Title }}</title> + <meta name="description" content="Запрошенная страница не существует на сайте LANDAU"> + <link rel="canonical" href="{{ .Permalink }}"> + <link rel="icon" type="image/svg+xml" href="{{ "/favicon.svg" | relURL }}"> + <link rel="stylesheet" href="{{ "/css/hacker.css" | relURL }}"> +</head> +<body> + <header> + <div class="container"> + <a id="a-title" href="{{ "/" | relURL }}"> + <h1>{{ site.Title }}</h1> + </a> + <h2>{{ site.Params.description }}</h2> + </div> + </header> + + <div class="container"> + <section id="main_content"> + <h1>404</h1> + <p>Страница не найдена. Возможно, она была перемещена или удалена.</p> + <p>Проверьте правильность адреса или вернитесь на <a href="{{ "/" | relURL }}">главную страницу</a>.</p> + <hr> + <p><small>Если вы уверены, что страница должна существовать, свяжитесь с нами через <a href="https://t.me/linux_kernel_O">Telegram-канал</a>.</small></p> + </section> + </div> + + <footer> + <div class="container"> + <p class="version">ver.{{ with site.Params.version }}{{ . }}{{ else }}dev{{ end }}</p> + </div> + </footer> +</body> +</html> diff --git a/themes/landau-hacker/layouts/_default/_markup/render-codeblock.html b/themes/landau-hacker/layouts/_default/_markup/render-codeblock.html new file mode 100644 index 0000000..e86da3c --- /dev/null +++ b/themes/landau-hacker/layouts/_default/_markup/render-codeblock.html @@ -0,0 +1,7 @@ +aaaaaaaaaa{{- warnf "codeblock hook triggered for %s" .Position -}} +{{- $lang := .Attributes.lang | default "" -}} +{{- if eq $lang "mermaid" -}} + <pre class="mermaid">{{ .Inner | safeHTML }}</pre> +{{- else -}} + <pre><code class="language-{{ $lang }}">{{ .Inner | safeHTML }}</code></pre> +{{- end -}}
\ No newline at end of file diff --git a/themes/landau-hacker/layouts/_default/baseof.html b/themes/landau-hacker/layouts/_default/baseof.html new file mode 100644 index 0000000..57080b5 --- /dev/null +++ b/themes/landau-hacker/layouts/_default/baseof.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html lang="{{ site.Language.Lang | default "ru" }}"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>{{ if .IsHome }}{{ site.Title }}{{ else }}{{ .Title }} · {{ site.Title }}{{ end }}</title> + <meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ site.Params.description }}{{ end }}"> + <link rel="canonical" href="{{ .Permalink }}"> + <meta property="og:type" content="{{ if .IsHome }}website{{ else }}article{{ end }}"> + <meta property="og:title" content="{{ if .IsHome }}{{ site.Title }}{{ else }}{{ .Title }}{{ end }}"> + <meta property="og:url" content="{{ .Permalink }}"> + <meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{ site.Params.description }}{{ end }}"> + {{ with .OutputFormats.Get "rss" -}} + <link rel="alternate" type="application/rss+xml" href="{{ .RelPermalink }}" title="{{ site.Title }}"> + {{- end }} + <link rel="icon" type="image/svg+xml" href="{{ "/favicon.svg" | relURL }}"> + <link rel="stylesheet" href="{{ "/css/hacker.css" | relURL }}"> + {{- partial "head-additions.html" . -}} +</head> +<body> + <header> + <div class="container"> + <a id="a-title" href="{{ "/" | relURL }}"> + <h1>{{ site.Title }}</h1> + </a> + <h2>{{ site.Params.description }}</h2> + </div> + </header> + + <div class="container"> + <section id="main_content"> + {{ block "main" . }}{{ end }} + </section> + </div> + + <footer> + <div class="container"> + <p class="version">ver.{{ with site.Params.version }}{{ . }}{{ else }}dev{{ end }}</p> + </div> + </footer> +</body> +</html> diff --git a/themes/landau-hacker/layouts/_default/list.html b/themes/landau-hacker/layouts/_default/list.html new file mode 100644 index 0000000..2111000 --- /dev/null +++ b/themes/landau-hacker/layouts/_default/list.html @@ -0,0 +1,14 @@ +{{ define "main" }} +{{ .Content }} + +{{ with .Pages.ByDate.Reverse }} +<ul> + {{ range . }} + <li> + <a href="{{ .RelPermalink }}">{{ .Title }}</a> + {{- with .Date }} — <time datetime="{{ .Format "2006-01-02" }}">{{ .Format "2 January 2006" }}</time>{{ end }} + </li> + {{ end }} +</ul> +{{ end }} +{{ end }} diff --git a/themes/landau-hacker/layouts/_default/single.html b/themes/landau-hacker/layouts/_default/single.html new file mode 100644 index 0000000..9983b08 --- /dev/null +++ b/themes/landau-hacker/layouts/_default/single.html @@ -0,0 +1,3 @@ +{{ define "main" }} +{{ .Content }} +{{ end }} diff --git a/themes/landau-hacker/layouts/_markup/render-codeblock.html b/themes/landau-hacker/layouts/_markup/render-codeblock.html new file mode 100644 index 0000000..e86da3c --- /dev/null +++ b/themes/landau-hacker/layouts/_markup/render-codeblock.html @@ -0,0 +1,7 @@ +aaaaaaaaaa{{- warnf "codeblock hook triggered for %s" .Position -}} +{{- $lang := .Attributes.lang | default "" -}} +{{- if eq $lang "mermaid" -}} + <pre class="mermaid">{{ .Inner | safeHTML }}</pre> +{{- else -}} + <pre><code class="language-{{ $lang }}">{{ .Inner | safeHTML }}</code></pre> +{{- end -}}
\ No newline at end of file diff --git a/themes/landau-hacker/layouts/index.html b/themes/landau-hacker/layouts/index.html new file mode 100644 index 0000000..9983b08 --- /dev/null +++ b/themes/landau-hacker/layouts/index.html @@ -0,0 +1,3 @@ +{{ define "main" }} +{{ .Content }} +{{ end }} diff --git a/themes/landau-hacker/layouts/partials/head-additions.html b/themes/landau-hacker/layouts/partials/head-additions.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/themes/landau-hacker/layouts/partials/head-additions.html diff --git a/themes/landau-hacker/static/css/hacker.css b/themes/landau-hacker/static/css/hacker.css new file mode 100644 index 0000000..736bb29 --- /dev/null +++ b/themes/landau-hacker/static/css/hacker.css @@ -0,0 +1,290 @@ +/* + * LANDAU site theme. + * + * Lifted from github.com/pages-themes/hacker + * commit e3c8d1ad288894be216002a5bc29fc611aeab9ac (2024-01-16) + * licensed CC0-1.0 (per upstream LICENSE file). + * + * SCSS sources flattened into plain CSS: + * _sass/_default_colors.scss (variables inlined) + * _sass/jekyll-theme-hacker.scss (main rules) + * _sass/rouge-base16-dark.scss (code highlighting; appended at end) + * + * Background images live alongside under /images/{bkg,bullet}.png + * and are referenced via "../images/<file>.png" so this file is portable. + * + * Update procedure: see CLAUDE.md, "Theme update". + */ + +body { + margin: 0; + padding: 0; + background: #151515 url("../images/bkg.png") 0 0; + color: #eaeaea; + font-size: 16px; + line-height: 1.5; + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; +} + +/* General & 'Reset' Stuff */ + +.container { + width: 90%; + max-width: 1000px; + margin: 0 auto; +} + +section { + display: block; + margin: 0 0 20px 0; +} + +h1, h2, h3, h4, h5, h6 { + margin: 0 0 20px; +} + +li { + line-height: 1.4; +} + +/* Header */ + +header { + background: rgba(0, 0, 0, 0.1); + width: 100%; + border-bottom: 1px dashed #b5e853; + padding: 20px 0; + margin: 0 0 40px 0; +} + +header h1 { + font-size: 30px; + line-height: 1.5; + margin: 0 0 0 -40px; + font-weight: bold; + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; + color: #b5e853; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1), + 0 0 5px rgba(181, 232, 83, 0.1), + 0 0 10px rgba(181, 232, 83, 0.1); + letter-spacing: -1px; + -webkit-font-smoothing: antialiased; +} + +@media (max-width: 1000px) { + header h1 { + margin-left: 0; + } +} + +header h1:before { + content: "./ "; + font-size: 24px; +} + +header h2 { + font-size: 18px; + font-weight: 300; + color: #666; +} + +#downloads .btn { + display: inline-block; + text-align: center; + margin: 0; +} + +/* Main Content */ + +#main_content { + width: 100%; + -webkit-font-smoothing: antialiased; +} + +section img { + max-width: 100%; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: normal; + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; + color: #b5e853; + letter-spacing: -0.03em; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1), + 0 0 5px rgba(181, 232, 83, 0.1), + 0 0 10px rgba(181, 232, 83, 0.1); +} + +#main_content h1 { font-size: 30px; } +#main_content h2 { font-size: 24px; } +#main_content h3 { font-size: 18px; } +#main_content h4 { font-size: 14px; } + +#main_content h5 { + font-size: 12px; + text-transform: uppercase; + margin: 0 0 5px 0; +} + +#main_content h6 { + font-size: 12px; + text-transform: uppercase; + color: #999; + margin: 0 0 5px 0; +} + +dt { + font-style: italic; + font-weight: bold; +} + +ul li { + list-style-image: url('../images/bullet.png'); +} + +blockquote { + color: #aaa; + padding-left: 10px; + border-left: 1px dotted #666; +} + +pre { + background: rgba(0, 0, 0, 0.9); + border: 1px solid rgba(255, 255, 255, 0.15); + padding: 10px; + font-size: 16px; + color: #b5e853; + border-radius: 2px; + word-wrap: normal; + overflow: auto; + overflow-y: hidden; +} + +code.highlighter-rouge { + background: rgba(0, 0, 0, 0.9); + border: 1px solid rgba(255, 255, 255, 0.15); + padding: 0px 3px; + margin: 0px -3px; + color: #aa759f; + border-radius: 2px; +} + +table { + width: 100%; + margin: 0 0 20px 0; +} + +th { + text-align: left; + border-bottom: 1px dashed #b5e853; + padding: 5px 10px; +} + +td { + padding: 5px 10px; +} + +hr { + height: 0; + border: 0; + border-bottom: 1px dashed #b5e853; + color: #b5e853; +} + +/* Buttons */ + +.btn { + display: inline-block; + background: -webkit-linear-gradient(top, rgba(40, 40, 40, 0.3), rgba(35, 35, 35, 0.3) 50%, rgba(10, 10, 10, 0.3) 50%, rgba(0, 0, 0, 0.3)); + padding: 8px 18px; + border-radius: 50px; + border: 2px solid rgba(0, 0, 0, 0.7); + border-bottom: 2px solid rgba(0, 0, 0, 0.7); + border-top: 2px solid rgba(0, 0, 0, 1); + color: rgba(255, 255, 255, 0.8); + font-family: Helvetica, Arial, sans-serif; + font-weight: bold; + font-size: 13px; + text-decoration: none; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.75); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.btn:hover { + background: -webkit-linear-gradient(top, rgba(40, 40, 40, 0.6), rgba(35, 35, 35, 0.6) 50%, rgba(10, 10, 10, 0.8) 50%, rgba(0, 0, 0, 0.8)); +} + +.btn .icon { + display: inline-block; + width: 16px; + height: 16px; + margin: 1px 8px 0 0; + float: left; +} + +/* Links */ + +a { + color: #63c0f5; + text-shadow: 0 0 5px rgba(104, 182, 255, 0.5); +} + +/* Clearfix */ + +.cf:before, .cf:after { + content: ""; + display: table; +} + +.cf:after { + clear: both; +} + +.cf { + zoom: 1; +} + +#a-title { + text-decoration: none; +} + +/* Footer (LANDAU addition; not part of upstream pages-themes/hacker) */ + +footer { + margin: 60px 0 0; + border-top: 1px dashed #b5e853; + padding: 16px 0 24px; + background: rgba(0, 0, 0, 0.1); +} + +footer .version { + margin: 0; + text-align: center; + font-size: 10px; + color: #444; + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; +} + +/* Code highlighting (rouge-base16-dark, flattened) */ + +.highlight { color: #d0d0d0; } +.highlight table td { padding: 5px; } +.highlight table pre { margin: 0; } +.highlight .w { color: #d0d0d0; } +.highlight .err { color: #151515; background-color: #ac4142; } +.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs { color: #888; } +.highlight .cp { color: #f4bf75; } +.highlight .o, .highlight .ow { color: #f4bf75; } +.highlight .p, .highlight .pi { color: #d0d0d0; } +.highlight .gi { color: #90a959; } +.highlight .gd { color: #ac4142; } +.highlight .gh { color: #6a9fb5; font-weight: bold; } +.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv { color: #aa759f; } +.highlight .kc, .highlight .kt, .highlight .kd { color: #d28445; } +.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 { color: #90a959; } +.highlight .sr { color: #75b5aa; } +.highlight .si, .highlight .se { color: #8f5536; } +.highlight .nt, .highlight .nn, .highlight .nc, .highlight .no { color: #f4bf75; } +.highlight .na { color: #6a9fb5; } +.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx { color: #90a959; } +.highlight .ss { color: #90a959; } diff --git a/themes/landau-hacker/static/favicon.svg b/themes/landau-hacker/static/favicon.svg new file mode 100644 index 0000000..91a33ee --- /dev/null +++ b/themes/landau-hacker/static/favicon.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"> + <text x="50%" y="50%" font-size="56" text-anchor="middle" dominant-baseline="central">⚛️</text> +</svg> diff --git a/themes/landau-hacker/static/images/bkg.png b/themes/landau-hacker/static/images/bkg.png Binary files differnew file mode 100644 index 0000000..d10e5ca --- /dev/null +++ b/themes/landau-hacker/static/images/bkg.png diff --git a/themes/landau-hacker/static/images/bullet.png b/themes/landau-hacker/static/images/bullet.png Binary files differnew file mode 100644 index 0000000..c8f8de1 --- /dev/null +++ b/themes/landau-hacker/static/images/bullet.png diff --git a/themes/landau-hacker/static/rulkc.png b/themes/landau-hacker/static/rulkc.png Binary files differnew file mode 100644 index 0000000..8ae262d --- /dev/null +++ b/themes/landau-hacker/static/rulkc.png diff --git a/themes/landau-hacker/theme.yaml b/themes/landau-hacker/theme.yaml new file mode 100644 index 0000000..008f010 --- /dev/null +++ b/themes/landau-hacker/theme.yaml @@ -0,0 +1,15 @@ +name: "LANDAU Hacker" +license: "CC0-1.0" +licenselink: "https://gitflic.ru/project/maquefel/landau-hacker/LICENSE" +description: "Порт темы Hacker от GitHub Pages с доработками для LANDAU" +homepage: "https://landau.one" +tags: ["blog", "dark", "minimal", "technical"] +features: ["blog", "news", "events"] +min_version: "0.112.0" + +author: + name: "RULKC" + +original: + name: "pages-themes/hacker" + repo: "https://github.com/pages-themes/hacker" |
