Changes between Version 4 and Version 5 of Documentation/DevelopmentCenter/DeveloperGuidelines
- Timestamp:
- 09/30/08 01:19:59 (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Documentation/DevelopmentCenter/DeveloperGuidelines
v4 v5 37 37 38 38 === Guidelines for Plugin Names === 39 * the name of a plugin has to be identical to the project name and the namespace of the plugin 39 * the name of a plugin has to be identical to the project name and the namespace of the plugin (e.g. `HeuristicLab.Data`) 40 40 * the name of each HeuristicLab 3 plugin starts with "`HeuristicLab.`" 41 * in order to structure plugins hierarchically, sub-namespaces can be used ( `HeuristicLab.Operators`, `HeuristicLab.Operators.Programmable`, e.g.)42 * each plugin is represented as a component in trac43 * for trac component names the leading "`HeuristicLab.`" is omitted41 * in order to structure plugins hierarchically, sub-namespaces can be used (e.g. `HeuristicLab.Operators` and `HeuristicLab.Operators.Programmable`) 42 * each plugin is represented as a component in Trac 43 * for Trac component names the leading "`HeuristicLab.`" is omitted 44 44 45 45 ---- 46 46 47 47 == Versioning System == 48 Source code and other documents are kept in a Subversion repository available at [https://sources.heuristiclab.com/hl3/core https://sources.heuristiclab.com/hl3/core]. Anonymous read-only access is available using the user name and password "anonymous". If you want to contribute to the HeuristicLab project and need write access, please contact stefan.wagner@heuristiclab.com. All HeuristicLab developers have full write access to the whole repository.48 Source code and other documents are kept in a Subversion repository available at [https://sources.heuristiclab.com/hl3/core https://sources.heuristiclab.com/hl3/core]. Anonymous read-only access is available using the user name and password "anonymous". If you want to contribute to the HeuristicLab project and need write access, please write an e-mail to [mailto:support@heuristiclab.com support@heuristiclab.com]. All HeuristicLab developers have full write access to the whole repository. 49 49 50 50 For an introduction to Subversion, please take a look at the free book [http://svnbook.red-bean.com/ Version Control with Subversion] and the [http://tortoisesvn.net/docs/release/TortoiseSVN_en/index.html Online Dokumentation] of the Subversion client [http://tortoisesvn.net/ TortoiseSVN]. … … 56 56 * contains all project documentation files (API documentation, license, presentations, etc.) 57 57 * `setup` 58 * contains all files to build the HeuristicLab install ation executable58 * contains all files to build the HeuristicLab installer 59 59 * `sources` 60 60 * `HeuristicLab.sln` … … 76 76 * are used to prepare release versions 77 77 * are used to store old versions of plugins 78 * the folder name of a release branch has to be identical to the major and minor version number ( 3.1, 3.2, e.g.) (cf. [wiki:DevelopmentGuidelines#Versioning Versioning])78 * the folder name of a release branch has to be identical to the major and minor version number (e.g. 3.1) (cf. [wiki:DevelopmentGuidelines#Versioning Versioning]) 79 79 * `tags` 80 * contain a folder for each finally release version(tag)80 * contain a folder for each HeuristicLab release bundle (tag) 81 81 * it's not allowed to commit to tags 82 82 * the folder name of a tag has to be identical to the whole version number (e.g. 3.1.0.304) (cf. [wiki:DevelopmentGuidelines#Versioning Versioning]) … … 87 87 * each commit has to have a description (commit message) 88 88 * WikiFormatting has to be used to format commit messages 89 * each commit message must contain the ticket number of the corresponding trac ticket (e.g. "(!#1)")89 * each commit message must contain the ticket number of the corresponding Trac ticket (e.g. "(!#1)") 90 90 * repository content 91 91 * the repository has to contain all files necessary for compiling HeuristicLab 92 * automatically generated files are not stored in the repository. This especially includes: 93 * object files, assemblies, etc. () 94 * generated files (e.g. !AssemblyInfo.cs) 92 * automatically generated files (object files, assemblies, !AssemblyInfo.cs, etc.) are not stored in the repository 95 93 * files containing user specific settings are not stored in the repository (e.g. *.suo, *.user) 96 * the SVN property `svn:ignore` has to be set to prevent that files are added accidentally . Predefined property values for solution, project, and properties folders are attached to this page and can be imported94 * the SVN property `svn:ignore` has to be set to prevent that files are added accidentally (predefined property values for solution, project, and properties folders are attached to this page and can be imported) 97 95 * branches and tags 98 96 * each developer can create a new exploration branch at any time 99 * new release branches for a plugin can be crated by the head developer of a plugin only 97 * new release branches for a plugin can be crated by the head developer of that plugin only 98 * new tags are created by the head developer of HeuristicLab only 100 99 101 100 ---- … … 107 106 * when incrementing the major version number of a plugin, the minor version number has to be set back to 0 108 107 * the major and minor version numbers have to be included in the assembly name of each HeuristicLab assembly (e.g. `HeuristicLab.Data-3.2.dll`) 109 * all major and minor versions of a plugin are kept in order to assure backwards compatibility108 * all major and minor versions of a plugin are kept in the repository and have to be functional in order to assure backwards compatibility 110 109 * `Build` 111 110 * the build number is used to identify different versions within the same major and minor version of a plugin 112 111 * for each new version (major or minor version number increment), the build number has to be set back to 0 113 112 * all builds within the same major and minor version are considered to be "functionally equivalent" 114 * all builds within the same major and minor version have to be compatible concerning data files (XML serialization)113 * all builds within the same major and minor version have to be compatible concerning data files 115 114 * `Revision` 116 115 * represents the last revision, in which the component (assembly) has been changed or in which a version has been released 117 116 * when compiling assemblies the revision number is automatically extracted from the Subversion repository (cf. [wiki:DevelopmentGuidelines#SubWCRev Automatic Extraction of the Current Revision Number]) 118 * when creating a new release of the wholesystem (tag) the revision number has to be set manually117 * when creating a new release bundle of the whole HeuristicLab system (tag) the revision number has to be set manually 119 118 120 119 === Automatic Extraction of the Current Revision Number === #SubWCRev 121 The tool [http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html SubWCRev] of TortoiseSVN is used to extract the revision number of the last change of a plugin. SubWCRev is executed by the command [source:trunk/PreBuildEvent.cmd PreBuildEvent.cmd] which has to be set as pre-build event in each project in the following way 120 The tool [http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html SubWCRev] of TortoiseSVN is used to extract the revision number of the last change of a plugin. SubWCRev is executed by the command [source:trunk/PreBuildEvent.cmd PreBuildEvent.cmd] which has to be set as pre-build event in each project in the following way: 122 121 {{{ 123 122 cmd /c ""$(SolutionDir)PreBuildEvent.cmd" "$(ProjectDir)."" 124 123 }}} 125 SubWCRev replaces the placeholder `$WCREV$` in the frame file `AssemblyInfo.frame` of the project by the corresponding revision numberand creates the file `AssemblyInfo.cs`.124 SubWCRev replaces the placeholders `$WCREV$` and `$WCNOW$` in the frame file `AssemblyInfo.frame` of the project and creates the file `AssemblyInfo.cs`. 126 125 127 126 ---- 128 127 129 128 == Issue Tracking == 130 The issue tracking system [http://trac.edgewall.org/ Trac ] is used to manage the HeuristicLab development process. The HeuristicLab trac environment is available at [https://sources.heuristiclab.com/trac/hl3/core https://sources.heuristiclab.com/trac/hl3/core]. User credentials are identical to those of the Subversion repository. For anonymous access the user and password "anonymous" can be used.129 The issue tracking system [http://trac.edgewall.org/ Trac] is used to manage the HeuristicLab development process. The HeuristicLab Trac environment is available at [https://sources.heuristiclab.com/trac/hl3/core https://sources.heuristiclab.com/trac/hl3/core]. User credentials are identical to those of the Subversion repository. For anonymous access the user and password "anonymous" can be used. 131 130 132 Further information about trac can be found in the [wiki:TracGuide Trac User and Administration Guide].131 Further information about Trac can be found in the [wiki:TracGuide Trac User and Administration Guide]. 133 132 134 === Guidelines for Working with trac ===133 === Guidelines for Working with Trac === 135 134 * all development steps have to be represented by tickets 136 * before working on a plugin a ticket has to be created and accepted by the developer135 * before working on a plugin, a ticket has to be created and accepted by the developer 137 136 * each developer is allowed to assign tickets to other developers, if the ticket is in the responsibility of that developer 138 * development progress has to be documented by ticket comments. For each commit associated with a ticket, a ticket comment has to be written that contains a link to the revision (e.g. "(!r304)") and a short description. In combination with the link to the ticket in the commit message, this results in a bijective association of tickets and revisions. 137 * development progress has to be documented by ticket comments 138 * for each commit associated with a ticket, a ticket comment has to be written that contains a link to the revision (e.g. "(!r304)") and a short description (in combination with the link to the ticket in the commit message, this results in a bijective association of tickets and revisions) 139 139 * each commit has to be associated with a single ticket 140 140 … … 146 146 * tickets that are assigned to another developer get the status `assigned` 147 147 * `accepted` 148 * tickets that are currently processed by a developer get the status `accepted`. The ticket status has to be set manually by the developer before starting to work on the ticket. If working on a ticket is suspended for a longer period of time without closing the ticket, the status has to be reset to `assigned`. In that way it is assured that accepted tickets represent exactly those tickets, on which developers are currently working. 148 * tickets that are currently processed by a developer get the status `accepted` 149 * the ticket status has to be set manually by the developer before starting to work on the ticket 150 * if working on a ticket is suspended for a longer period of time without closing the ticket, the status has to be reset to `assigned` (in that way it is assured that accepted tickets represent exactly those tickets, on which developers are currently working) 149 151 * `closed` 150 * tickets which are resolved get the status `closed`. The developer has to provide an explanation for closing the ticket. 151 * possible resolutions for closing a ticket are `fixed` (work done), `invalid` (ticket), `wontfix` (ticket will not be resolved), `duplicate` (another ticket has already been created for that issue), `worksforme` (issue could not be reproduced). 152 * when closing a ticket with another explanation as `fixed`, the developer has to provide a comprehensive explanation in form of a ticket comment 152 * tickets which are resolved get the status `closed` 153 * developers have to provide an explanation for closing a ticket 154 * possible resolutions for closing a ticket are `fixed` (work done), `invalid` (invalid ticket), `wontfix` (ticket will not be resolved), `duplicate` (another ticket has already been created for that issue), `worksforme` (issue could not be reproduced) 155 * when closing a ticket with another explanation as `fixed`, the developer has to provide a comprehensive explanation 153 156 * `reopened` 154 * when a ticket is reopened again, the status is set to `reopened`. Thereby the responsible developer is removed. The ticket has to be assigned again. 157 * when a ticket is reopened again, the status is set to `reopened` 158 * when reopening a ticket, the responsible developer is removed and the ticket has to be assigned again 155 159 * Type 156 160 * `defect` … … 163 167 * other (administrative) tasks which are not associtated with programming directly (e.g. generating documentation, creating release branches, etc.) 164 168 * Priority 165 * the following priorities are available to classify tickets: `blocker` (priority 1), `critical` (priority 2), `major` (priority3), `minor` (priority4), `trivial` (priority5).166 * classification of a ticket's priority has to be done by the user who report edthe ticket169 * the following priorities are available to classify tickets: `blocker` (priority 1), `critical` (priority 2), `major` (priority 3), `minor` (priority 4), `trivial` (priority 5) 170 * classification of a ticket's priority has to be done by the user who reports the ticket 167 171 * Milestone 168 172 * a ticket has to be associated with a milestone 169 * milestones represent phases of the development of HeuristicLab. Usually a milestone is associated with the version of a HeuristicLab release bundle. 173 * milestones represent phases of the development of HeuristicLab 174 * usually a milestone is associated with the version of a HeuristicLab release bundle 170 175 * Component 171 * a ticket has to be associated with a component ( a plugin)176 * a ticket has to be associated with a component (i.e. a plugin) 172 177 * the name of a component has to be identical to the name of the namespace or the plugin of that component (the leading "`HeuristicLab.`" is omitted) 173 178 * Version … … 179 184 == Documentation == 180 185 === Wiki === 181 The trac wiki system is used for documenting the development of HeuristicLab. A description of the trac wiki syntax is available at WikiFormatting.186 The Trac wiki system is used for documenting the development of HeuristicLab. A description of the Trac wiki syntax is available at WikiFormatting. 182 187 183 188 === Source Code ===