Grail To Do List
See also the list of items that have been
(See also the Grail
0.2 bugs list, from this was derived by editing.)
Here is a list of things that ought to be fixed in Grail and
aren't being taken care of yet. Obviously, these are not in any
- The documentation is still incomplete.
- The font and color assignments are hardcoded (and incomplete).
This should be done via a preference panel; only a partial solution
has been implemented so far. (Somewhat improved in 0.6.)
- The indication of a partially loaded or broken image could be
better. When an image load fails, the "ALT=..." text should be
displayed, if present; not a blank space. The stop sign is confusing.
- Pages containing an excessive number of in-line images run the
risk of running out of file descriptors, which isn't handled
- Grail is unresponsive during the initial connect() to a server.
This is especially noticeable for dead servers, where you have to
wait the full time-out period. (Work-around: type a Control-C in the
shell window where you started Grail.) (Should use connect_ex()
instead for real sockets; may require changes in *API handling.)
- Need to speed up the Tk rendering code.
- The <TABLE> support isn't good enough for many of the
commercial Web sites out there today; this should be fixed.
- There's a problem where a <DL> inside a
<DT> doesn't nest unless it's inside a <DD>. See the lay-out test
- Running two Grail processes sharing the same cache directory is
not a good idea. The last one to quit wins.
- When a username/password combo is known for a particular page, it
should be submitted by default for all other pages in the same
directory (maybe even subtree?).
- The $no_cache environment variable should support domains as well
as hosts. (Probably a preferences panel issue.)
- Applets can't use modules that are imported as shared libraries.
(I tried to fix this but the package support using ni seems to have
broken it again.)
- Applets can read arbitrary files (they can only write files in
$TMPDIR or /usr/tmp though).
- Applets can open arbitrary sockets.
- Applets have access to most browser internals and can modify them.
- Applets can quit the browser (in a number of ways!).
- There is no limit to the resources used by an Applet.
Do These Things Later
- Restricted execution mode doesn't allow access to self.__dict__,
making implementation of __getattr__ and (especially ) __setattr__
- Fred Drake's <LINK> support. This will probably be an HTML
- Memory leaks. (Yeah, right.)
- Frozen binaries and packages won't work together. (Is this
still a problem with Python 1.5?)
- No built-in support for these protocols: gopher, wais, telnet. (Later.)
- No content-encoding support (well, it recognizes it and offers to
save; this should be enough). (Support for gzip in release
- Applet code is executed synchronosly, so any blocking I/O they
might do (such as loading URLs) blocks the entire browser.
- There could be an applet debugger.
- The save dialog for files of unknown type should display the URL
and file type, and suggest a filename. (Partly done; a filename is
suggested, and the MIME type is shown.)
- <FIG> support.
- Support for the Secure HTTP protocol (https: URLs)
- Support for <MATH>.
- "Cookies". (Originally expected in release 0.5, still not in 0.6.)
- There should be an automated process for downloading and
installing patches and plugins.
- No in-line scaled images. (Works if PIL is installed.)
- Print the actual contents of form fields.
Problems that may or may not have disappeared
- Occasional "grab failed" messages resulting in failures (Tk bug?).
- A socket error in the http protocol handler doesn't seem to be
Mac Specific Items
- Directory listings of local files don't work (it invokes "ls -l").
- Creating frames makes it go beserk.
- Stability. (Wait for Tk.)
- Performance. (Wait for Tk.)
- SIOUX steals events from Tk, especially activate events.
- Some pathname operations are still using Unix style paths.
- No way to generate button-2 or button-3. (Wait for Tk; need
- No way to generate Alt-key events. (Wait Tk; need work-around.)
- Can't import standard modules from applets. (I know what it is --
Mac pathnames look like URLs so are removed from sys.path.)
These items no longer require our attention.
General Project Items
- In the announcement, add a pointer to netpbm (perhaps even mirror
on python.org). (Done.)
- Most protocol handlers read their metadata synchronously, thereby
blocking Grail while waiting for the metadata to be transferred
completely. (Fixed for HTTP.)
- Issueing a Reload command in the window created by the View Source
command will redisplay the file formatted as HTML. (Done.)
- No scroll bars in the load/save file dialogs. (Done.)
- The load/save file dialogs should remember the last directory
used. (I have this working for the save dialog, but in a too ad-hoc
fashion to be useful. It should be a feature of the load/save dialog
- When dragging (as opposed to clicking) in a link, the link should
not be followed. (Done.)
- Printing of non-HTML documents doesn't work. (Done.)
- The image objects for the animated logo are not shared between
browser windows. (Done.)
- A <P> tag following a <BR> tag does not insert a blank
line. See my lay-out test
- A <LI> tag outside a <UL> or <OL> list doesn't
get rendered properly. See also the lay-out test
- Check Grail against some torture test pages, e.g. Digital's Forms test suite and BrowserCaps. Anthony Baxter once
reported: "Grail passes some of these tests, but not all. So far, the
major failures of things that BrowserCaps claims is required are: ALT
text in <img> H4-H6 all use the same font. No support for
(non-breakable space)." (Partially done.)
``Multiple BR's create more space (they are not meant to).''
- There is no persistent disk cache. (Done.)
- The memory cache is never flushed. (Done.
There is no longer a memory cache, but the disk cache is properly
- Cache entries are never tested for freshness. (Done.)
- Form input and queries shouldn't be cached. (Done.)
- Reload doesn't re-read images. (Done.)
- When an applet can't be found, no complaint is issued. (Done.)
- <OBJECT> support. (Done.)
- Scrap the annotation demo. (Done.)
- The load/save file dialogs should do tilde expansion. (Done.)
Do These Things Later
(Surprisingly enough, some of these have been done. :-)
- Bullets are displayed as asterisks. (Done.)
- Greek & math general entities. (Done.)
Mac Specific Items
- Crash on JPEG images: os.popen not defined. (Done -- no
crash, still no JPEG suport though.)
- Can't write user preferences file? (Done -- was a GUSI chdir()
bug, fixed by Jack.)