Difference between revisions of "Lazarus Development Process"

From Lazarus wiki
Jump to navigationJump to search
(→‎What we have done: Replaced outdated content with updating template which is always up to date :-)
 
(31 intermediate revisions by 14 users not shown)
Line 2: Line 2:
  
 
== Who are developers ==
 
== Who are developers ==
You can find a recent list of lazarus developers here: [[Developer pages]]<br>
+
You can find a recent list of Lazarus developers here: [[Developer pages]]<br>
 
You can find history of lazarus developers here: [[History]]
 
You can find history of lazarus developers here: [[History]]
  
 
==Setting the target of a bugfix==
 
==Setting the target of a bugfix==
When new bugs are entered, we try to give them a target in which version the bug will be fixed. If a bug is set to ''post 1.2'', that means the developers think this bug is not important enough to block a 1.0 release. Of course you can make sure these ''post 1.2'' issues are fixed in the 1.0 release by providing patches for these issues.
+
When new bugs are entered, we try to give them a target in which version the bug will be fixed. If a bug is set to ''post 1.2'', that means the developers think this bug is not important enough to block a 1.0.x release. Of course you can make sure these ''post 1.2'' issues are fixed in the 1.0.x release by providing patches for these issues.
  
 
Some criteria are:
 
Some criteria are:
* Only gtk2, qt and win32 widget sets are stable in 1.0. Bugs for other widget set (carbon) are set to post 1.2.
+
* Only gtk2, qt and win32 widget sets are stable in 1.0.x. Bugs for other widget set (carbon) are set to post 1.2.
* Until the 1.0 there will be a feature freeze. New features and components generally get a post 1.2 target. Bugs affecting stability have a higher priority than bugs fixing the implementation of a property.
+
* Until 1.0 there will be a feature freeze. New features and components generally get a post 1.2 target. Bugs affecting stability have a higher priority than bugs fixing the implementation of a property.
* Some components are not stable enough and should be disabled for 1.0. If they are disabled, then fixing them before 1.0 will not be necessary.
+
* Some components are not stable enough and should be disabled for 1.0.x. If they are disabled, then fixing them before 1.2 will not be necessary.
  
== What we are planing to do ==
+
For more details on the various versions of Lazarus, see [[Version Numbering]]
 +
 
 +
== What we are planning to do ==
 
=== TODOs ===
 
=== TODOs ===
# [[Lazarus 0.99 todo]]
+
# [[Lazarus 1.8.0 release notes]]
# <s>[[Lazarus 0.9.30 todo]]</s>
 
# <s>[[Lazarus 0.9.28 todo]]</s>
 
# <s>[[Lazarus 0.9.26 todo]]</s>
 
# <s>[[Detailed Lazarus 0.9.24 todo]]</s>
 
# <s>[[Detailed Lazarus 0.9.22 todo]]</s>
 
 
# [[Detailed Lazarus release template todo]]
 
# [[Detailed Lazarus release template todo]]
 
[[Lazarus 0.9.30 branch]]
 
  
 
=== Tasks ===
 
=== Tasks ===
Line 29: Line 24:
  
 
=== Roadmaps ===
 
=== Roadmaps ===
#[http://bugs.freepascal.org/roadmap_page.php?project_id=1 Current Roadmap (v.0.99.0)] - Roadmap of current Lazarus version (There are roadmap of Lazarus 1.0.0 too)
+
#[http://bugs.freepascal.org/roadmap_page.php?project_id=1 Current Roadmap] - Roadmap of current Lazarus version.
#[[Roadmap]] - Current status of the some parts of Lazarus (IDE, LCL and others)
+
#[[Roadmap]] - Current status of some parts of Lazarus (IDE, LCL and others)
 
#[[Icon Editor Roadmap]] - Roadmap of Icon Editor Tool
 
#[[Icon Editor Roadmap]] - Roadmap of Icon Editor Tool
 
#[[LCL Documentation Roadmap]] - Roadmap of LCL Documentation
 
#[[LCL Documentation Roadmap]] - Roadmap of LCL Documentation
  
 
== What we have done ==
 
== What we have done ==
#[[Lazarus 0.99.0 release notes]] - in progress
+
 
#[[Lazarus 0.9.30 release notes]]
+
{{Navbar Lazarus Release Notes}}
#[[Lazarus 0.9.28.2 release notes]]
 
#[[Lazarus 0.9.28 release notes]]
 
#[[Lazarus 0.9.26 release notes]]
 
#[[Lazarus 0.9.24 release notes]]
 
  
 
== What we will not do ==
 
