Wednesday, November 23, 2005

Packaging the unpackageable...

Until now I was working with 4 or 5 packages, containing all the seaside stuff, the seaside loose, tests, and the squeak compatibility. Last night I was trying to packagize the classes and loose methods of Seaside.

My first approach was to use a separate package for each of the seaside class categories (which are pretty well categorized). So I could write an exporter in Squeak, that could export each category into a separate package. That way I would maintain the core, the widgets, and other classes separately. Well... I've failed. The coupling between the packages was so big, that I couldn't save any package, or just a few.

So I rolled back, put almost all into a big bag package named "Seaside Common", and left out the packages which don't cause cyclic dependencies.

The packages not in "Seaside Common" are, whose includes classes corresponding to the squeak class category:
  • Seaside Configuration
  • Seaside Continuations
  • Seaside Examples Test
  • Seaside HTTP
  • Seaside Libraries
  • Seaside Utilities
  • Seaside Canvas (includes also the Canvas Tags)
I don't know if it's possible to decouple things, I would like to have the widgets and all which is not really core in other packages. Then everything else is convenience (which will be installed as soon is proven that are convenient :-).

However, it's still active. And so I am.

Friday, November 18, 2005

Images working

I'm back with news (good I think).

All the images stuff is working!
Thanks to Object Arts, and all the people who did the GDI+ implementation for Dolphin (SW, CU, LS, DA), it's extremely full featured and very Smalltalk.

As usual with a good Smalltalk, I searched through the class library and found exactly what I needed. It happens that GdiplusImage implements a method named #asByteArray: , which expects the MIME type string (i.e. 'image/png'), using that for the encoding, plus four or five methods, it began to work. Without considering the side effect of polymorphism/dynamic binding, because all the Seaside (and Squeak) expects Forms as it base for all the image/pictures working, I use Gdiplus images and both understand a minimum common protocol, including #width, #height, etc.

However, it's working!.
I've found some other (worst?) problems, but all will be fixed, in their time.

I'll keep walking on the seaside, until the sun falls...

Thursday, November 17, 2005

Uploads working

The uploads are working.
WAFile expected a sequenced stream as it's contents.
Once done that, and implemented #asMIMEDocument in SequencedStream it began to work.

Wohoo! few things remains...

Wednesday, November 16, 2005

Seaside tides report

Well, this intends to be a report of how it's going on.

By now this is the status of the functionality available, which were
tested using the alltests application:

Things OK:

  • Input
  • Html
  • Exception
  • Transaction
  • Parent
  • Task
  • Cookies
  • Callbacks
  • Canvas
  • Home
  • Cache
  • Submit

Things that are half-working:

- Error, this trows the warning and the error, but I can't debug the
error. I get a "Cannot return a WAWalkback to expired context or
across Processes."

- Live - It live updates how it likes, and whatever it likes. It is,
it updates but refreshing the whole page. Or doesn't updates et all.
Michel Bany said that this behavior occured to him in VW, and in the
new SeasideAsync package it is solved, so once I get things done
with the rest, I'll move ahead with it.

- Upload, It's uploading, but I get a blind DNU that I will track
later. Last night I found that the HTTPPost didn't build the part's
properly, ommiting the filename in the PostDatum which may require it.

- Encoding, some characters are missing from the map, so it isn't
working just because of laziness.

- Path, It shows aWACounter, so I guess something isn't working
properly.

Things not ported yet:

  • Images
  • Default form

I'll have fun work porting the image/form stuff, I'll try to do it
using the available GDI+ functionality (if something already exists).

ToDo

- Once the most important things begins to work, I'll refactor and
"repackage" all the seaside classes.

- Then prepare everything and build an exporter from Squeak, which
exports what I want, in Dolphin package format. And try to keep an
up to date version of the port.

- Start to "dolphinize" the Seaside port, it is, add a Seaside Flipper inspector, implement some command query stuff. And some other crazy things I have in my head.

I know forgot a lot of things, I'll try to post here daily, so I forget less.


Once again, forgive my english grammar, I'm far from being a english speaker/writer.

Tuesday, November 15, 2005

Here we go

Hi, this is the first post in this weblog. The intention of the weblog is to have a progress log of how is going the port of Seaside for Dolphin Smalltalk X6. Let's walk on the seaside...

web site analysis