[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(LONG) Scheme HTML design program - my idea and request for comments



Hello Everyone,

Please note that I am not a professional programmer.  I may have missed some
important concepts about Scheme.

Also, look at screen shots, and more info at
http://www.zill.net/workalike/TheSchemeScheme.html (big page, about 200K
with images)

I have evaluated a number of cross-platform GUI toolkits and languages and
have tentatively decided on Scheme (specifically DrScheme) as the language
and implementation to go with for my idea.

I looked at

Python
TCL/TK
WxWindows
Perl and Perl/TK

Among other languages/implementations.

I decided on DrScheme because

- it runs on Mac, Windows, Linux, Solaris, other Unix etc.
- well known language, simple to use for simple tasks (but can be extended
and used by "power users")
- has ability to do OOP and/or functional style programming
(other languages have varying degrees of capability)
- cross platform graphical toolkit (I don't need a super-duper GUI, just one
that works everywhere)
- DrScheme appears to have some support - other Schemes don't seem to, or if
they do they don't have much in the way of a GUI

No language flames, please!

Here is my idea:

Currently, for HTML sitebuilding, I use Frontier, which is a commercial
program from UserLand software.  It runs on Windows and Mac.  They have a
"freeware" version which is several revs behind the current commercial
version, which is $899 per user.

You can download the freeware version for Mac and Windows at:

Humph; well, actually, they keep on moving their servers and their files
around, so I can't find a working link right now.  I have some screen shots
at the Web page on my server (see above).

Frontier has a reasonably simple language, but what makes it stand apart
from other tools for HTML I have used is that it has some objects/datatypes
that are really useful:

1.  A "wptext" type, which is any arbitrarily large kind of text file
(though in frontier, everything is stored in its "object database").  This
lets you type in text with any amount of HTML you want included in it.  HTML
markup that is in the wptext is not munged or manhandled - so you can always
type in "raw" code and know that it will work.

2.  An "outline" type, which is VERY USEFUL - in fact, all other objects in
Frontier are under the Frontier.root outline (similar but not exactly the
same as everything being derived from Object in some OOP implementations).
It is basically a tree or hierarchy structure, with nodes and leafs
(leaves?).

The outline type is especially nice, since Frontier includes a set of
"verbs" (=functions) that let you traverse the outline and manipulate it.

3.  A "glossary" which is really killer.  You put in the URL and the way to
refer to it in a table (actually it does it for you under MacOS - using
AppleEvents it inserts a custom menu into your Web browser - then you select
"Add to Glossary" when you want to add the web page you are viewing).

At any time, in any page, you refer to it by putting the name in quotes.
For instance, if my glossary has

http://www.cs.rice.edu/CS/PLT/packages/drscheme/index.html and the
associated text "DrScheme Home Page"

I can have a link automatically generated and inserted into any page by
simply placing those exact words in quotes:

eg

#title "My Home Page"

<h1>My Home Page</h1><P>

You might also want to go to the "DrScheme Home Page"

will be rendered as

<HTML><HEAD><TITLE>My Home Page</TITLE>
</HEAD>
<h1>My Home Page</h1><P>

You might also want to go to the
<a href="http://www.cs.rice.edu/CS/PLT/packages/drscheme/index.html";>
DrScheme Home Page</a>
</BODY>
</HTML>

you dig?  This is a really great way to handle links - especially since it
encourages conformity among several web pages, and avoids unclosed tags and
spelling errors and of course tedious typing.

4.  The ability to run scripts to generate the pages.  The ability to have
"directives" or defines at the top of the file that set certain options for
that page (eg #title above refers to the <TITLE> tags); these override
sitewide defaults.  Of course, under Scheme you would have full access to
*whatever* you wanted -including access to a database if using SrPersist.

5.  Similar to #3 you can reference any function or object or variable
within a wptext by using {} .  So you could include part of another page, or
the result from any other command, into that page.

6.  If you pay the money for the latest commercial version you get a
Webserver that is integrated inside the Frontier program.  This lets you
offer up dynamic web pages.

7.  In the future, I have this idea that dynamic pages could be "compiled"
into scripts that run under different web server platforms, like Apache/PHP
or AOLserver/TCL (www.aolserver.com).  This would let people deploy on
different servers and not be locked into a specific technology.

Basically, I would like to replace Frontier with an open-source,
cross-platform solution.

What do you guys think?  Anyone interested?

Comments, suggestions, are quite welcome.

Cordially

Patrick Giagnocavo
a222@redrose.net