The Charlotte Web Browser
Charlotte is a text-mode web browser for the VM world, based on software extensively modified and enhanced over the years by Carl Forde, Jonathan Scott, and Perry Ruiter. In the following discussion we will cover the history of Charlotte, from its origins up to the present. Here is the first of 2 parts of the resulting Q-&-A session. Part 2 will be published in November, just in time for Charlotte's 4th anniversary.
SCOTT: Why did you write Charlotte, and who now owns and maintains it?
CARL: I'll take these in reverse order. Perry Ruiter now maintains Charlotte. As Perry is a BC Government employee, Charlotte belongs to the government of British Columbia, Canada. Charlotte came about because in the summer of 1994, Perry Ruiter was looking for a VM Web browser. He found David Nessl's "Albert". However, there were some things he didn't like about it and sent some suggestions to David on how to improve it.
SCOTT: Can you remember some of those suggestions and proposed solutions?
CARL: There were numerous problems with Albert. Firstly it didn't work "out of the box" on our system. Under the covers it used the old, very old, CMS linemode client. As a result it couldn't do binary transfers, was slow, and formatted poorly.
PERRY: It used - incredibly tailorable - XEDIT to provide its fullscreen services. Tailoring does have a cost (dozens of SET commands, something addressed on recent CMS releases by the SUPERSET command). Ironically Albert relied on a C program to interface with the network (read/write sockets) and do some of the parsing (yes!). The C program originated at CERN (the Swiss Accelerator, also the birthplace of the web). The C program also turned out to be Albert's Achilles' heel. I forget whether CERN never released the source or just if no one could get the source to compile, but it was not maintainable, and the MODULE (the VM equivalent of a .COM/.EXE file) supplied with Albert would only run in 370 mode (an old IBM mainframe architecture). As well, this program would initialize and breakdown its entire C runtime environment for each page fetch (changing this so the environment persisted while the browser was active was my initial suggestion for an improvement to Albert). Because of these two problems (C overhead on fetching/parsing each page and the XEDIT costs of presenting it) Carl was able to produce a browser written in REXX (with Pipes and REXX/Sockets) that was about twice as fast. That, coupled with Charlotte's superior screen presentation, sealed Albert's fate.
CARL: Unfortunately, David lacked the time to make those changes (he was working in the Unix group by this time). Perry went looking for another browser. This time he found one from the Nicholas Copernicus University in Torun Poland, written by Maciej J. Woloszyk. This browser, known as the "Torun package", didn't work for us out of the box. As Perry was going on vacation, he gave it to me to get working. I did get it working and sent a number of changes and recommendations to Maciej who was quite appreciative of the effort and attention.
SCOTT: Which changes and recommendations are you referring to?
CARL: Maciej had made some assumptions about the CMS environment that weren't true at our site so that the browser didn't work "out of the box" either. Once those were fixed, it worked ok. But it was really an early work in progress. I made some performance and minor feature enhancements (more tags and some HTML formatting changes). It was about mid-August when Maciej let me know that come September he would be changing jobs and wouldn't have convenient access to the internet to maintain his browser, and would I mind taking it over. So on September 1, 1994 BC Systems (I) took over responsibility for the browser. During this time I wanted to give a proper name to the browser. After several lame suggestions, Simeon Ventura came up with Charlotte.
SCOTT: New name, and a new start?
CARL: In the period from September to November I rewrote substantial portions of the code because I felt free to impose my own coding style and make whatever changes I thought would make it a better browser.
SCOTT: Does it make use of XEDIT (many VM users are familiar with the combination of XEDIT and REXX)?
CARL: No Xedit. REXX, REXX/Sockets and Pipelines. The screen management is all done via the Pipes FullScreen stage.
SCOTT: Is it freeware, shareware, licensed software, etc.?
CARL: Charlotte is freeware. It has also been distributed at several VM user group meetings in North America and Europe. Note that as BC Systems was a government agency, maintaining a freeware product was not part of the mandate. :-) However, I was told "There's no policy to cover what you've done". As far as I know, there still isn't.
SCOTT: What was/is the trend as to number of users/sites (un)happy with Charlotte, and how many users/sites?
JONATHAN: As it is free and the majority of users never contact us, it's difficult to tell how many people are using it, nor how happy they are with it, although most people contacting us have been very positive and I like to think that no news is good news. It is being distributed in at least five different ways:
The download count from the IBM VM download package page since 2.1.0 was first released in May 97 is currently 699, and I guess this route is probably reaching the largest user base. My list of internal IBM service providers currently contains 43 addresses plus WWVM.
SCOTT: Perry, how many downloaded the package from your gopher server?
PERRY: I don't keep really close tabs on the download counts. I check every month or so just to see that everything is still working. Charlotte remains (by far) the most popular download. Averaging probably a couple dozen downloads a week. Since the gopher server always has the latest and greatest code level I think a lot of downloads are repeat customers simply refreshing their code level. However, as Jonathan said, the code is very stable now so recently the code has only been updated once every couple of months or so. As for total installed base, I wouldn't be surprised if Charlotte is installed on more than a 1,000 systems worldwide, with a user population in the 100s of thousands (seriously). I believe Charlotte's user base continues to grow (as does its legions of fans) with no real end in sight.
JONATHAN: I believe that the general level of user satisfaction with Charlotte/2.1.0 is very high. The package is free, and we do not provide any guaranteed level of support, as looking after Charlotte is supposed to be a "spare time" activity, but we find that even large commercial customers are happy to accept these conditions given our level of performance, function and reliability.
SCOTT: How about input from users?
JONATHAN: We had particularly helpful input from beta test sites during the later stages of development, with many useful suggestions. As much of the code is in REXX, the customers were able to work with the source and send us ready-coded fixes and suggested enhancements, although we took care to check and if necessary rework all such changes. As a result, the final generally available package not only had very few problems but also incorporated many useful suggestions. We've occasionally had further suggestions for enhancements which we've accepted and implemented (such as cookie support) but for the last year or so it's mostly been very quiet. This keeps my employer happy, as I can continue to help support Charlotte/2.1.0 as a very minor part-time activity without it impacting my normal job.
SCOTT: Why would someone run a browser on CMS anyway?
CARL: Because contrary to popular belief, not everyone has a PC on their desk. And of those who do, many (most?) are not IP connected. Another good reason is speed. The typical mainframe has a far greater bandwidth connection to the internet than the typical PC. The typical mainframe is also far faster. For a large portion of the business community, read IBM VM customers, the vast majority of the information they are interested in is text. They don't need, or want, the graphics etc. What they really want is to be able to get at the information they need quickly. The following excerpt from a note I received on March 19, 1996 is typical:
Hi, Carl. Your Charlotte has generated a lot of interest around here, since we have many VM users and quite a few who are still on 3270 terminals or 286's. They are pathetically grateful to be able to access the Web! Our WebMaster user groups have been educated to consider Charlotte users when they design their pages, so they don't get too tricky on us. Personally, I like it cuz it is SO FAST! Note that "many VM users" in this case means 1000s.
SCOTT: And here are some more recent comments from users:
I use Charlot a lot, hours each day, and the most impressive thing is that we have a fast internet link from the mainframe. The browser is good, but sites with frames and no <ALT=> tags are absolutely impossible. We see a page with little <> symbols all over it, it means it has images and we can't use it. Also SSL pages don't work, so we can't trade shares etc, which is a shame. One fault with it is that it can't "web-wack", take a site and load it for later viewing. We often save a site page by page and view it locally with a browser - still no graphics but the layout is as expected. As end users we are happy with it until we get the real thing, then we'll only use it to download things, as it is a fast way to do that.
When I spent a year in Saudi Arabia.....working with SBM (IBM in a thobe).....we used to use CHARLOTTe to browse the web ..... at least we could get out of Saudi that way.... I have a few friends still there who have to use it.... Downloading binary files over CHARLOTTe was interesting!
I can say it's very useful, speedy and rock-solid. I use it daily.
The authors of this article are:
Carl_Forde <Carl_Forde@Beyond-Software.com>, of Beyond Software.
Perry Ruiter <Perry.Ruiter@gems1.gov.bc.ca>, at ITSD, Province of British Columbia
Jonathan Scott <Jonathan_Scott@VNET.IBM.COM>, IBM UK Labs, Hursley
F. Scott Ophof <FSOphof@BLCLinks.net>, consultant
Disclaimer: The authors of this article do not speak officially for their respective (ex-)employers in any capacity.