Skip to content

Commit f6a85c8

Browse files
author
Илья Глазунов
committed
added manifest deploy
1 parent 45d7383 commit f6a85c8

File tree

3 files changed

+425
-0
lines changed

3 files changed

+425
-0
lines changed

.github/workflows/pages.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
paths:
8+
- 'pages/**'
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: read
13+
pages: write
14+
id-token: write
15+
16+
concurrency:
17+
group: "pages"
18+
cancel-in-progress: false
19+
20+
jobs:
21+
deploy:
22+
name: Deploy to GitHub Pages
23+
runs-on: ubuntu-latest
24+
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@v4
28+
29+
- name: Setup Pages
30+
uses: actions/configure-pages@v4
31+
32+
- name: Upload artifact
33+
uses: actions/upload-pages-artifact@v3
34+
with:
35+
path: './pages'
36+
37+
- name: Deploy to GitHub Pages
38+
id: deployment
39+
uses: actions/deploy-pages@v4

pages/suip-ru.html

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
<!DOCTYPE html>
2+
<html lang="ru">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Манифест SUIP</title>
7+
<style>
8+
body {
9+
max-width: 700px;
10+
margin: 40px auto;
11+
padding: 0 20px;
12+
font-family: Georgia, serif;
13+
line-height: 1.7;
14+
color: #222;
15+
}
16+
h1 { text-align: center; margin-bottom: 5px; }
17+
h2 { margin-top: 40px; border-bottom: 1px solid #ccc; padding-bottom: 5px; }
18+
h3 { margin-top: 30px; }
19+
.subtitle { text-align: center; color: #666; margin-bottom: 40px; }
20+
.quote { font-style: italic; border-left: 3px solid #999; padding-left: 20px; margin: 30px 0; color: #555; }
21+
code { background: #f4f4f4; padding: 2px 5px; font-size: 0.9em; }
22+
pre { background: #f4f4f4; padding: 15px; overflow-x: auto; font-size: 0.85em; }
23+
ul { padding-left: 25px; }
24+
li { margin: 8px 0; }
25+
table { border-collapse: collapse; width: 100%; margin: 20px 0; }
26+
th, td { border: 1px solid #ccc; padding: 8px 12px; text-align: left; }
27+
th { background: #f4f4f4; }
28+
footer { margin-top: 60px; padding-top: 20px; border-top: 1px solid #ccc; color: #666; font-size: 0.9em; }
29+
</style>
30+
</head>
31+
<body>
32+
33+
<h1>Манифест SUIP</h1>
34+
<p class="subtitle">Simple Unified Internet Protocol — Версия 0.1</p>
35+
36+
<div class="quote">
37+
«Интернет-протоколы, которые мы используем сегодня, несут на себе 30+ лет legacy-багажа.
38+
Что если начать с чистого листа, сохранив накопленный опыт, но оставив bloat позади?»
39+
</div>
40+
41+
<h2>Проблема</h2>
42+
43+
<p>HTTP был создан в 1991 году для обмена гипертекстовыми документами. С тех пор его расширяли, патчили и адаптировали для всего: от стриминга видео до чатов в реальном времени и REST API. В результате получился протокол, который:</p>
44+
45+
<ul>
46+
<li>Использует текстовые заголовки переменной длины, которые нужно парсить символ за символом</li>
47+
<li>Имеет ~40 статус-кодов, многие из которых неоднозначны или редко используются</li>
48+
<li>Требует отдельных протоколов (WebSocket) для двунаправленной связи</li>
49+
<li>Нуждается во внешних спецификациях (OpenAPI) для самодокументирования</li>
50+
<li>Тащит за собой десятилетия обратно совместимого мусора</li>
51+
</ul>
52+
53+
<p>Это не попытка заменить HTTP. Это исследование того, как мог бы выглядеть HTTP протокол, спроектированный сегодня с нуля.</p>
54+
55+
<h2>Видение</h2>
56+
57+
<p><strong>SUIP</strong> (Simple Unified Internet Protocol) — экспериментальный протокол, построенный на четырёх принципах:</p>
58+
59+
<h3>1. Простота прежде всего</h3>
60+
<p>Ядро протокола должно быть достаточно простым, чтобы понять его за один вечер и реализовать за выходные. Сложность принадлежит опциональным расширениям, а не фундаменту.</p>
61+
62+
<h3>2. Самоописываемость</h3>
63+
<p>Протокол должен объяснять сам себя. Клиенты должны уметь обнаруживать возможности сервера без внешней документации. Серверы должны объявлять, что они умеют.</p>
64+
65+
<h3>3. Расширяемость без фрагментации</h3>
66+
<p>Расширения должны быть стандартизированными паттернами, а не ad-hoc добавками. CRUD API, стриминговый сервис и pub/sub система должны использовать узнаваемые, универсальные паттерны.</p>
67+
68+
<h3>4. Дружелюбность к разработчикам</h3>
69+
<p>Если что-то сложно реализовать — это неправильно. Референсная реализация должна быть меньше 2000 строк. Спецификация должна быть ясной, краткой и практичной.</p>
70+
71+
<h2>Протокол</h2>
72+
73+
<p>SUIP использует фиксированный 12-байтный бинарный заголовок, за которым следует тело переменной длины:</p>
74+
75+
<pre>
76+
Байт 0: Версия протокола (0x01)
77+
Байт 1: Тип сообщения (REQUEST / RESPONSE / ERROR)
78+
Байт 2: Операция (FETCH / STORE / LIST / INFO)
79+
Байт 3: Статус-код (SUCCESS / NOT_FOUND / и т.д.)
80+
Байт 4: Тип контента (TEXT / BINARY / XML / STRUCTURED_PATH)
81+
Байт 5: Флаги (сжатие, keep-alive, приоритет)
82+
Байты 6-7: Зарезервировано
83+
Байты 8-11: Длина контента (big-endian)
84+
</pre>
85+
86+
<p>Вот и всё. Никакой неоднозначности при парсинге. Никаких заголовков переменной длины. Никаких проблем с кодировкой текста.</p>
87+
88+
<h3>Схема URL</h3>
89+
<pre>suip://host[:port]/path</pre>
90+
<p>Порт по умолчанию: 2802. Транспорт: TCP.</p>
91+
92+
<h3>Операции</h3>
93+
<table>
94+
<tr><th>Код</th><th>Имя</th><th>Назначение</th></tr>
95+
<tr><td>0x01</td><td>FETCH</td><td>Получить ресурс</td></tr>
96+
<tr><td>0x02</td><td>STORE</td><td>Сохранить ресурс</td></tr>
97+
<tr><td>0x03</td><td>LIST</td><td>Список доступных ресурсов</td></tr>
98+
<tr><td>0x04</td><td>INFO</td><td>Метаданные ресурса</td></tr>
99+
</table>
100+
101+
<h3>Статус-коды</h3>
102+
<table>
103+
<tr><th>Код</th><th>Имя</th></tr>
104+
<tr><td>0x00</td><td>SUCCESS</td></tr>
105+
<tr><td>0x01</td><td>NOT_FOUND</td></tr>
106+
<tr><td>0x02</td><td>ACCESS_DENIED</td></tr>
107+
<tr><td>0x03</td><td>SERVER_FAULT</td></tr>
108+
<tr><td>0x04</td><td>INVALID_REQUEST</td></tr>
109+
<tr><td>0x05</td><td>UNSUPPORTED_OPERATION</td></tr>
110+
</table>
111+
112+
<p>Шесть статус-кодов. Это всё, что нужно для MVP.</p>
113+
114+
<h2>Разметка</h2>
115+
116+
<p>SUIP определяет минималистичную XML-разметку для контента:</p>
117+
118+
<pre>
119+
&lt;?xml version="1.0"?&gt;
120+
&lt;page&gt;
121+
&lt;container&gt;
122+
&lt;text class="heading"&gt;Добро пожаловать в SUIP&lt;/text&gt;
123+
&lt;text&gt;Простая страница без JavaScript, без CSS-фреймворков, без bloat.&lt;/text&gt;
124+
&lt;link href="suip://localhost/about.xml"&gt;Узнать больше&lt;/link&gt;
125+
&lt;/container&gt;
126+
&lt;/page&gt;
127+
</pre>
128+
129+
<p>Четыре элемента: <code>&lt;page&gt;</code>, <code>&lt;container&gt;</code>, <code>&lt;text&gt;</code>, <code>&lt;link&gt;</code>. Всё остальное — расширения.</p>
130+
131+
<h2>Расширения</h2>
132+
133+
<p>Ядро протокола намеренно минималистично. Дополнительная функциональность добавляется через стандартизированные расширения:</p>
134+
135+
<ul>
136+
<li><strong>CRUD Pattern</strong> — REST-подобное управление ресурсами</li>
137+
<li><strong>Streaming Pattern</strong> — односторонние потоки данных</li>
138+
<li><strong>PubSub Pattern</strong> — publish/subscribe для событий в реальном времени</li>
139+
<li><strong>RPC Pattern</strong> — удалённый вызов процедур</li>
140+
<li><strong>Query Pattern</strong> — гибкие запросы данных</li>
141+
</ul>
142+
143+
<p>Серверы объявляют свои возможности через <code>/.well-known/capabilities</code>. Клиенты адаптируются автоматически.</p>
144+
145+
<h2>Чем SUIP не является</h2>
146+
147+
<ul>
148+
<li><strong>Не замена HTTP.</strong> HTTP работает. SUIP — это эксперимент.</li>
149+
<li><strong>Не готов к production.</strong> Версия 0.1 не имеет шифрования, аутентификации, обширного тестирования.</li>
150+
<li><strong>Не стандарт.</strong> Это community-driven исследование, открытое для радикальных изменений.</li>
151+
</ul>
152+
153+
<h2>Чем SUIP является</h2>
154+
155+
<ul>
156+
<li>Упражнение в проектировании протоколов с нуля</li>
157+
<li>Площадка для экспериментов с самоописывающимися протоколами</li>
158+
<li>Простой фундамент, который может расти через расширения</li>
159+
<li>Приглашение думать иначе о том, как мы общаемся через сети</li>
160+
</ul>
161+
162+
<h2>Дорожная карта</h2>
163+
164+
<ul>
165+
<li><strong>v0.1</strong> — Ядро протокола, операция FETCH, базовая разметка ✓</li>
166+
<li><strong>...</strong> — ???</li>
167+
<li><strong>...</strong> — ???</li>
168+
<li><strong>...</strong> — ???</li>
169+
<li><strong>v1.0</strong> — Production-ready, комплексное тестирование, рассмотрение RFC</li>
170+
</ul>
171+
172+
<h2>Присоединяйся к эксперименту</h2>
173+
174+
<p>SUIP — open source. Ты разработчик или просто аноним, любопытствующий о том, как работает интернет — добро пожаловать.</p>
175+
176+
<ul>
177+
<li>Изучи спецификацию</li>
178+
<li>Напиши клиент на своём любимом языке</li>
179+
<li>Предложи расширения</li>
180+
<li>Поставь под сомнение допущения спецификации</li>
181+
</ul>
182+
183+
<footer>
184+
<p><strong>Манифест протокола SUIP v0.1</strong><br>
185+
Статус: Экспериментальный<br>
186+
Автор: shiftyx1<br>
187+
Дата: Январь 2026</p>
188+
</footer>
189+
190+
</body>
191+
</html>

0 commit comments

Comments
 (0)