Trac - More Than Project Management
edgewall.org is a place where a community of software developers collaborate on creating exciting open source software based on the Python programming language. It is best known for the popular web-based project management tool Trac.
Trac is an enhanced wiki and issue tracking system for software development projects.
Where to start ?
How about starting with the core component model and work out to pluggable component 'realms' ?
Or maybe wrestle with the wiki parser/formatter to create a powerful, light-weight and Pythonic version of MediaWiki ?
Or go all the way and build a configuration knowledge base with an integrated process manager ? Or even a distributed document management system ?
I just can't decide.
Trac has 'good bones'. BSD licence.
https://github.com/edgewall/trac
.... Trac Installation Guide for 1.3 ... Trac uses the Jinja2 templating system :-) ... Python version >= 2.7 and < 3.0 :-( ...
Jinja2 from Pocoo/Flask
Jinja will be easier to use, but I hope Genshi continues to be developed. It's got really solid XML features that are ( more or less ) unique in the Python world.
Re-purposing Trac
About implementing the RuleForge project in Trac.
Deploying Trac as CGI
http://trac.edgewall.org/wiki/TracCgi
CGI script is the entrypoint that web-server calls when a web-request to an application is made. To generate the trac.cgi script run:
trac-admin /path/to/env deploy /path/to/www/trac
trac.cgi will be in the cgi-bin folder inside the given path. Make sure it is executable by your web server.
This command also copies static resource files to a htdocs directory of a given destination.
http://trac.edgewall.org/wiki/TracCgi#Apacheweb-serverconfiguration
Features
Trac API Documentation -> https://media.readthedocs.org/pdf/trac/latest/trac.pdf
Trac Paths
https://trac.edgewall.org/wiki/TracLinks
A big piece of functionality. More to come ...
Trac Plugins
That is, Trac Component Architecture.
https://trac.edgewall.org/wiki/PluginList
This is a non-exhaustive list of some common plugins. Many more of them can be found on TracHacks, the community site for hosting and managing Trac plugin development.
Officially supported plugins.
Trac Hacks
Site has been inactive for months at least, but is still running.
https://trac-hacks.org/wiki/HackIndex
Has plugins, plus macros, scripts and a few themes.
https://trac-hacks.org/wiki/1.2
Search for Trac Component Interface -> https://www.google.com/search?q=python+trac+component+interface
https://trac.edgewall.org/wiki/TracDev/ComponentArchitecture
Wiki
| BackLinks | http://trac-hacks.org/wiki/BackLinksMacro |
| Slide Show | http://trac-hacks.org/wiki/SlideShowPlugin |
| Next-Previous Wiki Page | http://trac-hacks.org/wiki/NeighborPagePlugin |
| Include Page | http://trac-hacks.org/wiki/IncludeMacro |
| Styled Table | http://trac-hacks.org/wiki/TablePlugin |
| Flexible TOC | http://trac-hacks.org/wiki/TocMacro |
| Section Edit | http://trac-hacks.org/wiki/SectionEditPlugin |
| Show last mod date | http://trac-hacks.org/wiki/LastModifiedMacro |
| UML Macro | http://trac-hacks.org/wiki/PlantUmlMacro |
| Markdown Macro | http://trac-hacks.org/wiki/MarkdownMacro |
| Graph Viz | http://trac-hacks.org/wiki/GraphvizPlugin |
| Embed Genshi | http://trac-hacks.org/wiki/GenshiMacro |
| Footnote | http://trac-hacks.org/wiki/FootNoteMacro |
| Folded Area Macro | http://trac-hacks.org/wiki/FoldMacroProcessorMacro |
| Collapsible Area Macro | http://trac-hacks.org/wiki/CollapsiblePlugin |
Blog
http://trac-hacks.org/wiki/SimpleBlogPlugin
http://trac-hacks.org/wiki/FullBlogPlugin
http://trac-hacks.org/wiki/MyPagePlugin - daily user page
Tags
http://trac-hacks.org/wiki/TagsPlugin
Database
http://trac-hacks.org/wiki/SqlQueryMacro -> https://trac-hacks.org/wiki/SqlAlchemyQueryMacro
http://trac-hacks.org/wiki/WikiTableMacro
http://trac-hacks.org/wiki/WikinfoPlugin
http://trac-hacks.org/wiki/CardsPlugin -
A new macro [[Cards(...)]] shows a whiteboard containing index cards organized in stacks. Adding new cards interactively by clicking a button, move cards by drag-and-drop and double-click cards for editing or deleting.
Cards are stored in a new table in the Trac database.
XML/RPC
http://trac-hacks.org/wiki/XmlRpcPlugin
Workflow Admin
http://trac-hacks.org/wiki/TracWorkflowAdminPlugin
http://trac-hacks.org/wiki/QueuesPlugin
Process Management
http://trac-hacks.org/wiki/LogWatcherPlugin
Windows Service
http://trac-hacks.org/wiki/WindowsServiceScript
Paste
http://trac-hacks.org/wiki/TracPastePlugin
Repository
http://trac-hacks.org/wiki/BzrPlugin
Themes
http://trac-hacks.org/wiki/ThemeEnginePlugin
http://trac-hacks.org/wiki/CrystalxTheme
http://trac-hacks.org/wiki/LighterTheme
http://trac-hacks.org/wiki/TracpathTheme
Not much to work with ... is it worth it ?
http://trac-hacks.org/wiki/TracHacksPlugin
http://trac-hacks.org/wiki/MenusPlugin
Bookmarks - http://trac-hacks.org/wiki/BookmarkPlugin
http://trac-hacks.org/wiki/KeywordSuggestPlugin - autocomplete function for the keywords ticket field or any other text-based ticket field
Genshi Templating
Can Genshi do template 'matching' like XPath ? Can Genshi do it efficiently ?
The answer to both these questions is 'Yes'.
Genshi has great XML Include and XML Path support, unlike any other Python templating system I have encountered. If you are looking for a powerful XML templating system for a complex application or web site implemented in Python, this is probably it.
XML Templating Features
| Genshi Templating Basics | https://pythonhosted.org/Genshi/templates.html |
| Genshi XML Template Language | https://pythonhosted.org/Genshi/xml-templates.html |
| Using XPath in Genshi | https://pythonhosted.org/Genshi/xpath.html |
| Markup Streams | https://pythonhosted.org/Genshi/streams.html#event-kinds |
http://genshi.edgewall.org/wiki/ApiDocs
https://media.readthedocs.org/pdf/genshi/latest/genshi.pdf
Bitten ?
Bitten is a Python-based framework for collecting various software metrics via continuous integration. It builds on Trac to provide an integrated web-based user interface.
No activity for several years, but seems to have good bones. Not sure why it never got going ...
