[Pipet Users] BlueBox released under GPL

nile at dloo.com nile at dloo.com
Wed Jul 11 10:55:52 EDT 2001


Hi guys,

We just released BlueBox under the GPL. Thanks for your
patience. Implementing this stuff was hard. It uses the
word model to implement the architecture for a P2P programming
language. 

Here's the press release:

A Peer to Peer Programming Language

Most programming languages are statically defined when they are
compiled. C++, C, Java, and other languages cannot become richer over time
after their compilers or interpreters are compiled.  This model of
building programming languages is pre-Internet, mirroring how books,
magazines, and journals were published before the appearance of Web pages,
dynamic content, and hyperlinking.  Instead of this model, however,
imagine a programming language that was defined on the Internet and more
importantly, became richer over time as more programmers added to it. This
is the idea behind BlueBox, a browser that runs a scalable peer-to-peer
programming language that we are releasing today. 

dLoo was formed over a year ago to create a browser, BlueBox, that could
download language structures from the Internet and dynamically assemble
them into languages. We needed the language structures to be modular so
that the languages could scale in richness across non-communicating
parties. We needed developers to be able to extend languages simply by
linking to existing structures. The goal was to create a language that
lived on the Internet and that grew in richness as developers created new
pieces. 

Although the concept of a scalable peer-to-peer programming language is
conceptually simple, implementing it took over than a year. We tried over
a hundred variations before finding a programming unit that would fit our
criteria for a language structure and be simple to use. The structure that
we choose and that is used in BlueBox today is called a "word." Words are
scalable, linkable, and allow for language inheritance and
polymorphism. They model Web pages in their ability to scale and link to
one another to solve new problems. 

With words, one programmer can post HTML words, another Calculus words,
and a third could create an HTML/Calculus language by changing one of the
links in an HTML word to point to Calculus. A fourth programmer could then
come along and add a graphing language by adding a link from a graph word
to a Calculus word. This simple ability to link one language to another
allows programmers to create very dense syntaxes to cleanly solve
complicated problems. Individuals can build off of the words that have
already been posted on the Internet to create richer and richer languages
without every talking to one another. The language is defined on the
Internet and can be extended by anyone with a minimal amount of work. 

In addition to linking, words allow programmers to inherit languages and
override their syntax and semantics on a word-by-word basis. Language
inheritance adds phenomenal power to the programmers toolkit. One of the
modules included in BlueBox is an abstract programming language written in
words that programmers can inherit from to create specific programming
languages like Perl and Python. Because this language already supports
inheritance, standard conditional structures, and other basic features of
programming language, programmers do not have to implement them when
creating a new language. They simply inherit from the abstract language
and override its syntax where appropriate. 

Language polymorphism means that if programmers specify that a document is
written in an abstract language, they can use all of the languages that
inherit from it. For example, the abstract programming language can
compile programs written using syntax from any of the languages that
inherit from it. As syntaxes like Perl, Python, C++, and Java are created
by inheriting from the abstract language, it is possible to write programs
that mix all of these languages together (see
bluebox/src/tests/code). More importantly, language polymorphism means
that new developers can add new words to a language simply by inheriting
from existing ones. If HTML was written in words, for example, anyone
could add new widgets and domains to the language. 

All of the features mentioned in this paper are working today. After a
year of development, the product has been released to the open source
community under the GPL.  A community site set up around BlueBox with
access to the source can be found at http://www.dloo.org. The main
features in this release are: 

 Implementation of a natural language database so that words can be
dynamically downloaded, compiled, and assembled into a language.
 Full support for language inheritance and polymorphism
 BlueBox itself written in words
 Full support for words that are written in other words
 Ability to download and compile words from the Internet
 The architecture of a software translator for transforming one technology
or language to another. 
 Only has Python as a dependency. The previous releases, which were solely
for educational purposes, had several difficult dependencies. 

A tutorial on how to create and post words can be found here and a more
detailed description of BlueBoxs architecture is available here. 
The Web broke the conventions that information should be formally
organized and indexed. One of the main criticisms of the early Web was
that it was unorganized: anyone could post and link to other
articles.  BlueBox brings the same roller-coaster ride to language
design. In place of formal language committees and hundred-page
specifications, we have an language that can be added to and linked to by
anyone. In the next few weeks, we are going to be implementing the code
for database sharing in BlueBox and launching the network for sharing
words. We do not know what this Internet of words is going to become but
we think it is going to grow fast and with a wild creativity beyond
anything that we can imagine today.

Were looking for early adopters to post some of the first words on the
Internet. We also want to invite anyone whos interested to jump in and get
their hands dirty on a peer to peer natural programming language. 






More information about the Pipet-Users mailing list