
* Trac & Software Development
  * Author: Ing. Vaclav Sykora
  * Date: 2010-10

* IntraWorlds s.r.o.
 * leading provider of social community software and networking software in Europe
 * we support our clients in installing and operating their community portal software 
 * Contact ¶
  * www.intraworlds.com
  *  info@intraworlds.com
  * + 420 378 051 350
  * Teslova 3, CZ-30100 Plzen, Czech Republic 

* What is Trac? (I)
 * Homepage
"Trac is an enhanced wiki and issue tracking system for software development projects. Trac uses a minimalistic approach to web-based software project management. Our mission is to help developers write great software while staying out of the way. Trac should impose as little as possible on a team's established development process and policies."
 * Wikipedia
"Trac is an open source, web-based project management and bug-tracking tool."
 * Me
"Trac provides a complete project infrastructure that is easy to maintain."

* What is trac? (II)
 * written in the Python programming language
 * released under a modified BSD license
 * cross-platform
 * offers an easily extensible layer for Database support
  * currently bundled support for SQLite, PostgreSQL, MySQL
 * extensible through plugins
 * you can install it on your own server

* Features
 * Project Management
 * Wiki
 * Bug Tracker
 * Version Control
 * RSS Feeds
 * Everything is integrated!

* Project Management
 * Information is scattered across different systems
  * Project Management
    * Project Status & Reports
    * Open Tasks
    * Roadmap
  * Document repositories
   * Analysis
   * Design
   * Know-how & Standards
  * Bug tracking tools
  * Source control
  * Time monitoring

* PM - Basic Entities
 * Tickets - a to-do item. Use them for defining tasks and keeping task-related notes.
 * Milestone - a large-scale task with a definite endpoint, such as a software release, a site launch, or a report delivered. A milestone consists of multiple tickets and can display a rough graph of progress based on the proportion of tickets completed.
 * Component - a categorization of tickets that cross-cut milestones.
 * Wiki page - to write documentation and keep notes.

* PM - Tickets
 * In the tab/link navigation controls below the page header, select New Ticket
 * Most form fields are self-explanatory, but definitions of the fields are available from the ../TracTickets
 * An issue is assigned to a person who must resolve it or reassign the ticket to someone else. All tickets can be edited, annotated, assigned, prioritized and discussed at any time.
 * Can be customized
 * Have life cycle (basic-workflow.png)

* PM - Sample
 * create a Milestone
 * create a set of Tickets
 * Timeline
  * displays an overview of everything that has been going on in the project in the chronological order.
   * you can see the diffs for wiki pages/code change sets from the Timeline.
 * Roadmap
  * provides a view on the ticket system that helps planning and managing the future development of a project.
   * just a list of future milestones
   * overview of the whole project's life

* PM - Data Minining
 * Custom Query
 * SQL Query
  * DB Schema: http://trac.edgewall.org/wiki/TracDev/DatabaseSchema
 * Work Log - allows you to register your time usage on a ticket

* PM - XML RPC
 * XML-RPC Plugin
  * http://trac-hacks.org/wiki/XmlRpcPlugin
  * allows Trac plugins to export select parts of their interface via XML-RPC
  * allows programmatic access to Trac, using any client based on any programming language

* Wiki
 * Wikipedia: allows the easy creation and editing of any number of interlinked web pages 
  * via a web browser
  * using a simplified markup language
 * Formatting
  * '''bold''', ''italic'', ~~strike-through~~, __undeline__, ...
  * Headings ==Level 2==
  * Discusion
  * Bullets
  * Prefformated text
  * Links
 * History

* Linking
 * Wiki pages: CamelCase or wiki:CamelCase
 * Tickets: #1 or ticket:1
  * Ticket comments: comment:ticket:1:2
 * Reports: {1} or report:1
 * Attachment:
  * attachment:wiki:MyPage:the_file.txt
  * attachment:ticket:944:attachment.1073.diff
 * Milestones: milestone:1.0

 * source:trunk/checkstyle.xml
 * source:trunk/src@168
 * source:trunk/src/veny/smevente/service/SmsService.java#L14
 * diff:trunk/src/veny/smevente/service/SmsService.java@149:167

* Wiki - Macros
 * Define function for use in the Wiki
 * Sample #1: TODO
 * Sample #2: HelloWorld
Save as "plugins/helloworld.py"
[[[
from trac.core import *
from trac.wiki.macros import WikiMacroBase
from trac.util import escape

__all__ = ['HelloWorldMacro']

class HelloWorldMacro(WikiMacroBase):
        def expand_macro(self, formatter, name, args):
                txt = args or 'No arguments'
                return 'Hello World, ' + escape(txt)
]]]

* Bug Tracker
 * ticket database provides simple but effective tracking of issues and bugs within a project
 * tickets are used for bug reports
 * an issue is assigned to a person who must resolve it or reassign the ticket to someone else
 * ticket can be edited, annotated, assigned, prioritized and discussed at any time

* Extensions
 * Different organizations have different needs
 * Write extensions in Python
 * Macros - define function for use in the Wiki
 * Plugins - extend current components or add new ones

* RSS
 * several modules support content syndication using the RSS
  * Timeline
  * Ticket
  * Reports, Query

* SVN Integration
 * Repository Browser
  * used to browse specific revisions of directories and files stored in the repositories 
 * Revision Log
  * displays a list of the most recent changesets in which the current file has been modified

* Links
http://trac.edgewall.org/
http://trac-hacks.org/
