Roadmap
│
English (en) │
русский (ru) │
This document gives an idea of the current status of the various parts of Lazarus and also helps new contributors to find a suitable place where they can help. It also shows the people implementing the various parts and the targets.
Note: This page refers to the LCL Interface portion (that talks to the backend toolkits) of the Lazarus Component Library. It does NOT reflect on the actual features of the individual GUI toolkits (eg: GTK2, GTK3, Qt, Qt5, Qt6, fpGUI etc)
Legend:
Working - Stable, most or all parts implemented.
Partially Implemented - Works, but has some features missing
In progress - Someone is working on this
Not Implemented - Nothing done, needs your help
Deprecated - Outdated, obsolete, usage not recommended for new projects
Unknown - Please review whether this component is working, and set its status here
General status of LCL interfaces
Unit | Item | State | Target | Backend | Responsible | Comments |
---|---|---|---|---|---|---|
GTK1 | Deprecated interface | working | 1.0 | Gtk | - | - |
GTK2 | Main Linux (and similar UNIXes) interface | working | 1.0 | Gtk2 | Zeljan | - |
GTK3 | Linux (and similar UNIXes) interface | progress | 1.4 | Gtk3 | Zeljan | Alpha state |
Win32 | Desktop Windows for both 32 and 64 bits | working | 1.0 | WinAPI | Paul Ishenin and Vincent | - |
Qt | The Qt4 interface | working | 1.0 | Qt and LCL | Zeljan | Depends on qt4 bindings |
Qt5 | The Qt5 interface | working | 1.8 | Qt5 and LCL | Zeljan | Depends on qt5 bindings |
Qt6 | The Qt6 interface | working | 2.4 | Qt6 and LCL | Zeljan | Depends on qt6 bindings |
WinCE | The Windows CE interface | working | 1.0 | Windows API and LCL | - | Depends on volunteers |
fpGUI | The fpGUI interface | in progress | no target | fpGUI and LCL | - | Depends on volunteers |
Carbon | The Carbon interface | stalled (deprecated) | 1.0 | Carbon and LCL | - | - |
Cocoa | The Cocoa interface | working | 2.6 - 2.8? | Cocoa and LCL | Dmitry | Depends on volunteers |
CustomDrawn | The CustomDrawn interface | in progress | no target | LCL, X11, Android NDK and SDK | - | Depends on volunteers |
Current status of the various parts of Lazarus
Unit | Item | State | Target | Skills | Responsible | Comments |
---|---|---|---|---|---|---|
IDE | TCollection Editor | working | 0.9.x | FCL, RTTI, IDE | - | A generic TCollection editor for the various TCollections in the LCL/FCL. |
IDE | TActionList | working | 0.9.x | - | - | - |
IDE | Doc Editor | working | - | fpdoc | - | The doc editor will be an integrated fpDoc editor similar to fpde. It will be a process of its own, so that it can show help for dialogs as well. It should also be able to write help for packages. |
IDE | Export LFM as xml | working | - | - | - | Load and save LFM files to XML. |
IDE | Icon Editor Roadmap | in progress | post 1.0 | - | - | A simple icon editor with the ability to create lrs files. It will be a good example and can help newbies to create icons for their components. |
LCL | Borderspacing | working | 0.9.x | - | - | for aligned controls |
LCL | Drag&Drop | working | - | - | ||
LCL | Port to Darwin Power PC, macOS | working | 0.9.x | - | - | depends on FPC 1.9.5 |
LCL | Port to macOS (x86) | working | - | - | - | depends on FPC 2.1.1 |
LCL | TSplitter | working | 0.9.x | easy | - | - |
LCL | TFindDialog | working | - | - | - | Implemented in 0.9.16 |
LCL | TReplaceDialog | working | - | - | - | Implemented in 0.9.16 |
LCL | TControl.Font | in progress | 0.9.x | - | - | - |
LCL | TTabControl | in progress | 0.9.x | - | - | - |
LCL | Docking (= the combination of forms) | partially working, in progress | post 1.0 | deep LCL and interfaces | Mattias | - |
LCL | TFrame (= forms as children) | working | 0.9.28 | deep knowledge of LCL | Mattias, Paul | - |
IDE | Visual Form Inheritence | working | post 1.0 | IDE | Mattias | Properties are not yet propagated to open descendants |
LCL | MDI - Multiple Documents Interfaces Putting fo ... | in progress | 1.2 | deep LCL and interfaces | Zeljan | An MDI LCL emulator for widgetsets which does not support MDI, also native implementation of MDI for qt and win32/64. Currently only qt has full MDI support, others are in progress. |
LCL | Palette support | not implemented | - | - | - | Required to correctly show colors on a 256 colors display |
LCL | TCoolBar | partially working, in progress | post 1.0 | LCL and anchoring | Juha | - |
LCL | TControlBar | skeleton implementation to prevent errors in Delphi conversion, in progress | post 1.0 | LCL and anchoring | Juha | - |
LCL | TMaskEdit | working | - | - | Bart | - |
LCL | TDirectoryTreeView | not implemented | - | - | - | - |
LCL | Constrain maximization to specific area | not implemented | - | winapi, gtk | - | When maximizing a window, the left, top, width and height can all be constrained to a specific rectangular area on the screen/desktop. After this is done, constrain the source editor and maybe other windows |
Components | TIcon | working | 0.9.26 | - | Marc | - |
Components | CUPS Package | working | 0.9.x | easy | - |
Status of features on each LCL Interface
Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|
Accelerator Keys | Working | Working | Partially Implemented | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
Caret | Working | Working | Working | Working | Working | Unknown | Not Implemented | Working | Not Implemented |
Clipboard | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Implemented in Android |
Cursors | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Not Implemented |
Drag & Drop | Working | Working | Working | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
Drop files event | Working | Working | Working | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
MDI Support | Not Implemented | Not Implemented | Not Implemented | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
Printing | Working | Working | Working | Partially Implemented | Working | Unknown | Not Implemented | Not Implemented | Not Implemented |
Regions | Working | Working | Working | Working | Working | Working | Partially Implemented | Partially Implemented | Working |
TCustomControl descendents | Working | Working | Working | Partially Implemented | Working | Working | Working | Working | Working |
Unicode Support | Working | Impossible to Implement | Working | Working | Working | Working | Working | Working | Working |
BidiMode | Working | Not Implemented | Partially Implemented | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
Application | Working | Working | Working | Working | Working | Partially Implemented | Partially Implemented | Working | Working |
TTimer | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Working |
TApplication.QueueAsyncCall | Working | Unknown | Working | Unknown | Working | Unknown | Working | Working | Not Implemented |
TThread.Synchronize | Working | Unknown | Working | Unknown | Working | Unknown | Working | Working | Not Implemented |
PostMessage | Working | Unknown | Working | Working | Working | Unknown | Working | Working | Not Implemented |
PostThreadMessage | Working | Unknown | Unknown | Unknown | Working | Unknown | Not Implemented | Unknown | Not Implemented |
Status of Graphics on each LCL Interface
Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|
TBitmap/TPixmap/TIcon/etc | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working |
TBrush | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented | Working | Working |
TFont | Working | Working | Partially Implemented | Working | Working | Working | Partially Implemented | Working | Working |
TPen | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working |
ExtTextOut | Working | Working | Working | Working | Working | Working | Working | Working | Working |
Status of native controls on each LCL Interface
Native controls are TWinControl descendants which do not descend from TCustomControl.
Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|
TBitBtn | Working | Working | Working | Working | Working | Working | Working | Working | Partially Implemented |
TButton | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TCalendar | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
TCheckBox | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TCheckGroup | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
TCheckListBox | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
TComboBox | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented | Working | Implemented in Android |
TEdit | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TForm | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TGroupBox | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TIdleTimer | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
TImageList | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
TListBox | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
TListView | Working | Working | Partially Implemented | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
TMainMenu | Working | Working | Working | Working | Working | Working | Working | Working | Implemented in Android |
TMemo | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TMenuItem | Working | Working | Working | Working | Working | Working | Working | Working | Implemented in Android |
TPageControl and TTabSheet | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
TPairSplitter | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
TPanel | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TPopupMenu | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
TProgressBar | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TRadioButton | Working | Working | Working | Working | Working | Working | Working | Working | Partially Implemented |
TRadioGroup | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
TScrollBar | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Partially Implemented |
TScrollBox | Working | Working | Working | Partially Implemented | Working | Unknown | Partially Implemented | Working | Not Implemented |
TSpinEdit | Working | Working | Working | Working | Working | Unknown | Not Implemented | Working | Partially Implemented |
TSplitter | Working | Working | Working | Working | Working | Unknown | Partially Implemented | Working | Not Implemented |
TStaticText | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TStatusBar | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
TToggleBox | Working | Working | Working | Working | Working | Partially Implemented | Not Implemented | Working | Not Implemented |
TTrackBar | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working |
TTrayIcon | Working | Working | Working | Partially Implemented | Working | Not Implemented | Not Implemented | Working | Not Implemented |
Status of dialogs on each LCL Interface
Component | win32 | gtk | gtk2 | carbon | qt/qt5 | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|
LCLIntf.MessageBox | Working | Working | Working | Not Implemented | Working | Working | Working | Working | Implemented for Android |
Application.MessageBox, MessageDlg, LCLIntf.PromptUser | Working | Working | Working | Working | Working | Working | Working | Working | Implemented for Android |
LCLIntf.AskUser | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
TColorDialog | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
TFontDialog | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
TOpenDialog | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
TPrinterSetupDialog | Working | Working | Working | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
TSaveDialog | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
Status of TCustomControl based controls on each LCL Interface
Note that being a TCustomControl descendant does not guarantee that a control has no widgetset implementation. TArrow has it, although it has a good default implementation. TNotebook is fully implemented in the LCL.
Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|
TArrow | Working | Working | Working | Working | Working | Working | Working | Working | Working |
TNotebook | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working |
TUpDown | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented |
TStringGrid | Working | Working | Working | Partially Implemented | Working | Partially Implemented | Partially Implemented | Working | Partially Implemented |
TDrawGrid | Working | Working | Working | Partially Implemented | Working | Unknown | Partially Implemented | Working | Partially Implemented |
TToolBar | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
TTreeView | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
TValueListEditor | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented | Working | Not Implemented |
Status of TGraphicControl based controls on each LCL Interface
Note: These are for LCL wrapped components only, not for the specific GUI toolkit features itself.
Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|
TBevel | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented |
TLabel | Working | Working | Working | Working | Working | Working | Working | Working | Implemented for Android |
TShape | Working | Working | Working | Partially Implemented | Working | Partially Implemented | Working | Working | Working |
TSpeedButton | Working | Working | Working | Working | Working | Unknown | Working | Working | Working |
TPaintBox | Working | Working | Working | Working | Working | Unknown | Working | Working | Working |
TImage | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Working |
Status of LazDeviceAPIs on each widgetset
Component | customdrawn-android |
---|---|
Accelerometer | Working |
Messaging (SMS, MMS and E-Mail) | SMS Implemented |
PositionInfo | Working |