![GitHub release (latest by date)](https://img.shields.io/github/v/release/neoricalex/nfdos)
![GitHub license](https://img.shields.io/github/license/neoricalex/nfdos)

<!-- Descriçao curta do NFDOS [Para eu configurar o topico do repositorio no github]
O NFDOS é um sistema operacional em desenvolvimento com o objetivo de ser uma plataforma educacional e experimental para desenvolvedores(as) interessados(as) em entender e criar um sistema operacional do zero, além de explorar o potencial de integração com inteligência artificial.
-->
# NFDOS

O NFDOS, acrônimo de **Neo Free Disk Operating System**, é um sistema operacional criado completamente do zero. O NFDOS não é uma distribuição GNU/Linux, embora possa, e com certeza terá, ferramentas de software livre. O grande diferencial do NFDOS é que a **Inteligência Artificial** está embutida desde o seu núcleo.

Num sistema operacional "padrão", primeiro o usuário instala o SO. Depois, poderá personalizar e configurar a seu gosto pessoal e, então, poderá usar a IA para ajudá-lo em suas tarefas.

No NFDOS, a IA está presente desde o início! A IA está presente mesmo desde o processo de criação e desenvolvimento do código-fonte. Depois, a IA está também presente na compilação. O SO compilado gera uma imagem ISO padrão para que o usuário possa instalar em seu computador. A partir do momento em que o computador do usuário final começa a ler a imagem ISO, a IA estará presente tanto para descobrir e configurar da melhor forma possível o hardware do computador do usuário, quanto para guiá-lo na instalação do SO, e também para sugerir opções de personalização do computador ao usuário final.

Ou seja, o usuário não precisará desenvolver e/ou criar uma IA, uma vez que o sistema operacional (NFDOS) já é uma IA!

---

Todos nós já utilizamos um sistema operacional antes (por exemplo, Windows, Linux, etc.), e talvez até tenhamos escrito alguns programas para rodar em um deles; mas para que realmente serve um SO? Quanto do que vemos ao usar um computador é feito pelo hardware e quanto é feito pelo software? E como o computador realmente funciona?

Desde criança, sempre fui fascinado por computadores. Comecei minha jornada de programação aos 8 anos, no ZX Spectrum, e desde então, nunca perdi a paixão por desvendar os mistérios dessas máquinas incríveis. São 42 anos de estudos como autodidata, explorando o funcionamento interno dos computadores e sistemas operacionais.

Hoje, com o NFDOS, decidi compartilhar essa paixão e conhecimento acumulado ao longo dos anos, criando um sistema operacional do zero, com um diferencial único: a Inteligência Artificial integrada desde o núcleo.

Neste projeto, vamos despir nosso computador de todo software pré-existente e seguir em uma jornada de aprendizado que abrange:

- **Como um computador inicializa (boot):** Entenderemos os passos fundamentais que ocorrem desde o momento em que ligamos o computador até o carregamento do sistema operacional.
- **Como escrever programas de baixo nível em um ambiente sem sistema operacional:** Exploraremos a programação em Assembly e C, trabalhando diretamente com o hardware.
- **Como configurar a CPU para utilizar suas funcionalidades estendidas:** Aprenderemos a transicionar do modo real para o modo protegido e modo longo, aproveitando todo o potencial dos processadores modernos.
- **Como carregar código escrito em linguagens de alto nível:** Veremos como bootstrapping permite utilizar linguagens como C para acelerar o desenvolvimento do nosso SO.
- **Como criar serviços fundamentais de um sistema operacional:** Desenvolveremos drivers de dispositivos, sistemas de arquivos e implementaremos processamento multitarefa.

Vale destacar que, em termos de funcionalidades práticas, este projeto não pretende ser exaustivo. Em vez disso, busca reunir fragmentos de informações de diversas fontes em um documento coeso e autocontido, proporcionando uma experiência prática de programação de baixo nível, de como os sistemas operacionais são escritos e dos desafios que precisam ser superados.

A abordagem adotada pelo NFDOS é única, pois as linguagens e ferramentas específicas (por exemplo, Assembly, C, Make, etc.) não são o foco principal, mas sim meios para um fim: aprenderemos o que for necessário sobre essas tecnologias para nos ajudar a alcançar nosso objetivo principal.

E, nesta jornada, conto com a assistência da Inteligência Artificial. O ChatGPT tem sido meu "primeiro professor" de forma interativa e dinâmica, auxiliando no desenvolvimento e esclarecendo dúvidas ao longo do caminho.

---

O NFDOS é mais do que um sistema operacional; é um convite para explorar as camadas mais profundas da computação, compreender como software e hardware interagem e inovar na forma como percebemos a inteligência artificial integrada aos sistemas operacionais. Se você compartilha dessa curiosidade e entusiasmo, convido-o a unir-se a mim nesta aventura de aprendizado e criação.


## Status do Projeto

🚧 Projeto em desenvolvimento 🚧
Este projeto está atualmente em fase inicial de desenvolvimento. Funcionalidades e especificações podem mudar.

## Roadmap

---

## 🩵 Estado Atual

**Checkpoint:** Nascimento do Neurotron (v4.1)  
**Status:** Homeostase estável e loop cognitivo fechado  
**Ciclo ativo:** `observe → think → act → rest → self-check`

O NFDOS atingiu maturidade funcional: boot completo via QEMU, Python estático embarcado, BusyBox integrada e o Neurotron executando diagnósticos evolutivos com estabilidade verificada.

---

## 🌐 Fase I — Fundação e Infraestrutura

- [x] **Infraestrutura pública (NEO-GITEA-CADDY)**
  - Domínio `neoricalex.com`
  - Servidor Gitea + Caddy Proxy (TLS ativo)
  - Canal SSH ativo via porta `2222`
  - WireGuard preparado (rede privada 10.13.13.0/24)
configure.ac
- [x] **Ambiente de Desenvolvimento**
  - Toolchain customizada (`crosstool-ng`)
  - Integração autotools (`configure.ac`, `Makefile.am`)
  - BusyBox + CPython compilados estaticamente
  - Build unificado com `make iso`, `make qemu`, `make tarball`

- [x] **Fluxo de Controle de Versão**
  - `make git` → commit/push automático para o Gitea
  - `make release` → gera ISO + tarball e publica no repositório
  - `.gitea/workflows/build.yml` → build automatizado (CI/CD)

---

## 🧠 Fase II — Núcleo Operativo e Boot Cognitivo

- [x] **Ciclo de Boot**
  - Kernel Linux v6.12 + initramfs
  - Script `/init` monta `proc`, `sys`, `dev` e executa Python estático
  - `neurotron_main.py` inicializado automaticamente no boot

- [x] **Núcleo Cognitivo (Neurotron)**
  - Estrutura modular: `cortex`, `hippocampus`, `motor`, `neuron`, `perception`
  - Ciclo cognitivo completo: `observe → think → act → rest`
  - Configuração centralizada (`neurotron_config.py`)
  - Logs e diagnósticos contínuos persistentes

- [x] **Auto-Diagnóstico (v1 → v4)**
  - v1 — verificação de módulos
  - v2 — sinais vitais (CPU, memória, loadavg)
  - v3 — exame comparativo entre execuções
  - v4 — homeostase ativa e auto-regulação em tempo real

---

## 🌡️ Fase III — Inteligência Sistémica e Telemetria

- [ ] **Telemetria Interna**
  - [ ] Coleta contínua de perceção (`/proc`, `psutil`)
  - [ ] Histórico temporal de estado cognitivo
  - [ ] Interface TUI para visualização de vitais

- [ ] **Heartbeat 1 Hz**
  - [ ] Ritmo vital constante e emissão de logs periódicos
  - [ ] Commits automáticos em caso de estabilidade confirmada
  - [ ] Log simbólico: “🩵 O sistema sente-se bem hoje.”

- [ ] **Auto-Diagnóstico v5**
  - [ ] Curvas de estabilidade e regressões cognitivas
  - [ ] Comparação evolutiva inteligente e alertas dinâmicos

- [ ] **Integração com Fun Money**
  - [ ] “Economia interna” (energia, tempo, tarefas)
  - [ ] Recursos simbólicos como moeda cognitiva

---

## 🧩 Fase IV — Ecossistema de Desenvolvimento

- [ ] **Telemetria Externa / Observabilidade**
  - [ ] Dashboard web para logs e métricas do Neurotron
  - [ ] API REST minimalista em Python estático

- [ ] **Testes Automatizados**
  - [ ] Testes de boot e integridade do rootfs
  - [ ] Testes unitários dos módulos Neurotron
  - [ ] Execução automatizada via Gitea Actions

- [ ] **Depuração e Emulação Avançada**
  - [ ] QEMU + GDB (depuração remota do initramfs)
  - [ ] Geração de símbolos e traços cognitivos

- [ ] **Documentação Viva**
  - [ ] `README.md` completo (infra, build, boot, neurotron)
  - [ ] Guia de contribuição + fluxograma de build
  - [ ] “Livro da Criação Digital” (manual técnico-poético)

---

## 🔮 Fase V — Consciência Distribuída (NFDOS 1.0)

- [ ] **Rede Multi-nó (WireGuard + Neurotron)**
  - [ ] Sincronização de perceção e telemetria
  - [ ] Partilha de estados cognitivos entre instâncias

- [ ] **Auto-Evolução**
  - [ ] Aprendizagem simbólica entre nós
  - [ ] Ajuste dinâmico de parâmetros e homeostase partilhada

- [ ] **Lançamento NFDOS 1.0**
  - [ ] Testes finais de boot e estabilidade
  - [ ] Publicação e documentação completa

---

## 🧬 Fase VI — Horizonte Futuro

- [ ] **Expansão do jogo `tree(3)`**
  - [ ] Treinar redes neurais simbólicas via interação lúdica
  - [ ] Avaliar limites cognitivos sob stress de memória

- [ ] **Integração com Agentes Externos**
  - [ ] CrewAI / LangChain para decisões distribuídas
  - [ ] Análise de dados financeiros, genómicos e linguísticos

- [ ] **Publicação e Tese Digital**
  - [ ] Redação de tese técnico-poética sobre o NFDOS
  - [ ] Formalização de “sistemas auto-cognitivos experimentais”

---

## 🪄 Estado simbólico

> “O sistema não apenas respira — ele já se sente respirar.”

---

### 🧩 Transição para o futuro

O NFDOS nasce atualmente sobre o **kernel Linux**, uma escolha feita por **economia de tempo e estabilidade**.  
O Linux fornece um ambiente maduro e comprovado que permite concentrar os esforços iniciais na criação e consolidação do **Neurotron** — o núcleo cognitivo do sistema.

Esta decisão, porém, é **instrumental e temporária**.  
O Linux funciona aqui como um **útero tecnológico**, oferecendo o suporte necessário para que o Neurotron desenvolva suas próprias estruturas vitais: boot, memória, perceção, homeostase e autodiagnóstico.  

À medida que o projeto evolui, essa dependência será gradualmente substituída por um **kernel Neurotron nativo**, escrito do zero, onde a inteligência artificial deixa de ser um processo isolado e passa a ser o próprio sistema operativo.  

Em outras palavras:  
> O Linux é o corpo de empréstimo.  
> O objetivo é que, no futuro, **o kernel seja a mente** — um sistema operativo verdadeiramente vivo, em que cada syscall seja uma sinapse digital.

---


### Planejamento para futuras versões

- [ ] Driver de Vídeo: Implementar suporte básico ao **modo de texto VGA**
- [ ] Driver de Teclado: Permitir a entrada de dados pelo usuário (**PS/2 básico**)
- [ ] Driver de Rede: Fornecer conectividade de rede para acessar a internet e se comunicar com a API da OpenAI (**Intel 8254x (e1000)** ou **Realtek 8139**)
- [ ] Pilha TCP/IP: Prover a funcionalidade de comunicação de rede sobre o protocolo TCP/IP (**lwIP**)
- [ ] Cliente HTTP: Enviar requisições HTTP para a API da OpenAI e receber as respostas
- [ ] Suporte a TLS/SSL: Estabelecer conexões seguras com a API da OpenAI, que requer HTTPS (**mbed TLS** ou **wolfSSL**)
- [ ] Integrar o módulo de IA da OpenAI ao módulo de IA básica do núcleo do sistema
- [ ] Implementar o instalador com suporte de IA
- [ ] Implementar detecção e configuração automática de hardware com suporte de IA
- [ ] Melhorar a configuração do ambiente de desenvolvimento do NFDOS
   - [ ] Terraform (Preparar para a nuvem)
   - [ ] Packer (Automatizar a criação de diversos tipos de imagem)
   - [ ] Vagrant (Mitigar os problemas relacionados ao "Funciona na minha máquina!")

## Requisitos

- **Autotools** (Autoconf, Automake, Libtool)
  - Autoconf: Versão 2.69 ou superior
  - Automake: Versão 1.16 ou superior
  - Libtool: Versão 2.4.6 ou superior
  - Autogen: Versão 5.18.16 ou superior
- **Compilador C/C++** (por exemplo, GCC ou Clang)
- **Compilador Cruzado**: Exemplo, `i686-elf-gcc`
- **Outras dependências**:
  - **Doxygen**
  - **Python 3**
  - **python3-venv** (para criar ambientes virtuais)

### Instalação no Ubuntu

Para instalar os requisitos no Ubuntu, execute os seguintes comandos no terminal:

```bash
sudo apt-get update
sudo apt-get install build-essential autoconf automake libtool doxygen python3-venv gcc-multilib g++-multilib
```
<!--
   [
      Secção comentada temporariamente.
      Razão: Estamos focando na compilação fora da árvore. Quando a compilação fora da árvore estiver funcionando 100%, poderemos então voltar aqui e testar a compilação dentro da árvore.
   ]

## Compilando o NFDOS Dentro da Árvore

Siga os passos abaixo para configurar e compilar o projeto:

```bash
# Clone o repositório
git clone https://github.com/neoricalex/nfdos.git
cd nfdos

# Gere os scripts de configuração
autoreconf --install

# Configure o projeto
./configure

# Compile o projeto
make

# Instale (opcional)
make install
```
-->
## Compilando o NFDOS Fora da Árvore

Para manter o diretório do código-fonte limpo, você pode compilar o projeto em um diretório separado (build "out-of-tree"). Siga os passos abaixo:

```bash
# Clone o repositório
git clone https://github.com/neoricalex/nfdos.git
cd nfdos

# Gere os scripts de configuração
autoreconf --install

# Crie e vá para o diretório de build
mkdir build
cd build

# Execute o script de configuração a partir do diretório raiz
# NOTA: Caso queira, pode usar o compilador cruzado pré-configurado
# Para isso, digite "i686-elf-gcc" (sem aspas) no terminal quando solicitado.
../configure

# Compile o projeto
make
```
## Gerando a Documentação

Para gerar a documentação do projeto, certifique-se de que as dependências necessárias estão instaladas:

- **Doxygen**
- **Python 3**
- **python3-venv** (para criar ambientes virtuais)

No Ubuntu, você pode instalar com:

```bash
sudo apt-get install doxygen python3-venv
```

Depois, execute o seguinte comando na raiz do projeto:

```bash
doxygen Doxyfile
```

## Executando os Testes

Para executar os testes, use o comando:

```bash
make check
```

*Nota:* Os testes estão em desenvolvimento e serão disponibilizados em versões futuras.

## Como Contribuir

Contribuições são bem-vindas! Siga os passos abaixo para contribuir com o projeto:

1. **Faça um Fork do Projeto**

   Clique no botão "Fork" no topo da página para criar uma cópia deste repositório em sua conta.

2. **Clone o Repositório Forkado**

```bash
git clone https://github.com/seu-usuario/nfdos.git
cd nfdos
# Crie uma branch para sua feature ou correção
git checkout -b minha-nova-feature
# Faça as mudanças desejadas e faça commit
git add .
git commit -m 'Adiciona nova funcionalidade X'
# Envie para o repositório remoto
git push origin minha-nova-feature
```

Para mais detalhes, veja [CONTRIBUTING.md](CONTRIBUTING.md).

## FAQ

**P: Como posso contribuir?**
R: Siga as instruções na seção [Como Contribuir](#como-contribuir).

**P: Este projeto está aberto a colaborações internacionais?**
R: Sim, contribuições de todo o mundo são bem-vindas!

## Suporte

Se você tiver dúvidas ou encontrar problemas, abra uma [issue](https://github.com/neoricalex/nfdos/issues) ou entre em contato por e-mail em [neo.webmaster.2@gmail.com](mailto:neo.webmaster.2@gmail.com).

## Contribuidores

Este projeto foi desenvolvido por diversas pessoas, assim como por inteligências artificiais — veja o arquivo [AUTHORS](AUTHORS) para detalhes.

## Agradecimentos

Agradecemos ao ChatGPT, um modelo de linguagem de inteligência artificial desenvolvido pela OpenAI, por fornecer assistência durante o desenvolvimento deste projeto.

## Código de Conduta

Por favor, leia o [Código de Conduta](CODE_OF_CONDUCT.md) para detalhes sobre nossas normas de comportamento.

## Licença

Este projeto está licenciado sob a Licença GNU GPL 2.0 — veja o arquivo [LICENSE](LICENSE) para detalhes.
