= Trac Development {{{#!div class="wikipage compact" style="float:right; background: #ffd; margin-left: 2em; padding: 1em; border: outset #eec 2px; width: 28em" ** Release Notes: [[TitleIndex(TracDev/ReleaseNotes/,hideprefix,format=compact)]] ** ** API Changes: [[TitleIndex(TracDev/ApiChanges/,hideprefix,format=compact)]] ** ** API Doc: [http://www.edgewall.org/docs/tags-trac-0.11.7/epydoc/ 0.11], [http://www.edgewall.org/docs/branches-0.12-stable/epydoc/ 0.12], [http://www.edgewall.org/docs/branches-1.0-stable/html/ 1.0], [http://www.edgewall.org/docs/branches-1.2-stable/html/ 1.2], [http://www.edgewall.org/docs/branches-1.4-stable/html/ 1.4], [http://www.edgewall.org/docs/trac-trunk/html/ 1.5] ^[#see-ApiDocs (*)]^ ** ** Build status:** see [./AutomaticBuilds] }}} These pages provide information about the development of Trac and its [th:HackIndex extensions]. It is written for skilled [https://www.python.org/ Python] developers who have experience using Trac. Development is largely coordinated online. Source code is managed in repositories and for Trac this is a combination of the main trunk in Subversion and mirror in GitHub. See TracRepositories, TracSubversion, TracGit and TracMercurial for more information. We also keep track of what has been deprecated or removed between releases, see our [TracDev/ReleaseNotes Release Notes] and the summary of [TracDev/ApiChanges API Changes]. API Changes are summarised using the ''API change'' field attached to every ticket; this is a feature implemented since 1.0dev. == How to get started? Start by setting up a [TracDev/DevelopmentEnvironmentSetup development environment] and become familiar with [TracInstall installing Trac] and creating new ["TracEnvironment"]s. Then, you should get familiar with Trac's [./ComponentArchitecture], [./PluginDevelopment] and [./DatabaseApi]. The TracTroubleshooting page contains some debugging tips which are also quite useful during development. When you're ready to contribute changes, note that we're picky about our [./CodingStyle] when [./SubmittingPatches]. For changes to be accepted, the modified Trac source should still pass the [./UnitTests] and the [./FunctionalTests]. Ideally, also contribute new tests. Discussions about Trac Development happen on the [http://groups.google.com/group/trac-dev/topics Trac-dev mailing list]. New development ideas are usually best discussed first on that list, it's a quick and easy way to get feedback on any given topic or question. As usual, search the archive first, to avoid rehashing old discussions. For longer term developments, or for documentation purposes, use the wiki. To refer to a mail from Trac-dev in this wiki, use the `googlegroups` InterWiki prefix, for example: googlegroups:trac-dev:1b9c4e3eaeda3a0d. You can see the message identifier in the address bar of your browser when viewing the message in Individual Message view mode. You can go there from the default threaded view by clicking on //More options// and then on the //Individual Message// or //Show Original// links. == Development guides ||= '''Getting Started''' =||= '''[=#Contributing Contributing]''' =|| {{{#!td style="vertical-align: top" - **[./DevelopmentEnvironmentSetup]** - [./PythonIDE] - [./DevelopmentWithEclipseAndPyDev] - [./AlternativeFrontends] }}} {{{#!td - **[./CodingStyle]** - **[./SubmittingPatches]** - [./DevelopmentWorkflow] - [./ReleaseChecklist] - [./ToDo] - [wiki:TracTicketTriage] }}} |-------------------------------------- ||= '''[=#Overviews Overviews]''' =||= '''Testing''' =|| {{{#!td - [./ComponentArchitecture] - **[./ApiDocs]**[=#see-ApiDocs] - [[./TracURLs]] - [./RequestHandling] - **[./PluginDevelopment]** - [./PluginDevelopment/ExtensionPoints ExtensionPoints] - [[./IWikiSyntaxProviderExample]] - [./DataModels] - [./DatabaseSchema] - [http://us.pycon.org/2008/conference/schedule/event/62/ PyCon 2008 Slides] }}} {{{#!td style="vertical-align: top" - [./UnitTests] - [./FunctionalTests] - [./AutomaticBuilds] - [./ReleaseTesting] - [./WritingUnitTests] }}} |-------------------------------------- ||= '''Miscellaneous Thematic Guides''' =|| \ ||= '''Translation''' =|| {{{#!td - [./DatabaseApi] - [./DatabaseUpgrades] - [./VersionControlApi] - [./ConfigApi] - [./NotificationApi] - [./HttpMethods] - [./HtmlTemplates] - [./JavaScript] - [./UnicodeGuidelines] - [./PortingFromClearSilverToGenshi] - [./CacheManager] - [./TracSession] - [./Exceptions] }}} {{{#!td style="vertical-align: top" - [[TracL10N]] - MissingTranslations }}} |-------------------------------------- ||= '''[./Proposals Development Proposals]''' =|| \ ||= '''[./Branches Development Branches]''' =|| {{{#!td style="vertical-align: top" Blueprints for major changes on a topic: [[TitleIndex(TracDev/Proposals/,hideprefix)]] }}} {{{#!td style="vertical-align: top" Documentation for ongoing work in code branches: [[TitleIndex(TracDev/Branches/,hideprefix)]] See also: - [https://github.com/edgewall/trac/network Mirror on Github] - [wiki:TracTeam/Repositories Developer repositories] The [/testing testing] demo site features work-in-progress branches ([./Proposed]) for which feedback is welcome. }}} |-------------------------------------- ||= '''Scratch Pad''' for developers =|| \ ||= '''Ideas''' from users =|| {{{#!td style="vertical-align: top" - TracDev/ScratchPad, containing: [[TitleIndex(TracDev/ScratchPad/,hideprefix)]] }}} {{{#!td style="vertical-align: top" [[TitleIndex(TracIdeas/,hideprefix)]] }}}