WxHaskell/Contribute

From HaskellWiki
< WxHaskell
Revision as of 14:54, 8 October 2015 by Henk-Jan van Tuyl (talk | contribs) (→‎Contribute to wxHaskell!)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Contribute to wxHaskell!

"Do not ask yourself what wxHaskell can do for you, but what you can do for wxHaskell" :-)

However, it is hard to find out which features are particularly interesting, the hardness of certain tasks, and whether you are duplicating work done by others. This page tries to remedy this situation by giving a list of good starting points for contributing to wxHaskell.

If you feel like doing one of these items, please notify the maintainer of wxHaskell, or send an e-mail to the wxHaskell developer mailing list, so that no effort is accidentally duplicated.


Solve bugs
This might require knowledge of C, C++ and Haskell
Introduce new features, based on feature requests on SourceForge
(It is best to discuss this on the wxHaskell developer mailing list first.)
This might require knowledge of C, C++ and Haskell
Create wxHaskell samples or screenshots
If you have a good sample or screenshot, send it to the wxHaskell maintainer for inclusion into the samples or the webpage with screenshots.
Add new widget abstractions to the WX library
This task only requires a good understanding of Haskell (and a certain taste for elegant design :-). Examples for which abstractions can be created are wxStopWatch or MDI windows. You only need to add code to the WX library and the WX.Controls library can serve as a typical example of useful abstractions.
Portable resources
A pure Haskell task, but requires a lot of careful design work and probably access to a Windows, MacOS X, and Linux system. As a first step, it would be great if there is some method of loading images, like bitmaps and icons, in a platform independent way. This could be done for example by requiring different formats for the same image for different platforms (an ico on windows, a mac icon on MacOS X), together with some generic function that searches for the most appropriate image. Another facet of this task could be the use of resource bundles, or ways to internationalize the application.
Create a good tree control / list /grid control abstraction
At the moment, trees, list and grid controls are cumbersome to deal with. It would be nice if better abstractions could be devised that work well in practice. Furthermore, the Haskell data in the tree control can maybe be typed by including the value types into the phantom type variable of the tree control. Requires a good feeling for elegant and practical design with Haskell, together with some GUI experience.
Create fancy Vector Graphics support
At the moment, wxHaskell has just thin wrapper for wxGraphicsContext. This is not good for users. So, we need to implement higher-level fancy Vector Graphics support on top of wxGraphicsContext wrapper that is like Gtk2Hs' Cairo support.
Add COM (ActiveX) support for Windows platform
wxWidgets can use com by wxActiveXContainer and wxActiveXEvent classes. Haskell also has two com support packages (com and hscom). So, idea is that implementing com support on top of wxWidgets and Haskell's com support.
Add new PowerShell's install and building script for Windows platform
We use MS-DOS batch file for install script, and make with bash shell script for building script now. MS-DOS batch script is easy to use for end-user, but this is not easy to write although newer Windows versions are extending features. Shell script is good for this tasks, but Windows doesn't have that in default. It's probably that we can solve these Windows specific problem by using PowerShell. Because Windows 7 will have PowerShell in default. Note: Don't remove old install and building script until most user switched to Windows 7 or later version.
  • RichText support (wxHaskell doesn't support wxRichText* classes currently).
  • Better Internet support.
  • Better clipboard, copy and past support.
  • Type-safe XRC support.
  • ...

See also Haskell.org's GSoC (Google Summer of Code) project idea page ticket #1550.