Monday, November 22, 2010

Spin Server Tools

This project hosts collaborative efforts in bringing a full enterprise application server stack to the embedded web server developed jointly by Parallax and WIZnet. The server supports standard TCP/IP an all associated OSI layers below. The CPU is a Parallax Propeller 32-bit/8-core parallel processor running at 80MHz. This processor is interfaced to a WIZnet W5100 10BaseT wired ethernet controller chip.
There currently (Nov 2010) is no formal firmware that allows the hardware to run - this is the goal of the coding contest and collaboration.
This open source project is currently starting at the following forum at Parallax Inc.  I am part of the context but my I have no interest in placing in the contest - my motivation is to build an application server from scratch at the machine code level
 http://forums.parallax.com/forumdisplay.php?f=82

I have started the following Eclipse Labs.org project site on Google Code (thank you) that uses the MIT license (The forum site goes down occassionally and is not really geared to open source development - (IE: no svn/issue-tracking/wiki/source-distribution/versioning/change-tracking etc..)
http://code.google.com/a/eclipselabs.org/p/spin-server-tools/


Viewing source from a browser (without SVN)http://svn.codespot.com/a/eclipselabs.org/spin-server-tools/trunk/

Most of this content is written while i am walking around on my RIM blackberry torch - so excuse the spelling and format.

Design Issues:

DI-20: 20101127: Spin equivilants to JEE6 API
A) SSP (spin server page) and JSP

   Implementing server side dynamic pages will run into several issues like the following.
- Spin uses indentation to demarcate code blocks.  We may have to introduce standard brackets {}
- Normally on app server we precompile the jsp and emit a temporary servlet the only changes between deployments. it would be nice if a cog could do this on the fly but we may have to use offline tool to prepare our EAR.

DI-21: 20101202: Package namespaces in Spin
  Spin has a flat namespace, therefore use of the same class name in different namespaces is not possible.  However we can at least name the files in a namespace like fashion like: org.spinserver.Server.spin



Work Items:
- get servlet framework up
- get configuration servlet up
- get jsp/ssp to servlet compilation working - specified
- move jsp compilation from external server to deployment page on-chip

References:

HTTP 1.0 specification http://ftp.ics.uci.edu/pub/ietf/http/rfc1945.html
HTTP 1.1 specification http://www.w3.org/Protocols/rfc2616/rfc2616.html
W3C HTTP protocols http://www.w3.org/Protocols/Specs.html
Microsoft Network Monitor 3.4 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&displaylang=en
HTTP tutorial - thank you to Roy Eltham for the link http://www.jmarshall.com/easy/http/
http://www.cliff.biffle.org/software/propeller/binary-format.html
Meta2 Compiler (Spin within Spin - like YACC) - required to compile Spin servlets - from Mike Green
Sphinx Spin compiler from mpark

/michael