Goe Object Environment

For now Goe Object Environment (Goe) is basically not much more than a thought in the wind, so this will be more like information on what may come in the future. Goe is going to be an entire toolkit for developing stuff. What kind of stuff? Well... for now we are going to be using it to develop stuff in Perl. To start off with Goe is going to be a smalltalk-like environment. If you've ever used smalltalk you'll know what I'm talking about, and for those of you who haven't you're in for a lovely experience. From there I hope the project goes on to add many other useful things, like GUI building and whatnot. Far, far, far in the future (this is the dreaming part, up to now has actually been pretty realistic) I hope that Goe will move on to conquer other domains and languages.

You can see by the dates in the news section an approximate frequency of how much I work on this project. Please keep this in mind before demanding features or visiting this site every day looking for updates :). I'm a full-time student with three jobs, after all.

A couple things. First, I happily adopt from Perl the Theres More Than One Way To Do It ideology. It is, after all, the reason we're starting with Perl anyway. I want to extend that to every portion of this project. Second... There's also a Right Way to do it. I hope that I have a sense for finding and implementing things the Right Way, and when I don't I'll just go for the way that comes to me first instead. And uh... lets see what else... oh yes. I have a tendency to do lots of abstract thinking, and not nearly enough concrete creation. Therefore a part of this project is to actually do the project. Crazy as that sounds. Other than that... stay away from isms. I quote Ferris Bueller:

Isms in my opinion are not good. A person should not believe in an ism, he should believe in himself. I quote John Lennin... "I don't believe in Beetles, I just believe in me." A good point there. After all, he was The Walrus. I could be The Walrus, I'd still have to bum rides off of people.


-- Well, I've decided to go with wxPerl instead of direct Gtk. This may change I suppose when GtkPerl for Gtk2 comes out... but for right now wxPerl is very clean and pleasing.


-- Here's something for you to chew on. Using Inline I'm adding multi-language (programming language, that is) support to the browser. The idea is that you could make any method/object in any language you see fit. Inline will make this possible. I'll be working on adding support objects to make shuffling variables around (to and from C, for instance) much easier. *Evil Laugh* and this is just the beginning... MUAHAHA!


-- I showed my lovely browser off to the good guys at perlmonks.org and they gave me a bit of feedback. Using some of their advice, I've moved from my custom .goe file format to perl's standard .pm format using a rec-descent parser. Gotta love perl. This also allowed the bootstrap to go a bit deeper, now instead of needing a load script you could start the whole thing with "perl -MGoe -e Goe::start" (though a script is still there so you don't have to type all that and so that strict is turned on).


-- Successfully bootstrapped the browser today. It now has enough functionality that I can use it to work on itself, which is pretty damn cool.


-- I've changed my mind. Though at the time a common GUI and a lovely Perl Parser seemed like good ideas, now I think that I should work on building a simple infastructure through the browser, and then all the other parts should be implemented within this environment. This makes a lot more sense, especially when taking the boot-strap approach that I love so much. I am, therefore, once again working on the Browser.


-- Though I got pretty far on the Browser, a rewrite is already in progress. This is due to the addition of the common GUI project. Its comming along nicely. The third project that is happening right now is the Perl Parser. This package will be general purpose... I can see how others might want it. It'll read in perl and output a parse tree, with multiple methods of traversal. Think syntax highlighter, pretty-printer, analysis and the like. Exciting?! I can see you just jumping out of your chair as I describe it!! hm.


-- Name change. Poe->Goe. With my luck I'll have to change it again. I'll have to research a little more indepth this time to see if there are any projects with the same name. There are two other projects named Poe (the previous name), Portable Object Environment, an IBM tool for parallel programming, and Perl Object Environment, some sort of a funky perl OOP thing that seems a bit outdated. For the curious Goe, like Poe, does not stand for anything. Not that I care. Make something up if you like.


  • Browser
    • A source code browser/editor, stolen from Smalltalk
    • Already started
    • Enable a programmer to have an understanding of the heiarchy of the project at all times
    • Use multiple languages so the programmer can take their pick
    • Use multiple development and deployment platforms, and encourage portability
  • GUI Wrappers
    • For each language create a common wrapper around many GUI kits
    • For example, create a single perl or C interface for Gtk, Tk, Motif, V, Win32, MacOS, etc.
  • GUI Designer
    • Use an optionaly more integrated approach. Don't just provide a designer, provide an IDE.
    • Be able use a variety of languages and toolkits, using the Browser and GUI wrapper
    • Steal (hrm... borrow) ideas from other GUI makers, like Glade or VB
  • Perl Parser
    • Parse Perl code (in perl)
    • This will provide a gateway for all kinds of things
      • Syntax formatting
      • Syntax highlighting
      • Code analysis (smart editing)
      • Code analysis (smart debugging)
      • Compiling (yes. thats what I said.)
    • Maybe make it a bit extendable to other languages.

Copyright (C) 2000, 2001 Brock Wilcox awwaiid@deathonastick.org