| Bellacosa Mainframe apresenta o primeiro controle de versão IEBUPDATE |
🍔💾 Before Git Was Cool
O primeiro controle de versão no mainframe (e por que você já usou sem saber)
Midnight Lunch Edition – para ler entre um batch e outro
Hoje todo mundo fala de Git como se controle de versão tivesse surgido junto com startup, hoodie e café cold brew.
Mas quem viveu (ou herdou) ambiente mainframe sabe: o problema é antigo — e a solução também.
Antes de existir “version control”, já existia controle de mudanças.
E spoiler: o mainframe resolveu isso décadas antes do Git.
🏛️ Quando “controle de versão” ainda não tinha nome
Nos anos 60, a pergunta já era a mesma que ecoa hoje nos times DevOps:
Quem mexeu nesse source?
Qual versão está em produção?
Por que ontem funcionava e hoje abenda?
A diferença é que:
Não existia terminal bonito
Não existia branch
Não existia merge
Existia batch, cartão perfurado e PDS
🥇 O verdadeiro pioneiro: IEBUPDTE
📅 Ano de lançamento: 1964
🏭 Fabricante: IBM
🖥️ Ambiente: OS/360
O IEBUPDTE não era vendido como “controle de versão”, mas na prática ele fazia exatamente isso:
👉 Controle estruturado de alterações em código-fonte
🧠 O que o IEBUPDTE fazia (na raça)
Aplicava deltas (ADD / DEL / CHANGE)
Atualizava membros em PDS
Permitida reconstrução de versões
Mantinha histórico dentro do próprio source
Funcionava 100% batch-first
Exemplo clássico:
./ ADD NAME=PROG1
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. PROG1.
./ ENDUP
Ou removendo código:
./ DEL 000300-000500
📌 Diff e patch antes do diff existir.
✅ O que ele fazia bem
✔️ Controle linha a linha
✔️ Reprodutibilidade
✔️ Integração total com o SO
✔️ Auditoria via JCL
✔️ Simplicidade brutal
❌ O que ele não fazia
✖️ Branch
✖️ Merge
✖️ Concorrência elegante
✖️ UX amigável
✖️ Marketing 😅
🟠 O primeiro “controle de versão moderno”: SCCS
📅 1972
🏭 Bell Labs (AT&T)
O SCCS (Source Code Control System) não nasceu no mainframe, mas trouxe os conceitos que moldaram tudo depois:
Check-in / check-out
Histórico separado do código
Identificação automática de versão
Deltas reversíveis
@(#)program.c 1.3
Se você usa Git hoje, agradeça silenciosamente ao SCCS.
⚔️ Outros nomes da época (não proprietários)
🟤 CMS UPDATE (VM/CMS)
Um IEBUPDTE interativo.
Simples, direto e extremamente eficiente em ambientes VM.
🟣 RCS (1982)
Evolução do SCCS, mais simples, mais elegante — ainda sem branches decentes.
🚫 E os famosos “controladores de biblioteca”
(menção honrosa, sem aprofundar)
PANVALET
LIBRARIAN
Eles dominaram o mercado, mas não inventaram o conceito.
Só empacotaram, venderam e deram manual grosso.
🥚 Easter Eggs de CPD
🥚 Easter Egg #1
IEBUPDTE é mais parecido com git apply do que com git commit.
🥚 Easter Egg #2
Comentário no COBOL tipo:
* ALTERADO POR CARLOS EM 12/08/1989
➡️ Isso é controle de versão manual.
Herança direta da era pré-ferramenta.
🥚 Easter Egg #3
Controle de versão nasceu batch-first.
CI/CD moderno só está reaprendendo isso.
🥚 Easter Egg #4
Se o histórico está no source, é porque um dia não existia repositório.
🧓 Filosofia Bellacosa Mainframe
“O Git não inventou controle de versão.
Ele só colocou uma interface moderna numa ideia que o mainframe já resolvia quando computador ocupava uma sala inteira.”
📌 Resumo para guardar no bolso
| Ferramenta | Ano | Tipo | Origem |
|---|---|---|---|
| IEBUPDTE | 1964 | Controle de mudanças | IBM |
| CMS UPDATE | ~1969 | Controle de mudanças | IBM |
| SCCS | 1972 | Version control formal | Bell Labs |
| RCS | 1982 | Version control | Unix |
🍔 Midnight Lunch Final Thought
Enquanto o mundo discute GitOps, trunk-based e feature flags, o mainframe segue ali, quieto, lembrando:
“Nada disso é novo. Só mudou o hype.”