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.
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 | working | 5.0 | Gtk3 | Zeljan | Needs heavy testing and bug reports ! |
| 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 | 4.0 | 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 qt4/5/6 and win32/64. Currently qt4/qt5/qt6 and win32 have native MDI support, gtk3 uses an mdiemulator. |
| 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 | gtk3 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|---|
| Accelerator Keys | Working | Working | Partially Implemented | Partially Implemented | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
| Caret | Working | Working | Working | Working | Working | Working | Unknown | Not Implemented | Working | Not Implemented |
| Clipboard | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Implemented in Android |
| Cursors | Working | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Not Implemented |
| Drag & Drop | Working | Working | Working | Working | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
| Drop files event | Working | Working | Working | Working | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
| MDI Support | Working | Not Implemented | Not Implemented | Working - uses MDI emulator | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
| Printing | Working | Working | Working | Working | Partially Implemented | Working | Unknown | Not Implemented | Partially Implemented | Not Implemented |
| Regions | Working | Working | Working | Working | Working | Working | Working | Partially Implemented | Partially Implemented | Working |
| TCustomControl descendents | Working | Working | Working | Working | Partially Implemented | Working | Working | Working | Working | Working |
| Unicode Support | Working | Impossible to Implement | Working | Working | Working | Working | Working | Working | Working | Working |
| BidiMode | Working | Not Implemented | Partially Implemented | Partially Implemented | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
| Application | Working | Working | Working | Working | Working | Working | Partially Implemented | Partially Implemented | Working | Working |
| TTimer | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Working |
| TApplication.QueueAsyncCall | Working | Unknown | Working | Working | Unknown | Working | Unknown | Working | Working | Not Implemented |
| TThread.Synchronize | Working | Unknown | Working | Working | Unknown | Working | Unknown | Working | Working | Not Implemented |
| PostMessage | Working | Unknown | Working | Working | Working | Working | Unknown | Working | Working | Not Implemented |
| PostThreadMessage | Working | Unknown | Unknown | Unknown | Unknown | Working | Unknown | Not Implemented | Unknown | Not Implemented |
Status of Graphics on each LCL Interface
| Component | win32 | gtk | gtk2 | gtk3 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|---|
| TBitmap/TPixmap/TIcon/etc | Working | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working |
| TBrush | Working | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented | Working | Working |
| TFont | Working | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working |
| TPen | Working | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working |
| ExtTextOut | Working | 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 | gtk3 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|---|
| TBitBtn | Working | Working | Working | Working | Working | Working | Working | Working | Working | Partially Implemented |
| TButton | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TCalendar | Working | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
| TCheckBox | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TCheckGroup | Working | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TCheckListBox | Working | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TComboBox | Working | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented | Working | Implemented in Android |
| TEdit | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TForm | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TGroupBox | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TIdleTimer | Working | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TImageList | Working | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
| TListBox | Working | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TListView | Working | Working | Partially Implemented | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
| TMainMenu | Working | Working | Working | Partially Implemented | Working | Working | Working | Working | Working | Implemented in Android |
| TMemo | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TMenuItem | Working | Working | Working | Working | Working | Working | Working | Working | Working | Implemented in Android |
| TPageControl and TTabSheet | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
| TPairSplitter | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
| TPanel | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TPopupMenu | Working | Working | Working | Partially Implemented | Working | Working | Working | Working | Working | Not Implemented |
| TProgressBar | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TRadioButton | Working | Working | Working | Working | Working | Working | Working | Working | Working | Partially Implemented |
| TRadioGroup | Working | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TScrollBar | Working | Working | Working | Partially implemented | Working | Working | Working | Partially Implemented | Working | Partially Implemented |
| TScrollBox | Working | Working | Working | Working | Partially Implemented | Working | Unknown | Partially Implemented | Working | Not Implemented |
| TSpinEdit | Working | Working | Working | Working | Working | Working | Unknown | Not Implemented | Working | Partially Implemented |
| TSplitter | Working | Working | Working | Working | Working | Working | Unknown | Partially Implemented | Working | Not Implemented |
| TStaticText | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TStatusBar | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
| TToggleBox | Working | Working | Working | Working | Working | Working | Partially Implemented | Not Implemented | Working | Not Implemented |
| TTrackBar | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working |
| TTrayIcon | Working | Working | Working | Working | Partially Implemented | Working | Not Implemented | Not Implemented | Working | Not Implemented |
Status of dialogs on each LCL Interface
| Component | win32 | gtk | gtk2 | gtk3 | carbon | qt/qt5 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|---|
| LCLIntf.MessageBox | Working | 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 | Working | Implemented for Android |
| LCLIntf.AskUser | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
| TColorDialog | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
| TFontDialog | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
| TOpenDialog | Working | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TPrinterSetupDialog | Working | Working | Working | Working | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
| TSaveDialog | Working | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TTaskDialog | Working | Unknown | Working | Working | Working | Working | Unknown | 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 | gtk3 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|---|
| TArrow | Working | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TNotebook | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working |
| TUpDown | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented |
| TStringGrid | Working | Working | Working | Working | Partially Implemented | Working | Partially Implemented | Partially Implemented | Working | Partially Implemented |
| TDrawGrid | Working | Working | Working | Working | Partially Implemented | Working | Unknown | Partially Implemented | Working | Partially Implemented |
| TToolBar | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
| TTreeView | Working | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
| TValueListEditor | Working | 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 | gtk3 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|---|
| TBevel | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented |
| TLabel | Working | Working | Working | Working | Working | Working | Working | Working | Working | Implemented for Android |
| TShape | Working | Working | Working | Working | Partially Implemented | Working | Partially Implemented | Working | Working | Working |
| TSpeedButton | Working | Working | Working | Working | Working | Working | Unknown | Working | Working | Working |
| TPaintBox | Working | Working | Working | Working | Working | Working | Unknown | Working | Working | Working |
| TImage | Working | 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 |