Pipi self-hosts and the chicken-or-egg problem.

Mike's Notes

I wanted to write about why and how Pipi 9 is self-hosting and why this created a chicken-or-egg problem.

Pipi 9 is still largely headless, and I need to use the UI to build a UI.

Resources

Pipi self-hosts and the chicken or egg problem.

By: Mike Peters
01/02/2025

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

According to Wikipedia;

"An operating system is self-hosted when the toolchain to build the operating system runs on that same operating system. For example, Windows can be built on a computer running Windows.

Before a system can become self-hosted, another system is needed to develop it until it reaches a stage where self-hosting is possible. When developing for a new computer or operating system, a system to run the development software is needed, but development software used to write and build the operating system is also necessary. This is called a bootstrapping problem or, more generically, a chicken or the egg dilemma.

A solution to this problem is the cross compiler (or cross assembler when working with assembly language). A cross compiler allows source code on one platform to be compiled for a different machine or operating system, making it possible to create an operating system for a machine for which a self-hosting compiler does not yet exist. Once written, software can be deployed to the target system using means such as an EPROM, floppy diskette, flash memory (such as a USB thumb drive), or JTAG device. This is similar to the method used to write software for gaming consoles or for handheld devices like cellular phones or tablets, which do not host their own development tools.

Once the system is mature enough to compile its own code, the cross-development dependency ends. At this point, an operating system is said to be self-hosted." - Wikipedia

Part of the secret sauce of Pipi 9's success is its self-generating nature.

It's like watching the workings of a living biological cell, where hundreds of processes maintain and interact with each other. 

I had to manually create each engine and let them run against each other. It was a very slow and experimental process, like inventing a new cake recipe through trial and error. I stumbled across something that worked by accident.

As a result, it is headless. It has also been designed to generate its own no-code front-end, an HTML user interface for humans.

The current problem is that a no-code interface is needed to create the no-code interface. The lower layers of Pipi are supposed to help generate the UI and learn from user interactions, so a lot needs to be done, making it challenging to simulate.

This means the front end will go through many generations as Pipi learns from feedback loops to improve the UI further. The backend will also self-evolve.

So, it is slow, but progress is steady. And the more I get done, the easier and faster it will get.

So, back to that darn chicken, or is it the egg?

No comments:

Post a Comment