Picos as a web application development stack

This blog explores a novel computing technique for creating applications that run on the web. Picos can be used for this purpose and, by themselves, provide a complete web app development stack.

What is a pico?

Picos are persistent objects with computational power and a rich Internet API. As such, they can be used to create web applications.

Picos were invented by Phil Windley and are maintained by Pico Labs. They follow the actor model of concurrent computation.

Why choose picos?


For several good reasons, see Phil's "Ten Reasons to Use Picos for Your Next Decentralized Programming Project". As we will see, a web application is very much a decentralized program.

What is the web?

The web (shorthand for the World Wide Web) is an application running on top of the Internet. Arguably, it is one of the most popular such applications (others include email, FTP, etc.). A personal view of the relationship between the Internet and the web is presented in this slide show, "The Internet and the World Wide Web" which contains links to the history of both the Internet and the web (along with asides about the author's history).

An interesting note: although part of the Internet, the web is actually larger than the Internet. That is, there are ten times more websites (over a billion) than there are servers (over 100 million) on the Internet.

The web is a network of interconnected resources, many of which are HTML documents. Web servers (software) running on a server (machine connected to the Internet) respond to requests from a web browser for one these resources and send it back to the browser in response. A browser itself is software running on hardware owned and operated by one of over 4 billion people.

What is a web application?

Almost immediately after the invention of the web, people realized that the web server could also compute the document (rather than simply retrieving it from the server's file system). Early in 1996, Oracle was awarded a patent for the technique of computing a web page based on values stored in one of their databases.

A web application is software running on a web server which computes an HTML web page that can be returned to a web browser that requests it.

Since HTML documents can be delivered using the ASCII character set (or more commonly the ISO-8859-1 character set), encoded using UTF-8, any programming language can be used to produce them.

An application, written in some programming language, that produces an HTML page when it runs, is called a web application.

What is a web app development stack?


There are thousands of languages and frameworks in our industry that can be used to create web-based applications. These are generally organized into “stacks” (e.x. the LAMP stack, the MEAN stack, the NaVue stack, etc.). Such a stack includes components (each written in some language) for layers of a web application:

  • operating system (the “L” of the LAMP stack)
  • HTTP server (the “A” of the LAMP stack, and the “E” of the MEAN stack)
  • database management (the “M” of the LAMP and MEAN stacks)
  • front-end programming language (the “P” of the LAMP stack, the “A” of the MEAN stack, and the "V" of the NaVue stack)
  • business logic programming language (the “P” of the LAMP stack, the “N” of the MEAN and NaVue stacks)

In this document, I’m suggesting that picos and KRL (the language used to program picos) can be used by themselves as a web app development stack, with the pico engine serving as the operating system (although it runs on top of what is traditionally considered to be such) and the HTTP server. Picos being persistent compute objects supply business logic and data storage.

Why is is called a stack?

This relates to the architecture of a web application, which has several layers. Hence the implementation technologies used for each layer are (conceptually) stacked.

Historical note [added 2023-04-06]

This idea came into my head on Valentine's Day of the year this blog was initiated, as shown in a comment on an issue, "Would like to be able to manage apps in order to support add-on apps".



No comments:

Post a Comment