Moon Flower Society > Análise de Compatibilidade — Ecossistema m15o × runv.club

Análise de Compatibilidade — Ecossistema m15o × runv.club

Quais dos 38 projetos m15o podem incrementar o runv.club, quais não, e por quê.

Posted July 2, 2026. Markdown. Tags: m15o, runv, pubnix, smallweb, gemini, gopher, nex.


Análise de Compatibilidade

Ecossistema m15o (small web) × runv.club (pubnix)

Quais dos 38 projetos m15o podem incrementar o runv, quais não, e por quê. Base: os resumos em m15o/docs/, os manifests de dependências (go.mod / PHP) e a arquitetura conhecida do runv-server.

Data: 2026-07-02 · Escopo: 38 repositórios em m15o/ · Autor upstream: m15o (git.sr.ht / hg.sr.ht)


Sumário

  1. Contexto e alinhamento
  2. Critérios de compatibilidade
  3. Veredito geral (38 projetos)
  4. Tier A — Incorporar já
  5. Tier B — Incorporar com infraestrutura extra
  6. Tier C — Não incorporar
  7. Todos podem ser compatíveis?
  8. Roadmap recomendado
  9. Riscos e observações transversais

1. Contexto e alinhamento

runv.club é um pubnix Debian — um servidor Unix compartilhado acessado por SSH (headless, sem ambiente gráfico). Serve conteúdo em três protocolos por usuário: HTTP (Apache mod_userdir), Gopher e Gemini (public_html / public_gopher / public_gemini), além de IRC (#runv). O código é Python stdlib puro, o estado vive em arquivos JSON (não há banco SQL), e a experiência é a de uma comunidade tilde: comandos de terminal (runv-who, runv-finger, runv-bulletin, chat), geração estática e site bilíngue.

m15o é o ecossistema da “small web”: 38 repositórios em torno de Gemini, Gopher e Nex, formatos de publicação em HTML puro (HTML Blog / HTML Journal), wikis estáticas, serviços de comunidade auto-hospedáveis e alguns experimentos de linguagens/editores.

Alinhamento filosófico: praticamente perfeito. O m15o é, em grande parte, exatamente o “software de comunidade” que falta ao runv. Vários projetos são multi-protocolo (HTTP+Gemini+Gopher), que é justamente o modelo do runv. A compatibilidade, portanto, quase nunca é uma questão de propósito — é uma questão de modelo de execução e footprint de infraestrutura.


2. Critérios de compatibilidade

Cada projeto foi avaliado por cinco eixos:

  1. Modelo de execução. Serviço headless (roda em servidor via terminal/daemon) ou app gráfico (precisa de X11/display)? Um pubnix é acessado por SSH e não tem display gráfico; o sshd do runv inclusive desativa X11 forwarding. Apps SDL2/Lazarus não rodam como serviço.

  2. Runtime e footprint. Go compila para um binário estático (fácil de instalar + systemd). PHP exige PHP-FPM; Node exige o runtime Node; C precisa de toolchain de build.

  3. Banco de dados. O runv hoje não usa SQL — estado em JSON. Todos os serviços Go de comunidade usam PostgreSQL (github.com/lib/pq) e os PHP usam MySQL. Adotá-los introduz um servidor de banco — o principal custo operacional e a maior quebra de invariante.

  4. Multiusuário vs pessoal. Serve toda a comunidade, é por-usuário, ou é config pessoal do autor?

  5. Redundância. O runv já faz homepages, quota, diretório de membros, Gemini, Gopher e wiki estática. Projetos que refazem o núcleo do runv com outra stack tendem a conflitar em vez de incrementar.

Legenda dos tiers: A Incorporar já (baixo custo, encaixe perfeito) · B Incorporar com infra extra (BD / LAMP / Node) · C Não incorporar (incompatível ou redundante)


3. Veredito geral (38 projetos)

Projeto O que é Stack Veredito
nex-pfm Lib do protocolo Nex Go A — base do Nex
nexd Daemon Nex (porta 1900) Go A — 4º protocolo
kinex Gateway HTTP -> Nex Go A — Nex na web
rex Cliente Nex de terminal ksh (1 linha) A — vira comando
the-neon-kiosk Agregador de blogs/journals Go (htmlb/htmlj) A — descoberta
ni Wiki estática (gemtext) Go A — por usuário
nini Wiki estática (HTML) Go A — por usuário
moka Wiki client-side (1 HTML) HTML/JS A — no skel
yon Wiki/notas client-side HTML/JS A — no skel
emacs.d Config Emacs p/ small web Emacs Lisp A — config opcional
gmi2html Lib gemtext -> HTML Go A — bloco reutilizável
htmlb Parser de HTML Blog Go A — dep do kiosk
htmlj Parser de HTML Journal Go A — dep do kiosk
midnight-pub Pub social multi-protocolo Go + PostgreSQL B — flagship (BD)
smol.pub Journal multi-protocolo Go + PostgreSQL B — BD + autocert
status Microblog de status Go + PostgreSQL B — BD
vpub Fórum hierárquico Go + PostgreSQL B — BD (admin/admin!)
owl-report Leitor de feeds RSS/Atom Go + PostgreSQL B — BD
riku Backend de formulários Go + PostgreSQL B — BD
feed Parser RSS/Atom Go B — dep do owl-report
opml Parser de OPML Go B — dep do owl-report
html-blog Validador de HTML Blog Go B — nicho
html-journal Validador de HTML Journal Go B — nicho
lipu.li Wiki multiusuário PHP + MySQL B — LAMP
mebo Fórum PHP + MySQL B — LAMP (dup. vpub)
piclog Fotolog JPEG PHP + MySQL B — LAMP
warp Cliente Nex no browser PHP B — precisa PHP
nexy Proxy Nex -> Gemini Node.js B — runtime Node
nspace Ling. de máq. de registradores C (terminal) C — curio de terminal
15f Ling. Forth + gráficos C + SDL2 C — gráfico (headless)
bitters Editor gráfico C + SDL2 C — gráfico
grid Editor gráfico (ACME) C + SDL2 C — gráfico
tny VM de 256 bytes gráfica C + SDL2 C — gráfico
nova Cliente Nex GUI Pascal/Lazarus C — desktop GUI
dotfiles Config FVWM/X11 pessoal ksh/X11 C — desktop
ichi Plataforma de homepages Go + PostgreSQL + SFTP C — duplica o runv
nightfall-server Servidor Gemini+HTTP Go + autocert C — redundante
ichipedia Enciclopédia estática gemtext/HTML C — conteúdo

Contagem: Tier A = 13 · Tier B = 15 · Tier C = 10.


4. Tier A — Incorporar já

Encaixam no runv com pouco ou nenhum atrito: são binários Go únicos, arquivos estáticos ou ferramentas de terminal. Nenhum exige banco de dados.

4.1 Suíte Nex — um 4º protocolo para o runv

O runv já serve Gopher e Gemini por usuário. Adicionar Nex é o incremento mais natural e barato: espelha o padrão existente e é 100% alinhado com a Nightfall City do m15o.

4.2 Descoberta e wikis estáticas — sem banco, ethos idêntico


5. Tier B — Incorporar com infraestrutura extra

Alto valor de comunidade, mas cada um introduz um banco de dados ou runtime novo. Viável no Debian, porém quebra a invariante “estado em JSON, sem SQL” do runv. Recomendação: padronizar PostgreSQL (a maioria dos serviços Go usa lib/pq) e só entrar no mundo PHP/MySQL se realmente quiser os apps PHP.

5.1 Serviços Go (PostgreSQL)

5.2 Apps PHP (MySQL) e outros runtimes


6. Tier C — Não incorporar

6.1 Incompatíveis com um servidor headless (apps gráficos/desktop)

Precisam de display gráfico. O runv é acessado por SSH sem X, e o sshd desativa X11 forwarding — logo não rodam como serviço. Fazem sentido na máquina do próprio membro, não no servidor compartilhado.

6.2 Redundantes ou conflitantes com o núcleo do runv

6.3 Caso-limite


7. “Todos podem ser compatíveis?”

Resposta honesta: a maioria sim, mas não todos — e o motivo é estrutural, não de vontade.

Conclusão: o ecossistema m15o é um encaixe raro para o runv. O trabalho real não é vencer incompatibilidade de propósito — é decidir quanto de infraestrutura nova (sobretudo um banco de dados) você aceita introduzir, e evitar duplicar o que o runv já faz.


8. Roadmap recomendado

Da menor para a maior fricção:

Fase 1 — Protocolo Nex (sem BD, espelha o que já existe)

Fase 2 — Descoberta e escrita estática (sem BD)

Fase 3 — Serviços de comunidade (introduz PostgreSQL)

Fase 4 — Extras opcionais


9. Riscos e observações transversais

Fim da análise.

View the original Markdown file


Ideas | What changed | RSS | About | Text version

Pablo Murad <pablomurad@pm.me>