Amyloo and Frontier’s website framework

A few weeks ago I sent Amyloo a few pointers to the website framework docs for Frontier as a clue as to how to experiment with CSS in the design of a template for the browser-based NewsRiver user interface. Now, she’s reached a point where she’s thinking (apparently) about how to make the results of her exploration available to other users. This is always a tricky spot, if you move too fast you end up with a bad design and either have to live with it, or live with breakage. I almost always decide to live with it, because breakage is too painful, and you also lose the trust of the people you want to work with. So I like to go-slow, think, and consider the alternatives carefully, and most important, look at prior art because there may already be a solution to the problem.

Now Amy is moving quickly (and that’s good) because when I looked at her post a few hours ago I said “Oh she just needs to know about file.readWholeFile,” but now I see she’s found it, and has built a layer around it, but I’m not sure that the layer actually buys you very much. I am also reluctant to create new verbs at the top-level of the scripting namespace, there aren’t many of those, because there always seems to be a context, and this gives you a way to create a new verb to stand alongside the earlier verb, without having to klooge things up too badly. Long story, hard to explain, but top-level verbs are usually not a good idea.

Amy asks if this framework is for Manila, actually it predates Manila. Our software is built in layers, and the layers came in years, like the rings of trees or the brain of a lizard. The stuff Amy is looking at was done in 1996, when Frontier took the turn from being a Mac-only system scripting environment to being a web content management system. Some people still think that was a bad idea, but that was almost ten years ago, a lot has been built since then. Even so, what we did in 1996 was good enough to basically provide the user interface for NewsRiver 0.3, and give Amy a way to explore the wonderful world of Fronteir content management. Adding Manila to the mix would complicate matters considerably, because Manila is substantially more ambitious than the website framework, which is what she’s working in. (Also, Manila is not open source, so that makes it somewhat more difficult to explore this way, unless you have the money to buy a license.)

Now, the question of whether or not the input data should come from the file system or not is an interesting one. There are other choices.

  1. It could come from the Internet. In Manila we had a macro called includeHttp (there I go breaking the rule I talked about above, it could have been called manila.includeHttp, so we could have borrowed the concept wholesale wihtout confusion, calling the new macr newsRiver.includeHttp, or some such). If we used something like that here, we could still get stuff from files, because file paths can be represented by URLs.
  2. Another possibility is to get the content from the object database. This sounds a bit more hairy than it actually is. You could have a command in a menu somewhere that says Open My CSS, and an outline window would open and it would say NewsRiver CSS. You’d edit it, and refresh your NewsRiver site in the browser, and boom, the change would be instantly visible. Now the user wouldn’t really be sure exactly where the CSS resides. But then they don’t have to worry about where it is. I do this in a bunch of places in the OPML Editor, and so far haven’t heard too many complaints. (Check out the Open Log Outline command in the Community menu for an example.)

Anyway, I’m not sure how much sense this makes. My teaching technique is to just string the words together and let people get confused and maybe read it again and it’ll be less confusing until all this stuff is second nature. It’s very cool that the Class of 2006 is starting to take an interest in the underpinnings. This is a good sign, and it’s a path I’ve been down quite a few times before. I’m hoping that people from earlier incarnations of the community will come back in at some point and express some opinions about how we should evolve here, of course in a constructive and helpful way.

PS: For more clues and philosophy check out the Going Crazy series I wrote for Radio in 2002.

4 responses to this post.

  1. Frontier UserTalk was my second programming language when I learned it 10 (!) years ago. These days I work mostly in Perl and emacs, but I really really miss programming in an outliner. I wish someone would mate emacs and the Frontier outliner!


  2. Dave is there an equivalant WWW folder for the OPML Editor, so that I can follow these docs? I save to the WWW and then navigate to for the first example in the Going Crazy link, and get a 500 Server Error.


  3. Ryan,

    Check out LEO, the literate outliner. It’s very Frontier-like for the perl/emacs set.


  4. Thanks, Dave. Appreciate the pointers and your willingness to help. I posted some new stuff on CSS today after reading this through more carefully

    Ryan and John, I used to edit CGI/Perl stuff in eMacs — foolishly sometimes on live scripts that people were using, but it was so cool to be able to do that for a simple change. Cleaning out some old paper files the other day, I came across a quick reference card of eMacs keyboard commands, and actually got a little teary-eyed.

    It’s funny how your fingers have tactile memory. Three years ago or so I was in eMacs to do something, and hadn’t used it for some four years before that. My left hand just flipped off the save and exit commands without thinking. It’s a lot like that other kind of keyboard, the piano, in that way. It must be well-worn neural pathways that preserve specific memories of brain-to-hand for a command or a song even after years of neglect.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: