wxWidgets Logo

Develop

Bounties
CVS access
Guidelines
Opportunities

About wxWidgets Roadmap

Schedule | To-Do List | Done List

This page represents current thinking about where wxWidgets is going in the near, medium and long-term. It also serves as a schedule for new releases so that both developers and users can know what to expect when, at least approximately.

Note: In the following, the term 'stable' refers to a tested release from the stabilised branch. 'Unstable' or 'development' does not mean that the release will fall over a lot (although it might), but refers to the fact that the unstable branch is subject to a lot of changes and should not normally be used for production-quality applications, unless you really know what you're doing.

We have adopted the Linux kernel style of numbering system where odd minor version numbers are development versions, and even numbers are stable versions. For example, 2.5.x are development releases, and the next 'stable' or final release of it would normally be 2.6 (or 3.0.0 if incrementing a major version).

Development versions that end up on the FTP site or CD-ROM, as opposed to remaining in the CVS archive, are semi-stable -- i.e. they are checked for compilation and run-time problems, but not as thoroughly as the stable versions.

Note that since much of the wxWidgets effort is voluntary, these are not hard-and-fast deadlines: but we will endeavour to follow them as closely as possible.

This page only shows the things which are still left to do, please look elsewhere to see the complete list of changes between the releases, including the things which are already done.

Please send changes to this page to Julian Smart: julian@wxwidgets.org.

Schedule

RELEASE TYPE SCHEDULED RELEASED TAG DESCRIPTION
2.4.0 Stable 1/2003 2003-01-06 WX_2_4_0 This was a stable release.
2.4.1 Stable 2003-03-01 2003-06-13 WX_2_4_1 This was a stable release.
2.4.2 Stable 2003-09-20 2003-09-23 WX_2_4_2 This is the last releases in 2.4 branch. It was purely a bug-fix release.
2.5.1 Development 2003-09-30 2004-02-23 WX_2_5_1 This was an unstable release.
2.5.2 Development 2004-06-01 2004-05-31 WX_2_5_2 This was an unstable release.
2.5.3 Development 2004-10-17 2004-10-11 WX_2_5_3 This was an unstable release.
2.5.4 Development 2005-02-01 2005-02-24 WX_2_5_4 This was an unstable release.
2.5.5 Development 2005-04-03 2005-04-03 WX_2_5_5 This was an unstable release; the last before 2.6.0.
2.6.0 Stable 2005-04-10 2005-04-21 WX_2_6_0 This was a stable release.
2.6.1 Stable 2005-06-01 2005-06-03 WX_2_6_1 This was a stable release.
2.6.2 Stable 2005-08-01 2005-09-20 WX_2_6_2 This is the latest stable release.
2.6.3 Stable 2006-01-10 2006-03-25 WX_2_6_3 This is a bug-fix release in the stable branch.
2.7.0 Development 2005-12-01 2006-08-06 WX_2_7_0 First release in new development cycle.
2.8.0 Stable mid 2007? ? WX_2_8_0 Not decided yet (and maybe will be skipped entirely in favour of 3.0).
3.0.0 Stable end 2007? - WX_3_0_0 This stable release will have STL compatibility for compilers that support templates fully. For example the wxString class will derive from std::basic_string<>.

To-Do List

This is a collection of the various things which it would be nice to include in wxWidgets. They may or may not be scheduled or funded. If you're interested in helping with wxWidgets development, one of the small projects below could be a great way to join the team!

Developers: please feel free to add to these, and delete them when they are done. You can also add to docs/todo.txt in CVS HEAD, and these items will be transferred to this web page in due course.

Documentation

  • Update this roadmap page, many items are out of date.
  • The possibility of moving doc into header files with tool support, or translation to XML with support from scripts (comparison of headers and documentation).
  • Detailed review of doc accuracy.
  • wxDC: Precise definition of default/initial state.
  • wxDC: Pixelwise definition of operations (e.g. last point of a line not drawn).
  • Events: for all controls state clearly when calling a member function results in an event being generated and when it doesn't.
  • Document all wxUSE_XXX settings (it would be also nice to centralize their definitions in a single file instead of having them in several different setup.h)
  • Update the coding standards guide

General

  • High priority
    1. wxDataViewControl: combination of wxListCtrl and wxTreeCtrl implementing natively for GTK2 and Mac OS.
    2. A rich text editor similar to GTK+ 2.0 GtkTextView but cross-platform. Most platforms (wxGTK, wxMac, wxMSW) now support a good range of rich text features and so we should initially extend the capabilities of wxTextCtrl. Future, separate implementations of rich text widgets are not ruled out.
    3. Possibility to use individual wxUniv controls from the native ports.
    4. Book, official tutorial.
    5. Under Unix: implement wx-config as a version and build parameters independent script which would just read the configuration files.
    6. Give wxFileSystem a better API.
    7. Integrate wxFileSystem with wxWidgets (currently only wxHtml uses it).
    8. Fix wxStream: problems with Eol(), LastCount(), buffering.
    9. Fix wxPostScriptDC. In Unicode mode, text comes out very small. Possible alternatives: Cairo; PangoPDF; libpdf++; look at what other projects have done, such as Mozilla, OpenOffice and Tcl/Tk; fix/rewrite the existing non-Pango PostScript output. We might get help from PostScript experts since Unicode support in PostScript is a complex topic.

  • Medium priority
    1. Alpha-blending for backgrounds, dragging, etc. Should be able to load from PNG with alpha channel.
    2. wxHTML2, using native HTML renderers where available.
    3. write wxConfg implementation using XML as backend:
      • portable wxXMLConfig for all platforms
      • wxApplePrefConfig for working with .pref files on Mac OS X
    4. Project File Generation
      We need a (GUI) tool to generate the project/makefiles for all supported platforms/compilers. Not sure if it should be used for the library itself (would be nice to have something like "make menuconfig" for Linux kernel which allows you to navigate easily amon all of the configure/setup.h options but there is a problem with distributing such tool as it can't be compiled by the user because it is needed before the library is built) but we definitely need it for the users makefiles. utils/configtool is a step in the right direction for this tool.
    5. Events: loose coupling, event-source event-sink
    6. Lazy initialisation of event tables
    7. Module initialisation
      We aim to arrive at a lazy initialization of modules only when they are first needed. Dependency information between modules is needed. Dynamic Plug-In loading and unloading must be compatible with that.
    8. wxStaticBox
      Hide the platform problems (GTK: 'children' must be siblings) in encapsulation in order to avoid problems on ports where the hierarchy must be 'correct'.
    9. masked text editor control; time entry control implemented using it
    10. wxReBar control (moveable toolbars, menubars).
    11. write a wxThreadEvent class (bad name, anything better?) which would encapsulate Win32 event object and be emulated under other platforms using POSIX conditions
    12. standard menu and toolbar customization dialogs
    13. MIME types code needs a cleanup and a GUI interface to allow setting the MIME types and related information from the program itself

  • Low priority
    1. Synchronisation API between mobile and desktop.
    2. Extend and unify drag and drop handling (e.g. we need to specify multiple drop targets that can handle multiple formats).
    3. Support for "skins", perhaps using a set of alternative control and window classes written generically in wxWidgets.
    4. Serial and parallel port support.
    5. Modem and telephony support.
    6. Improve accessibility support.
    7. More examples.
    8. wxDC Support for point to char-position with text rendering
    9. wxLocale Extension (eg Currency)
    10. Must be able to portably specify relaying out a frame after the toolbar has been destroyed or recreated. On wxMSW, this is done in ~wxToolBar. On wxGTK, in SetToolBar. In wxMac, not at all, but sending a wxSizeEvent will do it.
    11. Need wxRect wxToolBar::GetToolRect(int id) or similar so we can align a popup menu with a toolbar button.
    12. No Append(wxArrayString) for wxChoice and wxComboBox in wxGTK. Probably other functions too. Consider adding Insert to these classes, as per the patch on SF.
    13. Rewrite wxFileHistory using wxString and wxArrayString, and put in separate file.
    14. Add wxArrayString methods to wxTextValidator and any other class that needs them.
    15. Add wxNotebook::GetTabRect or similar so we can estimate page size better in wxNotebookBase::CalcSizeFromPage.
    16. Add individual setters to wxScrollBar and other classes that use a combined setter.
    17. Remove traces of old resource system from wxWizard.
    18. Have wxDirCtrl as alias for wxGenericDirCtrl.
    19. Allow instant reaction to left-up in a wxGrid cell (extend editor API) to work around bad checkbox behaviour (click, click, click, click away...) and reduce checkbox size on non-Windows platforms.
    20. Add wxNotebook::HitTest for non-Windows platforms.
    21. Implement rebar for all platforms. This will help us get closer to native look and feel, e.g. the gradient shadow on XP toolbars.
    22. Fix wxHTTP/wxFTP which are currently broken, fix/rewrite wxURL
    23. Add 3-state wxCheckBox (done now for MSW and Mac, to do for other ports)
    24. In doc/view file selector, document type is selected by extension, not the type selected in the (Windows) file selector.
    25. Add wxUSE_HOTKEY and any other missing options to configure.
    26. Code cleanup and removal: contrib/src/mmedia, contrib/src/applet?, Dialog Editor

wxMSW

  1. Finish Windows CE port. See the relevant Wiki pages for more details.
  2. More code cleanup: all controls should use MSWGetStyle(), implement DoGetBestSize() and so on
  3. Cleanup wxSlider, the positioning code is messy

wxGTK

  1. Implement wxList/TreeCtrl using native widgets
  2. Use more standard dialogs (colour, maybe open file in 2.4)
  3. GNOME/KDE integration libraries.

wxX11

  1. Some bugs and performance issues need to be addressed.
  2. Implement clipboard, drag and drop.

wxMac

  1. Unicode support
  2. Better way to specify About, Preferences menu ids under wxMac.
  3. wxMac font selector dialog is the generic font selector - implement a selector that looks native.
  4. Fix bug with filenames having non-ASCII characters.
  5. Implement tooltips, context-sensitive help (perhaps as balloon help).
  6. Implement popup window.
  7. Implement toggle buttons.
  8. Implement joystick support.
  9. Integrate patches from AOL.
  10. implement wxTextCtrl::HitTest()
  11. Miscellaneous fixes (approx. 300).

wxUniv

  1. work on the other ports
    1. wxUniv/Qt might be interesting for the hand held devices using Qt as their native toolkit
    2. wxQNX for embedded market

Infrastructure

  1. Improve release engineering, by automating as much as possible. Use SourceForge compile farm (or other facilities) to spin some of the releases using a specification of the type of release, tag to use, etc.
  2. Improve QA: designate QA engineers for specific platforms (this is done informally at present); use SourceForge compile farm (or other facilities) for automated compiles.
  3. Improve mailing list search.

Done List

These items have been moved from the To-Do list.

  1. Build system redesign allowing to easily create add-on libraries
  2. Make it possible for the wxGUI ports to use wxBase library directly
  3. provide a standard implementation of wxRenderer so that the other (i.e. native) ports could use the universal controls as well
  4. make wxListCtrl and wxTreeCtrl really themeable (depends on the previous point as they should still be usable in the normal ports)
  5. Text selection in wxHTML
  6. STLization
  7. use wxEventLoop in all builds
    wxApp and wxDialog should use wxEventLoop objects (the exact class can be customized by user code by overriding some wxApp::CreateEventLoop()) instead of duplicating the same code
  8. Make ODBC Unicode-compatibl (to check)
  9. wxTextCtrl::HitTest() (for MSW and GTK2)
  10. more efficient idle handling


 
 

Quick Links

 
  Tutorials
Mailing Lists
Latest Docs

Community

wxForum
wxCommunity
Applications
Add-ons
wxWiki
 
 
 
 

wx Solutions

 
   
 
 
 

wxWidgets Book

 
 

Buy it From:
Amazon.com
Amazon.co.uk

 
 
 
 

Donate Now

 
 
 
 
SourceForge.net Logo

Site design and update scripts by Kevin Ollivier, with special thanks to Brad Anderson for his improvements to the sidebar, intro table and navbar designs, Bryan Petty for the new wxWidgets blocks graphics and logo text, and to the wxWidgets community for all their helpful suggestions, comments and testing!