The perfect operating system and software
development system is one that does not require documentation. That
every application that is written can be accomplish from the knowledge a
person already possesses.
The litmus test to determine when the systems has reached its most
simplest form is when:
- time to develop applications is reduced from man-years of effort
- software is absolutely unbreakable
- software is absolutely secure
I believe a perfect system can only be reached by first assuming that
it can. Jane is my attempt to reach this goal. I first determined that
it can be done, then I set out to design such a system. I estimate that
it will take me another twenty five years of effort to create a perfect
system. Will it be enough, and where will it fail? These are always the
key questions in any new endeavor. I cannot find any failure points
other than time and money. Technically it is a very easy design task:
get rid of all current technologies and build new ones with these goals.
Get rid of all your text books, ignore personalities, politics, and
most importantly get rid of your fears. Assume that it "has" to get
done, do whatever it takes. I then can find no reason that cannot be
If we start only from first-principles with these goals, it is very
easy. It is impossible if we use any of the current technologies which
are a fragmented mesh of partial propitiatory solutions.
The worst case, it does not work. The best case is that it does work.
What have I lost, just 25 year of work, nothing in the scope of things.
"Formula for success: rise early, work hard, strike oil." -- J
"It is always the simple that produces the marvelous." --
"Don't mistake activity with achievement." -- John Wooden
"Do what you feel in your heart to be right, for you'll be
criticized anyway." -- Eleanor Roosevelt.
Tools needed to build Jane
There are four basic tools that are
needed to begin writing a better software development system. A
language, forms, database, and a change to the basic hardware.
Our current technology is based on the idea that humans would be
doing all the programming. To turn this task over to the computer will
mean that a whole new foundation will needs to be built. The first tool
is a redesign of the hardware itself, which includes the hardware
instruction set. The computer design will be indifferent to the
human, and should be designed with one overriding objective, get the
human out of the equation. A weighing scale is used, on one side
computer time on the other human time to determine design. The hardware
should perform compile-time logic as well as run-time logic, in a way
that optimizes both. Context sensitive instructions to increase
reliability and to reduce compile-time logic declaration. Hardware
induced knowledge, with extensions of the fundamental information unit.
Have information units that are executable, storable, and transferable
as a single format.
The second tool, A language that is optimized for communication from
humans to computer. An instruction set that is N-tiered and
optimize-able from level to level in both directions. The language that
is context sensitive and knowledgeable about its total environment. The
optimization shall be for space, speed, and human communication. The
language shall be modifiable / extendable but without versions.
The third tool is an application builder. This tool permits the
building of Jane to manage itself in a method similar to human
construction techniques. Load calculators, testing standards, project
management, product tracking, improvements, schedules, procurement, and
units of measurement.
The fourth tool is the transport and storage of knowledge, a database
if you like. The segmentation, ordering and the knowledge base for
world wide communication of information and knowledge.
It is no longer just information but also the historical context and
the capabilities on knowledge that the system is to manage.
If I use
inferior tools, I get inferior products. I remember at age twelve I
built a desk from a sheet of plywood. First I did not know what I was
doing. Second; I did learn that lack of experience was my greatest
challenge. I have since learned that having the proper tools to will
overcome the lack of experience. I therefore need to build the
Software development without documentation:
development system that does not need documentation means that we can
communication logic to the computer with knowledge that a human can
remember for long period of time. This communication will include every
aspect of knowledge. The funny thing is that humans need to know very
little if the computer already knows what to do. It is not
documentation that we remove but the requirement for documentation. A
weak explanation, but if we have self driving cars, then there is
no need to learn to drive a car, and we do not need to program a car to
drive itself, if it can already do so. So we simply remove the need for
You will never be able to get there from here. The current software
development technology has no knowledge that does not require
documentation. So we have to start over with a design that begins at the
bit and work forwards until everything piece of logic is known to the
system and requires no documentation. Yes, yes, yes, easier said than
This says that the computer will become a master-craftsman in all
subject matters. This implies twenty man-years of learning on each
subject that is implemented by the computer. However since we do have at
least one human master-craftsman in each subject, then the wall-clock
time to inject knowledge into the computer should be extremely fast.
Looking at it from our current technology, we expect every human to
become a master-craftsman in hundreds of technologies. We are, therefore
where we are, still using 1822 technologies, that of Charles Babbage's
machines. A single instruction / single step programming logic, with the
human hand coding the logic just as Ada Lovelace did in 1843. I have not
had the opportunity to program the Babbage's Analytical Engine, but I
suspect that it is easier to program than modern computers. It did
operations that I am just now trying to put into my language, that of
flow control, which I suspect have fewer constraints than modern
What is Documentation?
Documentation provides a human facts he/she does not possess. It
does not provide the expert knowledge or craftsmanship to put those fact
Documentation causes far greater devastation than just the trillions
of development hours wasted. Documentation does not provide complete
knowledge (experience) and this causes imperfections in everyone's application.