What is Software 2.0?
What is software 2.0? Why software 2.0? How does it compare with Software 1.0?
Software 1.0 is built on algorithms. In this, the programming paradigm is to write instructions that manipulate and store data. The processor executes these instructions one at a time. The picture below is an example of a typical enterprise software application.
Each line represents a program. It takes data either from outside or writes/update data base. For example, leave entry takes input from outside and writes to leave database. Besides reading and writing to a database, there is also a process flow i.e sequence that Leave approve can only follow leave entry. Presently, this flow functionality is engineered. Software 1.0 language like Java, C, java script is used to make these programs.
The Software 1.0 program is a sequence of symbol manipulation instructions, organized in a instruction stream. The software 1.0 processor advances when program counter advances to move to the next instruction. It does not have any flow primitives.
But to the users of the system, the only thing relevant is the 6 separate interactions and the sequence in which it happens. The user is not concerned, how this was accomplished.
So why not build a new programming paradigm and new processor architecture which manipulates interactions? This will significantly reduce effort, bugs and technical debt pile.
Software 2.0 processor is built precisely to fill this gap. It is a new kind of processor which manipulates interactions. This processor keeps track of all the interaction sequence, sense when an interaction has happened and it exposes the next set of interactions. THERE IS NO ALGORITHMS ONLY INTERACTIONS.
Presently, there is a thought that current AI/ML is Software 2.0. Even though the approach is different, there is plenty of software 1.0 code manipulating data to create this neural network weights.
We don’t believe this is a genuine reinvention of software. We are of the view that software genuinely needs to be reinvented, as software 1.0, does not address some of the new applications demands like security, privacy, AI, building processes and hyper-connected nature of applications. Software 2.0 is the next evolution of software. Like Software 1.0, had lambda calculus as its foundation, the next generation software should also be based on solid mathematical foundations.
Software 2.0, in our view, is a advancement of software with mathematical rigor. Software 2.0, has its foundation in process calculus i.e pi calculus.
Unlike software 1.0, Software 2.0 executes processes, that is observed thru signals. To achieve this, process is organized as signal configurations. The configuration specifies what signals are exposed when an signal is interacted with. So to the outside world, a process is, signals which can be interacted with (No API or procedures). On interacting with a signal, new signals emerge from the process. This emergent behavior is one of the properties of Software 2.0.
Taking the leave management process as an example, it has the above 6 signal . 4 signals that are exposed, and 2 signals hidden (Approve, Deny). Each signal is a token that is issued by the Interaction Processor, so process can interact. These signals can either be inbound or outbound. Notice, token can contain other tokens ( eg. To the approver, it presents a pleasant experience of discovering Approve and Deny thru Leave Approve ).
The signal could be observed on a UI, a IOT device or a URL exposed as a QRCode.
Software 2.0 Interaction processor, runs processes, by issuing tokens. This makes systems more secure, private and enables next generation Emergent AI.