Brain Dump #1
Joe Armstrong
joe@REDACTED
Thu Feb 6 12:36:01 CET 2003
> What I can propose is to set up a very nice looking content management
> platform that I used on several project to organize the work (As you
> might implies that the wiki might not be a proper tool). The tools is
> based on Zope and seems to do wonders to incitate the Zope community to
> work together and contribute (see http://www.zope.org/ The content is
> mainly provided by volunteers).
Yes -
.. wonderful stuff cut ...
> Please, feel free to add new idea.
<brain_dump>
Just for fun I started thinking about what applications were
attracting peoples attention - so I did a little thinking and looked
round at what was capturing peoples mind-share - I decided therefore to
investigate three different things that were popular. They were:
- Zope
- Jabber
- Blogger
What do these things do?
Zope is a content manager/publisher
Jabber is an instant messaging system
Blogger is software to write/syndicate and publish weblogs
I looked at the zope website and couldn't understand what it was all
about.
I decided I would learn what theses things do, so I bought a number
of books one for each of these things.
I read all the books (one per subject) - all these things had the
same property - they were high on features (i.e. they did useful
things) - but the internal representations and algorithms were not (to
put it politely) beautiful.
I thought to myself - any of the things they do in
zope/jabber/blogger we could do *much* better in Erlang.
Half of these applications spend all their time
marshalling/unmarshalling data - or parsing and deparsing XML - things
that are "one liners" in Erlang.
Can we do better than these things - can we do a *lot* better - a
*lot lot lot* better?
I think the answer is yes.
Here's what I'd like to do:
1) Merge together zope+jabber+blogger into ONE framework
Why do this:
Jabber is about instant messaging -
Zope is about content management
But somewhere there seems to be the idea that instant messaging is
something that people do - not things.
I can "chat" to my friend with jabber - but not get an instant message
when a page in a data base is changed.
I once started on a system I called "things that do stuff" - the idea
was to extend the idea of e-mail.
Again you can send e-mail to a person, but not to a web page, or an object.
I was thinking about things like booking rooms for meetings -
My can't you send the following email to a room
mailto room23@REDACTED
subject: booking
Can I book you next tuesday between 12 - 14?
And get a reply
mailfrom: room23@REDACTED
subject: booking
Yes
/have a nice day
your friend the room :-)
Why can't I send email to a web-page
mailto: www.sics.se/~joe/talks/this.pdf
subject: typo
you mis-spelt "program" in line 22
And get the page to correct itself -
Why can't I get an instant message when a data base is updated?
Why do we have separate worlds for managing content/instant messaging/
and non-instant messaging.
I'd like to *combine* these three.
Our world has active objects (servers) we can send them messages -
or instant messages.
<< a message is like email - connect to the server, send the message,
disconnect. An *instant message* is like MSN or Jabber, connect to the
server and *stay* connected >>
Our servers have state and are connected in a peer-to-peer network.
We can change content - by sending tagged messages to objects in the
servers.
<< I'd like to things like webdav, irc, file transfer etc. all done
using pure erlang communication. By which I mean, you *only* send
things like:
gen_tcp:send(Socket, term_to_binary({get_file, F}))
No XML - XDR - anything just binary encoded erlang terms
>>
A while back I wrote a "undedicated daemon" - this is just a daemon that
does nothing - to this basic infrastructure I could plug in a web server
of an irc server etc.
Luke and I chatted using once (or was it twice) - I'll turn this into
a tutorial.
2) Use the framework (the one above) so solve some worthwhile projects
I three pet projects - which are all bubbling along (slowly) - and I'd love
volunteers to help with these. I'll call them
- store
- find
- publish
Once they work we can glue everything together and make
a nice electronic newspaper :-)
I'll briefly explain:
store
=====
Each machine should have a data store. When you put something into
the store it remains their *forever*
<< In the back of my mind *store* is a peer-to-peer backup system.
- "you can use my disk if I can use your disk" - I use a variant of
store between home and work for backup purposes -
it involves an rsync server and a chrontab job ... >>
If store worked properly we could *eliminate* backup.
find
====
I want to index *everything* I have every done so that I can find
it.
I want *every* document to have a GUID (globally unique identifier)
- If I know the GUI I want to be able to find the document.
I want to index every document (ideally, when I add an object to
*store* it would be automatically indexed - I have no idea how to do
this - has anybody got a good "abstracting" algorithm - I need to
extract information bearing words from a document and remove
non-information bearing words ...)
publish
=======
Goals make *beautiful* documents from text input (which might be XML)
make *beautiful* GUIs from same language as the above.
I want to create *beautiful* documents and GUIs from the *same*
layout abstractions - I'm thinking display postscript/PDF for documents
and GUIs - so far I can create PDF *directly* from XML and have been
playing with freetype to get nice anti-aliased fonts on the screen.
I'm thinking of something like
http://www.df.lth.se/~mazirian/software/aekit/
The motivation for this is that wysiwyg programs (word etc.) suck
(from a typographic point of view) - Quark express, Adobe's Indesign 2
etc. suck (I hate wysiwyg) and I don't like TeX (you can't accurately
control the *physical* layout, I want to say which pixel on the
printer a character must start at :-) ...
So far I can parse adobe type 1 font metric files - and make PDF -
I'm working on line justification - (aside - Knuth is quoted as saying
that the line justification problem was the most difficult problem he
had ever worked on ...) - I have a primitive version running ..
(( interestingly Hermann Zapf - the typographer who invented Zapf
Dingbats and Palantino suggested many typographic improvements which
seem never to have been implemented :-) - so there is definite room
for improvement here - all I have to do is add HZ optimizations to my
layout engine :-))
(( volunteers are needed for
1) writing parsers for truetype font definition files
and extract the kerning data etc.
2) writing PDF output driver - I have just made a quick and dirty
driver - this needs more work
Also, anybody who really *uses* quark express etc. and who hates wysiwyg
is welcome to contact me
))
</brain_dump>
More information about the erlang-questions
mailing list