At 2001-09-24 05:44, Manuel M. T. Chakravarty wrote:
*** The GUI Library Task Force Strategy Proposal ***
It's worth pointing out that I'm covering much of the same ground with my bridge to the Java VM. http://sourceforge.net/projects/jvm-bridge/ Of course there are differences:
* Development of a GUI library API for Haskell that is portable across Haskell systems and operating/windowing systems
Same.
* The library focuses on graphical *user interfaces* (ie, buttons, menus, scrollbars, selection lists, etc) as opposed to drawing and animation routines.
Java has APIs for both, I believe.
* Verification of the design by at least one implementation of a library that exports the GUI API
This has already been done for the Java APIs.
* Minimal use of features that are not included in Haskell 98 (in fact, we currently believe that we can keep the API completely free of any non-H98 features; however, application programs that use the API will need some non-H98 functionality)
I admit I am using some non-H98 features... in fact right now I'm working solely with GHC.
* While we do not require support of concurrency by Haskell systems implementing the API, the use and behaviour of the API must be well-defined on systems that do support concurrency
I will be using Java's threading. This means the Haskell system needs to support concurrency.
* Core library: - Due to the complexity of modern GUIs, we cannot hope to cover a fully-fledged GUI library in reasonable time and with reasonably effort; thus, we concentrate on a core library (what exactly constitutes the core remains to be defined)
Inasmuch as the AWT/JFC/Swing counts as 'fully-fledged', I will have it.
* Openness for tools support; for example, it should be possible to support graphical interface builders (such tools are not part of the API, but we need to ensure that we do not seriously complicate the construction of such tools)
Same.
Non-goals ~~~~~~~~~ * We will not design a fully-fledged GUI library from scratch:
Hopefully, I will be simply picking up a fully-fledged GUI library.
* We will not design a "purely functional GUI":
Same.
The Plan ~~~~~~~~ * Handling of state altered by both the application and by GUI widgets:
I'm not sure what the issue is here.
* Start from the API of GTK+ as a base line: - This is an API that has a proven track record of being suitable for small, medium, and large-scale applications
Same for Java. I think.
- The API does not overly rely on object-oriented language features
This is the biggest sticking point for Java. The JVM-Bridge will allow you to create and load Java classes at run-time, even then, this may turn out to be complicated for the user.
- A large body of free documentation exists for the API, which can be adapted to our purpose
Same for Java. http://web2.java.sun.com/docs/books/tutorial/
- A working Haskell binding exists that can be extended to provide a first implementation of the Haskell GUI API
I don't have anything usable yet. The JVM-Bridge will have to be code-complete before it is usable.
- GTK+ itself is already reasonably platform independent
Same or better for Java.
* Ensure platform independence:
Same.
* Haskell-ise the API: - C-ish functionality will be cut out - Full use will be made of Haskell's type system and, in particular, type classes
Same.
* Convenience libraries - The API will include a set of convenience libraries on top of the basic API (eg, by providing layout combinators)
A straightforward addition, but not part of my core effort. -- Ashley Yakeley, Seattle WA
On Mon, 24 Sep 2001, Ashley Yakeley wrote:
At 2001-09-24 05:44, Manuel M. T. Chakravarty wrote: (snip)
* The library focuses on graphical *user interfaces* (ie, buttons, menus, scrollbars, selection lists, etc) as opposed to drawing and animation routines.
Java has APIs for both, I believe.
It does indeed, at least enough for my purposes. (snip)
* We will not design a "purely functional GUI":
Same.
Pity; the idea does sound intriguing. (-: (I know nothing about them though, hence the smiley.)
The Plan ~~~~~~~~ * Handling of state altered by both the application and by GUI widgets:
I'm not sure what the issue is here. (snip)
I guess the point is that the application needs to be able to drive GUI events itself, and it also has to be able to respond to actions by the user. -- Mark
Ashley Yakeley <ashley@semantic.org> wrote,
At 2001-09-24 05:44, Manuel M. T. Chakravarty wrote:
*** The GUI Library Task Force Strategy Proposal ***
It's worth pointing out that I'm covering much of the same ground with my bridge to the Java VM.
http://sourceforge.net/projects/jvm-bridge/
Of course there are differences:
* Development of a GUI library API for Haskell that is portable across Haskell systems and operating/windowing systems
Same.
Maybe I should point out that the effort by the GUI Task Force is *not* meant to preempt any other GUI efforts for Haskell. The goal of the GUI Task Force is very limited, so that we arrive at a workable solution quickly. It's purpose is merely to provide some baseline functionality that any Haskell user can rely on having available. The relation to other GUI projects can be as twofold: * Simple bindings to GUI libraries (such as Gtk+HS) could provide the standard GUI API as one way to access the library. * High-level approaches (such as FranTk & Yahu) could be implemented on top of the GUI API. The combination of the two would lead to the nice situation where we can use different high-level APIs on different widgets sets. Cheers, Manuel
participants (3)
-
Ashley Yakeley -
Manuel M. T. Chakravarty -
Mark Carroll