Academia: I have been really enjoying my class on the
theory and design of programming languages. Since I've only
really used C, Perl, Java, and other similar languages, it
is an eye-opener. For one, I am now shocked that languages
don't incorporate nice features like parametric
polymorphism. All of this has been making me think about
what I would consider an ideal programming language. My
initial thinking would be to go the opposite route that Perl
did: There should only be one way to do it. Having multiple
ways to accomplish the same thing is dumb - it wastes
programmer time, and it gets rid of the compiler's ability
to optimize. Maybe some day I'll write down all my
half-assed ideas into something coherent. I need to know more.
Research: I've been trying to see if there are any
ongoing research projects at the UW that involve computing
semantics. So far, my attempts to contact professors have
been met with no replies. I am very interested in the ideas
of a more semantically expressive filesystem, increased (and
auto-generated) metadata, and information agents. Of
course, it would be ideal if I can figure out a practical
way to tack some of these ideas onto existing frameworks.
We'll see what I'm able to come up with. If anything. I
would be extremely psyched if I could come up with a generic
framework for developing Information Agents with bonobo, but
that is the pie-in-the-sky goal. Right now I am just trying
to learn about the different problems, and possible ways to
solve them.
GNOME musings: Even though I am not at all a major
person in the gnome community, I for some reason think that
I should spout my mouth off about whatever I think would
make GNOME better. My big thought for the day is IDL
specification. I think it would be a very valuable effort
for GNOME 2.0 planning to have developers actually sit down
and spec out bonobo interfaces for the GNOME desktop, and
conceivably, the GNOME Office suite. In doing this, you get
the benefit of a very clear roadmap, as everything that you
want to do has been outlined. You also get an easy
reference point for how things are supposed to interact with
each other. You also get an easy repository of projects
that need doing for new members of the community. Chances
are new developers aren't going to be good at the IDL stuff,
but are capable of implementing a given piece of
functionality. Also, if everything is broken down this way
into components, it is much easier to upgrade to more
efficient/bug-free implementations, as necessary. We also
avoid issues of vendor lock-in pre-emptively. Speaking of
vendor lock-in, my other GNOME-related ramble for the day is
as follows: As free software companies seek to make their
money from services, we need to make sure that the same
principles of openness and consumer choice are built-in. I
think it would be excellent if companies like Eazel, Red
Hat, and Ximian work out a common services API.....something
like a defined service interface (done with bonobo, I
suppose) that each company could have an implementation of.
This lets the consumer to easily change between providers.
Also, it lets consumers choose one interface for doing
something (witness that there are 3 different ways to
upgrade your software on RedHat 7 - Eazel's updater,
Ximian's, or RedHat's). This just seems like a smart idea.
Companies save development costs by jointly developing the
infrastructure. Consumers are able to comparison shop
pretty easily...choosing whichever services they like. Ok,
that's enough of a rant for today.