== What we will not do ==
 
#[[Lazarus known issues (things that will never be fixed)]]
 
#[[Lazarus known issues (things that will never be fixed)]]
  
== Road to 1.0 ==
+
== Lazarus branches / version numbers ==
 
+
This ASCII art schema shows what the Lazarus developers have chosen as branching policy for the Lazarus 1.0 release. It also illustrates the way current development works.
The work to be done is divided into 3 targets:
+
Time goes from left to right; the different branches are shown vertically. B indicates a branch point, T a tag (release).
* things to be done before the next release (0.99.0): patches, regressions, some steps towards 1.0 chosen by developers, bug fixes
 
* things to be done before the 1.0 release: make Lazarus ready for a 1.0 release
 
* things to be done after the 1.0 release: less important bugs, support for new widgetsets and new features
 
 
 
=== 1.0 release ===
 
{| BORDER="1" CELLSPACING="0"
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Target'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Responsible'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Comment'''
 
|----
 
|1.0.0||[[User:Vincent|Vincent]]||<s>Find out, if Lazarus configuation files can be stored in the profile directory under windows</s> implemented in 0.9.26
 
|----
 
|1.0.0||[[User:Vincent|Vincent]]||Find out, what needs to be done to make it possible to install Lazarus in c:\Program Files\Lazarus (note space in path).
 
|----
 
|1.0.0||-||Debugger options
 
|----
 
|1.0.0||-||Doc Editor
 
|----
 
|1.0.0||Mattias||<s>lazdoc: inherited properties/methods</s>
 
|----
 
|1.0.0||various||Help for common IDE items (see [[IDE Documentation Roadmap]])
 
|----
 
|1.0.0||Tombo||Icon editor (see [[Icon Editor Roadmap]])
 
|----
 
|1.0.0||various||Webbugs to be fixed before the 1.0 release: [http://www.lazarus.freepascal.org/mantis/view_all_set.php?type=3&source_query_id=91 target 1.0 bugs]
 
|----
 
|1.0.0||-||more LCL Documentation (see [[LCL Documentation Roadmap]])
 
|----
 
|1.0.0||Marc||fix debugging in windows and linux
 
|----
 
|1.0.0||-||add framework for easily using resourcestrings and translations in applications. Mattias started this already. It works more or less for custom packages, but not yet for the auto-install packages like the LCL.
 
|}
 
  
=== After the 1.0 release ===
 
{| BORDER="1" CELLSPACING="0"
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Target'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Responsible'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Comment'''
 
|----
 
|post 1.0||-||Webbugs to be fixed after the 1.0 release: [http://www.lazarus.freepascal.org/mantis/view_all_set.php?type=3&source_query_id=90 target post 1.2 bugs]
 
|----
 
|post 1.0||Mattias||IDE Feature: Visual Form inheritance
 
|----
 
|post 1.0||Mattias||IDE Feature: lazdoc for translations
 
|}
 
=== Lazarus branches / version numbers around 1.0 ===
 
This ascii - art schema shows what the Lazarus developers have chosen as branching policy for the Lazarus 1.0 release.
 
Time goes from left to right; the different branches are shown vertically. B indicates a branch point, T a tag (release).
 
 
<pre>
 
<pre>
  
  
                        0.9.30           0.9.30.2        
+
                      0.9.30         0.9.30.2       0.9.30.4
                          |               |               
+
                        |             |              |
fixes_0_9_30:        ---- T - 0.9.30.1 --- T - 0.9.30.3 --- End of life
+
fixes_0_9_30:        -- T - 0.9.30.1 - T - 0.9.30.3 - T - 0.9.30.5 -- End of life
 
                     /   
 
                     /   
                     |                        0.99.0(1.0.RC1)      1.0.0        1.0.2      
+
                     |                        0.99.0(1.0.RC1)      1.0.0        1.0.2         1.0.4        1.0.6        1.0.8        1.0.10        1.0.12
                     |                          |          more RCs  |            |  
+
                     |                          |          more RCs  |            |            |            |            |            |              |
fixes_1_0:          |                    ------T - 0.99.1 -< .. >-- T - 1.0.1 -- T -- 1.0.3 ---- End of life
+
fixes_1_0:          |                    ------T - 0.99.1 -< .. >-- T - 1.0.1 -- T -- 1.0.3 -- T -- 1.0.5 -- T -- 1.0.7 -- T -- 1.0.9 -- T -- 1.0.11 -- T -- End of life
 
                     |                  /
 
                     |                  /
 
                     |                  /                                              1.2.0        1.2.2          1.2.4
 
                     |                  /                                              1.2.0        1.2.2          1.2.4
Line 114: Line 58:
 
trunk: --- 0.9.29 --B-- 0.9.31 ------B- 1.1 -------------------------------------B------- 1.3 ------------ Developing for 1.4 or 2.0  
 
trunk: --- 0.9.29 --B-- 0.9.31 ------B- 1.1 -------------------------------------B------- 1.3 ------------ Developing for 1.4 or 2.0  
 
</pre>
 
</pre>
Given the fact we want to release [[Lazarus 0.9.30 release plan|Lazarus 0.9.30]] asap, we should not wait too long to branch trunk for that release. Because we still want to fix a lot of issues for 1.0, using the same branch for the release candidates and Lazarus 1.0 means we have to merge a lot of fixes to that branch. Therefore we use separate branches for 0.9.30 and 1.0.0. This postpones branching for 1.0 and makes it possible to release a fpc 2.4.2 based Lazarus rather soon (0.9.30), while still being able to get fixes for Lazarus 1.0 into trunk before branching the fixes_1_0 branch.
 
'''Note''': releases beyond 0.9.30 from the fixes_0_9_30 depend on the fact that a volunteer is found who merges from trunk to that branch.
 
  
 
==See also==
 
==See also==
  
 
* [[Roadmap]]
 
* [[Roadmap]]
 
+
* [[Lazarus release engineering]]
[[Category:Lazarus]]
+
* [[WebPageDevelopment|Lazarus website development]]

Latest revision as of 07:47, 22 August 2020

English (en) français (fr) русский (ru)

Who are developers

You can find a recent list of Lazarus developers here: Developer pages
You can find history of lazarus developers here: History

Setting the target of a bugfix

When new bugs are entered, we try to give them a target in which version the bug will be fixed. If a bug is set to post 1.2, that means the developers think this bug is not important enough to block a 1.0.x release. Of course you can make sure these post 1.2 issues are fixed in the 1.0.x release by providing patches for these issues.

Some criteria are:

  • Only gtk2, qt and win32 widget sets are stable in 1.0.x. Bugs for other widget set (carbon) are set to post 1.2.
  • Until 1.0 there will be a feature freeze. New features and components generally get a post 1.2 target. Bugs affecting stability have a higher priority than bugs fixing the implementation of a property.
  • Some components are not stable enough and should be disabled for 1.0.x. If they are disabled, then fixing them before 1.2 will not be necessary.

For more details on the various versions of Lazarus, see Version Numbering

What we are planning to do

TODOs

  1. Lazarus 1.8.0 release notes
  2. Detailed Lazarus release template todo

Tasks

  1. IDE Development

Roadmaps

  1. Current Roadmap - Roadmap of current Lazarus version.
  2. Roadmap - Current status of some parts of Lazarus (IDE, LCL and others)
  3. Icon Editor Roadmap - Roadmap of Icon Editor Tool
  4. LCL Documentation Roadmap - Roadmap of LCL Documentation

What we have done


What we will not do

  1. Lazarus known issues (things that will never be fixed)

Lazarus branches / version numbers

This ASCII art schema shows what the Lazarus developers have chosen as branching policy for the Lazarus 1.0 release. It also illustrates the way current development works. Time goes from left to right; the different branches are shown vertically. B indicates a branch point, T a tag (release).



                       0.9.30         0.9.30.2       0.9.30.4
                         |              |              |
fixes_0_9_30:         -- T - 0.9.30.1 - T - 0.9.30.3 - T - 0.9.30.5 -- End of life
                     /  
                    |                        0.99.0(1.0.RC1)      1.0.0        1.0.2         1.0.4         1.0.6         1.0.8         1.0.10         1.0.12
                    |                          |          more RCs  |            |             |             |             |             |              |
fixes_1_0:          |                    ------T - 0.99.1 -< .. >-- T - 1.0.1 -- T -- 1.0.3 -- T -- 1.0.5 -- T -- 1.0.7 -- T -- 1.0.9 -- T -- 1.0.11 -- T -- End of life
                    |                   /
                    |                  /                                              1.2.0         1.2.2          1.2.4
                    |                 /                                                 |             |              |                     
fixes_1_2:          |                |                                            ----- T - 1.2.1 --- T - 1.2.3----- T - 1.2.5 ---- End of life
                    |                |                                           /  
                    |                |                                           | 
trunk: --- 0.9.29 --B-- 0.9.31 ------B- 1.1 -------------------------------------B------- 1.3 ------------ Developing for 1.4 or 2.0 

See also