February 10, 2003 (micah)
Zettai has donated free Zope web hosting to the PicoGUI project! Lalo is building a new web site for PicoGUI using Plone. You can see the work in progress at http://zope.picogui.org. When it is complete, it will replace this site.
January 25, 2003 (micah)
Another diagram, in PNG and Dia.
January 24, 2003 (micah)
More details about the new architecture emerge- I created a preliminary diagram giving a very high-level outline of how it will all fit together.
Snag it in PNG, PDF, or Dia formats.
January 22, 2003 (micah)
PicoGUI 0.44 was released!
See the sidebar or the sourceforge page for downloads and release notes. This release includes pgserver embedding, much improved OpenGL support, VNC server support, and miscellaneous bugfixes.
January 22, 2003 (micah)
We're starting to plan what will amount to a large rewrite of several major subsystems in PicoGUI, and plenty of tweaking and shuffling of the rest. There's more info in the mailing list archives, but this basically amounts to:
This would involve breaking up pgserver into a constellation of "servers" for the widget tree, layout engine, rendering engine, themes, input, and widgets.
These would communicate through a custom very lightweight RPC-like library. If you wanted pgserver to be a single binary, the RPC layer would optimize out into plain function calls. If you wanted shared libraries, the layer would become calls to dlopen()'ed libs. If you wanted them all on separate machines, you could use TCP. This would make the code easier to maintain, easier to experiment with, and more flexible. The theme server could be replaced without disturbing the others, in order to design alternative theme systems. You could connect multiple layout engines to one widget tree and view the same apps at multiple resolutions simultaneously.
- More intelligent memory management
All handles in pgserver would be reference counted, making it much harder to accidentally leak the server's memory when writing clients. Specialized allocators for several frequently-reused types would be provided, similar to the "zombie gropnodes" used now.
- New rendering engine
The "S2 engine" that I have been planning on implementing would take shape, in the form of the new default rendering engine. Going along with the microkernel idea, it will be possible to replace the S2 engine with libart or another renderer in order to do postscript and SVG rendering.
- New layout engine
This might be similar to the current layout engine but with some of the limitations removed, or it might be something completely different like a constraint solver. It will have optional support for floating point coordinates, and affine transformations.
- New configuration and build system
The SCons-based system I have been planning will be used from the ground up. The entire PicoGUI system will be configured as a whole, with usable dependency analysis and interfaces to both external libraries and external distro buildsystems.
- More real-time
The current input system falls victim to the same FIFO queueing delay that most GUIs are vulnerable to. PicoGUI should provide a way to quantify and limit the latency between input and response.
- More consistent widget model
PicoGUI widgets should be completely based on property get/set and event
passing, rather than only mostly. Widgets should be able to monitor data for
change and react immediately, through a node-monitor-like system for handle
- Better revision control system
The new source tree will be developed in something better than CVS, probably Subversion or Arch.
- New name?
To reflect all these changes, we might have a new name. Or not. This is still undecided
Well, that was quite a mouthful. Obviously it will take some time to rearrange, rewrite, and write code for the new system, but I'm confident it will be worth the effort. In PicoGUI's current state it will be fine for PDAs, but it lacks some of the features necessary to achieve the amount of scalability I've been envisioning PicoGUI having. While the new tree is being developed in a separate repository, the current CVS tree will still be developed.
Thanks to Lalo and Nathaniel for all the ideas above :)
January 19, 2003 (micah)
As a spiffy bonus before the release of PicoGUI 0.44, I've added VNC server support to pgserver. The server can output video to multiple VNC clients simultaneously, and each client gets its own mouse cursor. If you have a VNC client, point it at navi.picogui.org and you should see a simple demonstration app.
January 15, 2003 (micah)
One of the things PicoGUI is lacking the most of at this point is documentation. I've been toying with the idea of writing a PicoGUI book/reference that includes a more organized and formal version of all the documentation we have so far, plus a large amount of new material. I was planning on putting an outline on the wiki, but the wiki is flaky as usual. (If anyone feels like fixing a SFWiki, let me know :)
So, I'll just put it here:
January 12, 2003 (micah)
I have been distracted from PicoGUI by jetstream the last few weeks. This definitely doesn't mean I've lost interest in PicoGUI though. After a demo of jetstream this week, I'm going to spend some time getting PicoGUI ready for another release.
The CVS has seen numerous bugfixes I'd like to get into a release, plus the OpenGL-related code that was added and improved for jetstream's benefit. After having the experience of using PicoGUI to build a main menu, HUD, and debugging console for jetstream, it's looking like PicoGUI will be a great fit for jetstream's UI needs :)
There are several bugfixes I'd like to do, then get PicoGUI 0.44 released. Afterwards, there are several things on my plate for improving PicoGUI:
- New textbox widget features: clipboard, formatting, HTML
- New build system. The autoconf/automake system we're using now is annoying for users and for developers, so I'm planning on switching to something non-linux-centric and more easily configured. I'm currently planning on using SCons.
- New window management. This was discussed in the pgui-devel mailing list recently: I'd really like to (in addition to the current window management) create a blender-like method of arranging applications. This would scale very nicely between large and small screens, and between experienced and novice users
- New rendering engine, the "S2 engine". I've been pondering a rendering (and possibly layout) system rewrite for pgserver for a while. This would give pgserver a performance boost on all platforms, and make full window overlapping possible if it is desired. The algorithm borrows heavily from 2D parallax-scrolling game engines.
- Everything else on the sourceforge bug and feature tracker :)
November 16, 2002 (micah)
PicoGUI 0.43 was just released!
It includes the recent Widget Template and rootless code. Check the
sidebar to the left for the download and release notes.
November 16, 2002 (micah)
Just to prevent any misunderstanding of what PicoGUI is and isn't, read:
- The short summary of
PicoGUI on the wiki
- The FAQ
- Look at the screenshot
archive too. PicoGUI can run under a lot of different
environments: low-end PDAs, rootless in X, in a window in X, emulating
a PDA, in a terminal...
- "PicoGUI" or "picogui", not "picoGUI", "pico gui", or "pico-gui"
Also note that the new Widget Template and rootless mode code isn't in
the 0.42 release, but you can get it from CVS. Take a look at the Wiki
and the pgui-devel mailing list archives, as they'll hopefully answer
more questions if you have them.