- What is WhiteSpace?
- WhiteSpace is the name of a new java-extension focused around the combination of an interpreted programming language and XML. From the inside, it is an important new package that adds type-free data structures to the java language. For other java-developers it is an interface with which any other program can be used "from console mode". It is also a glue method that can link other languages as prolog and Haskell to the rest of Java. For users, it is a very flexible console, that could replace your regular command prompt, and might be a worthy replacement for all Perl scripts. And for new people, it looks like a calculator but can do very much more once you learn to work with it.
- Who makes WhiteSpace?
- WhiteSpace is maintained by blueRing software development. blueRing is a small programming collective/ company founded by two people with a common passion for programming: Ernst van Rheenen and Sieuwert van Otterloo. Ernst plays the trumpet and studies social-scientific computer science at the university of Amsterdam. He is also an excellent webdesigner. Sieuwert van Otterloo plays euphonium (a somewhat larger brass instrument). He studies mathematics and Artificial Intelligence at the University of Utrecht. Among other things he loves cryptography.
- How did it start and how far is it now?
- Ernst and Sieuwert decided in February 2001 to do something with XML. The original goal was to make an XML transformation tool that is as flexible as a real programming language, so that it would be efficient and powerfull at the same time, fun to work with for people who already know how to program and a great new way of learning to program. They finished their XML parsers in March 2001, and saw that they needed some general functionality that was not available in Java. So they invented Expressions that add the ease of use of BASIC to the Java World. In April and May they set up a general interpreter for a new programming language. Since the project started at the bottom, their was not much frontend to show the product, so the current intermediate goal is making a calculator (no name chosen yet:-) ).
- Is WhiteSpace freeware?
- The current versions of blueRing are freeware, because it would be of great help if people started using it and send their comments. BlueRing also believe people must be able to know what they buy, so their will be an evaluation version. We furthermore want to encourage people to take an interest in programming, so we intend to publish any sourcecode. This is also absolutely necessary for security research. So at the moment blueRing is completely free for anyone to use or read. You may also modify it, but you may not sell our (maybe modified) program under your name. If WhiteSpace matures we might ask money for commercial use of the newer versions, but we will try even then to hold high our ideals as an open software collective.
- If you are a company, what is your business model?
- We cannot ask money for our product yet, for the above mentioned reasons and because then our program would not get famous. This year we will most likely not make any money (but we are already having fun). We will only spend time and money it in making a good product. Later we intend to make money by offering services to other companies (for instance website building using our own product), by programming things people ask for, and for instance by using our software to create other peoples websites. Much later we might sell shrinkwrapped boxes like other software companies, or sell the whole company to MicroSoft and start something new.
- How can I be part of blueRing/WhiteSpace?
- You can send email and we will answer it. We most enjoy technical questions like: I want to add this-and-this to WhiteSpace, tried to it myself and now I want to know how ...? If you send email often enough we might become friends or business partners, and if you modify WhiteSpace enough you will honour you as a co=author. If you really have a greeat complementary idea or product we might try a fusion an then you have the same mythical status as Ernst and Sieuwert, the founders. Seriously, WhiteSpace is not about official titles. just read, use, program, and contact it and you are part of it. For us programming is a very social activity and a good way of making friends
- But what if you go commercial?
- The current versions of WhiteSpace are free. If we go commercial, the free versions remain free, and you can continue to use those. Everybody owns what he wrote, so if some-one disagrees with any strategy change, he may speak up and we will not use his code in the new plans, but instead replace it with something we wrote. BlueRing is not the only legal person who can do this. Any participant can go solo, replace other peoples code with his own code and sell their product. The product, feature and class names and trademarks are owned by the introducers, so for most names it will be blueRing's.(currently the names WhiteSpace and blueRing, but new modules might have other owners). We hope this convinces you that we have a fair deal: We do not ask the world anything for version 1 to X.The restriction is that you cannot sell what what created. We are not obliged to make free software for the rest of our lives, so we might sell version X+1. We will never sell any of your software without your consent.
- Is an interpreter written in Java not terribly slow?
- We fear many things, but we do not fear this. We have experience with comparable products, some in jave, and we saw 3 things:
There is a big shelf of scientific research into functional programming languages, and this research proves that speed does not depend on the implementation language but on the use of the right algorithms. If WhiteSpace ever falls short in speed, we will certainly be able to improve it. At the moment we are more interested in design issues and features.
- Computers are getting faster and faster. Modern computers have no problem keeping up with the user, and there is plenty of memory for textual data. Modern computer do not need the extra power for the programming languages, but for the paint programs, the moving images and 3D applications (games). The focus of WhiteSpace is an user-interactive setting. Ergonomic research shows that users want answers in 1 second: not faster because then they are not sure whether the computer did anything. Our very first, not optimized, XML parser could parse the largest XML-file we had well within that time.
- Java is quite fast. Java is compiled first and the resulting bytecode is interpreted. All fundamental things then happen quite fast. The slow parts of java are graphics and number crunching. For WhiteSpace we need memory management, file IO and garbage collection (and the garbage collector is written in C, so it is fast!) and some other things running at good speed. So please have a little faith in Java, it will not let you down. If Java was bad, we would not have chosen it.
- WhiteSpace is not bound to Java. WhiteSpace is a programming language, so it is defined what it should do, and any implementation can do it any way it wants. We are now working on a java implementation because it is easy to create an interactive interpreter in that language and because Java lacks something like Whitespace. If someone wants to use WhiteSpace in another setting, we can rewrite it easily in another language to work in their setting. Specifically, we design WhiteSpace such that we can compile it to screamingly efficient C code if a website like Amazon or Google decides to use it.
- Is WhiteSpace a better programming language than Java?
- WhiteSpace is not absolutely better than Java, it is just better at certain things. Java is good language because it forces you to carefully write software. It is especially good for writing software once and running it everywhere. Sometimes you just want something done right here and now. In that case you do not plan and design a new program, but start the WhiteSpace console and do what you want. Using WhiteSpace is also easier than programming in other languages: it's difficulty level lies somewhere between using a word processor and programming, comparable to HTML writing.
- Can WhiteSpace interact with Java?
- The central idea behind WhiteSpace is that it is not just something for users, but also for programmers. WhiteSpace will have a clever interface to other programs. Especially if you have a Java package or program, you can easily create a WhiteSpace interface for your application. This means that you can use your functions in all WhiteSpace programs, and all your programs can use WhiteSpace functionality. Testing your program will then be much easier because you can interactively run all methods and inspect the output. You can also build a demonstration applet or application for your software library in no-time.
The most important aspect is however that WhiteSpace can glue together Java applications that could not talk to each other before. It defines general expressions that can represent anything. You can even pass functions as parameters, something not easily possible in Java. The power of interpreted languages like Perl or Python comes to Java using WhiteSpace.
- Are WhiteSpace Expressions not the same thing as XML?
- There are many similarities between XML and Expressions. Expressions can be stored as XML, and WhiteSpace can read in XML documents as Expressions. But XML is not very userfriendly, so you can create Expressions by writing the oneliner
3+4*abc==xyz(foo,bar()) where the XML would be
This example shows that Expressions are better suited for human input. XML can still be used as universal data exchange format between applications. WhiteSpace will easily convert between these two. On top of this, because we believe that XML will become very important, WhiteSpace will be loaded with XML handling routines to make it an superb XML toolkit.
- Will WhiteSpace be an object oriented language?
- There are very object-oriented languages, like C#, C++ and Java. There are almost absolutely not object oriented languages, like C, forth and perl. WhiteSpace will be somewhere in between. Object-orientation often involves a lot of notational overhead, so the basic and simple things will work without object orientation. You can extend WhiteSpace with Java Objects, and they will work with all advantages of object orientation, but almost invisible, using a very natural and intuistic syntax. At a higher level you can emulate object orientation in the way you emulate object-orientation in prolog. To summarize: we will certainly not bother users with object orientation, but if you need it it can be done. And from the java side it looks very object orientated.