CINXE.COM
Roundup Issue Tracker - Roundup 2.4.0 documentation
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Roundup Issue Tracker - Roundup 2.4.0 documentation</title> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', VERSION: '2.4.0', COLLAPSE_MODINDEX: false, FILE_SUFFIX: '.html' }; </script> <link rel="stylesheet" href="_static/style.css" type="text/css" /> <!-- https://github.com/sphinx-doc/sphinx/issues/11699 means a duplicate viewport tag --> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta content="Roundup Issue Tracker" name="title" /> <meta content="A simple-to-use and -install issue-tracking system with command-line, web, REST, XML-RPC and e-mail interfaces. Adaptable to many use cases. Allows you to customize the look and feel and implement different workflows." name="description" /> <meta content="website" property="og:type" /> <meta content="https://www.roundup-tracker.org/" property="og:url" /> <meta content="Roundup Issue Tracker" property="og:title" /> <meta content="A simple-to-use and -install issue-tracking system with command-line, web, REST, XML-RPC and e-mail interfaces. Adaptable to many use cases. Allows you to customize the look and feel and implement different workflows." property="og:description" /> <meta content="https://www.roundup-tracker.org/_images/index_logged_out.png" property="og:image" /> <meta property="og:title" content="Roundup Issue Tracker" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.roundup-tracker.org/index.html" /> <meta property="og:site_name" content="Roundup" /> <meta property="og:description" content="Roundup is an issue-tracking system that boasts a user-friendly interface and easy installation process. It offers a range of interfaces, including command-line, web, REST, XML-RPC, and e-mail, mak..." /> <meta property="og:image" content="https://www.roundup-tracker.org/_images/index_logged_out.png" /> <meta property="og:image:alt" content="The front page of a tracker showing a table of issues and their properties." /> <link rel="canonical" href="https://www.roundup-tracker.org/index.html" /> <link rel="search" type="application/opensearchdescription+xml" title="Search within Roundup 2.4.0 documentation" href="_static/opensearch.xml"/> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> <link rel="top" title="Roundup 2.4.0 documentation" href="#" /> <link rel="next" title="Docs" href="docs.html" /> <link rel="prev" title="Sitemap" href="contents.html" /> </head> <body> <div id="skiplink"><a href="#main">Skip to main content</a></div> <header class="header"> <div class="label non_mobile">Roundup</div> <div class="label mobile"><a href="#main">Roundup <span class="jumplabel">jump to Roundup Issue Tracker</span></a></div> <div id="searchbox" style="display: none"> <form class="search" action="search.html" method="get"> <input type="text" aria-label="Enter search terms" name="q" size="18" autocomplete="on" /> <input type="submit" value="Search" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </header> <div class="navigation"> <nav aria-label="primary navigation"> <div class="menu"> <ul class="current"> <li class="toctree-l1 current"><a class="current reference internal" href="#">Home</a><ul> <li class="toctree-l2"><a class="reference internal" href="#release-highlights">Release Highlights</a></li> <li class="toctree-l2"><a class="reference internal" href="#roundup-use-cases">Roundup Use Cases</a></li> <li class="toctree-l2"><a class="reference internal" href="#try-it-out">Try It Out</a></li> <li class="toctree-l2"><a class="reference internal" href="#origin-story">Origin Story</a></li> </ul> </li> <li class="toctree-l1"><a class="reference external" href="https://pypi.org/project/roundup/">Download</a></li> <li class="toctree-l1"><a class="reference internal" href="docs.html">Docs</a></li> <li class="toctree-l1"><a class="reference external" href="https://issues.roundup-tracker.org">Issues</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">Contact</a></li> <li class="toctree-l1"><a class="reference external" href="https://wiki.roundup-tracker.org">Wiki</a></li> <li class="toctree-l1"><a class="reference internal" href="code.html">Code</a></li> </ul> </div> </nav> </div> <div class="content"> <nav id="subnav" aria-label="sub navigation"> <a title="Sitemap" href="contents.html"> Prev</a> <a title="Docs" href="docs.html"> Next</a> <a title="Index" href="genindex.html"> Index</a> </nav> <main id="main" role="main" tabindex="-1"> <section id="roundup-issue-tracker"> <h1>Roundup Issue Tracker</h1> <div class="release_info news"> <!-- package version/pypi download --> <a href="https://pypi.org/project/roundup/#files"> <span style="padding-inline-end: 1.75ch">Download:</span> <img style="vertical-align: text-top" src="https://img.shields.io/pypi/v/roundup?color=blue&label=Current%20Version&cacheSeconds=86400" alt="Display current version of Roundup on PyPI." height="18" width="127"> </a> <!-- supported python versions: <img src="https://shields.io/pypi/pyversions/roundup"> --> <!-- license: <img src="https://img.shields.io/pypi/l/roundup"> --> <!-- changes since 2.4.0 <img src="https://img.shields.io/github/commits-since/roundup-tracker/roundup/2.4.0/master?sort=semver"> --> <!-- status beta, stable, mature.... <img src="https://img.shields.io/pypi/status/roundup"> --> <!-- mozilla observatory <img src="https://img.shields.io/mozilla-observatory/grade/www.roundup-tracker.org?publish"> --> <!-- commits from last named release: <img alt="GitHub commits difference between two branches/tags/commits" src="https://img.shields.io/github/commits-difference/roundup-tracker/roundup?base=2.4.0&head=master">a --> <!-- newest tag by date - use for alpha/beta release notifications? <img alt="GitHub tag (latest by date)" src="https://img.shields.io/github/v/tag/roundup-tracker/roundup"> --> <!-- downloads/month --> <a style="display:block; margin-block-start: 0.5em;" href="https://pypistats.org/packages/roundup"> <span style="padding-inline-start: 10.75ch"></span> <img src="https://img.shields.io/badge/dynamic/json?color=blue&label=Downloads%2FMonth&cacheSeconds=86400&query=data.last_month&url=https%3A%2F%2Fpypistats.org%2Fapi%2Fpackages%2Froundup%2Frecent" alt="Badge displaying number of downloads per month." height="18" width="127"> </a> <a style="display:block; margin-block-start: 0.5em;" href="https://hub.docker.com/r/rounduptracker/roundup"> <span style="padding-inline-start: 10.75ch"></span> <img src="https://img.shields.io/docker/image-size/rounduptracker/roundup?label=Docker%20Size" alt="Graphic displaying size of newest docker image on hub.docker.com." height="18" width="127"> </a> <!-- build status --> <a style="display:block; margin-block-start: 1em;" href="https://github.com/roundup-tracker/roundup/actions?query=workflow%3Aroundup-ci++"> <span>Build Status:</span> <img src="https://github.com/roundup-tracker/roundup/actions/workflows/ci-test.yml/badge.svg" alt="Status of primary regression test job on github." height="18" width="127"><br> </a> </div><p>Roundup is an issue-tracking system that boasts a user-friendly interface and easy installation process. It offers a range of interfaces, including command-line, web, REST, XML-RPC, and e-mail, making it a versatile solution for issue tracking. The system is based on the award-winning design by Ka-Ping Yee, which emerged victorious in the Software Carpentry “Track” design competition.</p> <p>Roundup is highly customizable, allowing users to tailor the system to their specific needs and preferences.</p> <p>The latest stable version of Roundup is 2.4.0, which includes bug fixes and additional features compared to the previous 2.3.0 release.</p> <p>Roundup is compatible with Python 2.7.12+ or 3.6+.</p> <div class="admonition-python-2-support admonition"> <p class="admonition-title">Python 2 Support</p> <p>Python 2 support ends with release 2.4.0 (July 2024). Several Continuous Integration (CI) services are discontinuing their resources for testing with Python 2. Use Python 3 for the deployment of new trackers. Existing trackers should be <a class="reference external" href="docs/upgrading.html#python-3-support-info">upgraded to use Python 3.</a></p> </div> <section id="release-highlights"> <h2>Release Highlights</h2> <p>Some improvements from the 2.3.0 release are:</p> <ul class="simple"> <li><p>three CVE’s have been fixed. One requires changes to your tracker’s home directory. The other two are fixed by installing 2.4.0. See <a class="reference external" href="https://www.roundup-tracker.org/docs/security.html">https://www.roundup-tracker.org/docs/security.html</a> for details and instructions on how to fix these in 2.4.0 and earlier releases.</p></li> <li><p>new classhelper component thanks to a team of students from CS682 at U-Mass Boston. This fixes many issues with the old classhelper. It is implemented as a web-component and needs REST interface access. It will fall back to the classic classhelper if REST is not available or if the browser does not support web-components.</p></li> <li><p>fix Windows Python installation using pip. It used to go into an infinite loop during install or download. Also fix installation of shared files (templates) so roundup-admin can find them.</p></li> <li><p>using <code class="docutils literal notranslate"><span class="pre">@current_user</span></code> as a value in a search URL for a user property will use the current logged in user. Now you can share searches like: “My issues” as “my” will become the current logged in user.</p></li> <li><p>login failures to the REST/XML-RPC interfaces are now rate limited to limit password guessing attacks.</p></li> <li><p>utf8mb4 is the default charset for MySQL. This requires migrating your database using the mysql client. You can choose to keep the older character set in config.ini.</p></li> <li><p>PostgreSQL services defined in pg_service.conf can be used. PostgreSQL schemas are supported to eliminate the need for the roundup user to have database creation/deletion privileges.</p></li> <li><p>fix out of memory issue when importing larger trackers into PostgreSQL.</p></li> <li><p>multiple roundup-admin improvements: display protected properties (like creation date), better formatting of output, command history. Also on windows, pyreadline3 is supported to provide an editable interactive command line.</p></li> <li><p>an experimental wsgi performance improvement in 2.3.0 is now now the default and is opt-out.</p></li> <li><p>new template functions: utils.readfile and utils.expandfile. Javascript that is included in the Python core will be moved to external files and be able to have values from Roundup substituted in the Javascript.</p></li> <li><p>allow content-type of a template to be set from inside the template. This allows returning json or xml from a template without a .json or .xml extention.</p></li> <li><p>fix import/export on windows to use Unix style line endings fixing export/import on Windows and making exports portable across platforms.</p></li> </ul> <p>More info on the 79 changes can be found in the <a class="reference external" href="https://sourceforge.net/p/roundup/code/ci/tip/tree/CHANGES.txt">change notes</a>.</p> </section> <section id="roundup-use-cases"> <h2>Roundup Use Cases</h2> <p>For more information on Roundup see the <a class="reference internal" href="docs/features.html"><span class="doc">features list</span></a>, <a class="reference internal" href="docs/design.html"><span class="doc">design overview</span></a>, and all the other <a class="reference internal" href="docs.html"><span class="doc">documentation</span></a>. Roundup has been deployed for:</p> <ul class="simple"> <li><p>bug tracking and TODO list management (the classic installation)</p></li> <li><p>customer help desk support (with a wizard for the phone answerers, linking to networking, system and development issue trackers)</p></li> <li><p>issue management for IETF working groups</p></li> <li><p>sales lead tracking</p></li> <li><p>conference paper submission and double-blind referee management</p></li> <li><p>weblogging (well, almost :)</p></li> <li><p>thing management using the <a class="reference external" href="https://gettingthingsdone.com/">GTD methodology</a>.</p></li> </ul> <p>…and so on. It’s been designed with <a class="reference internal" href="docs/customizing.html"><span class="doc">flexibility</span></a> in mind - it’s not merely another bug tracker.</p> </section> <section id="try-it-out"> <h2>Try It Out</h2> <p>Roundup ships with a <strong>demo tracker</strong> to play with - you don’t need to install Roundup. After you’ve unpacked the source, just run “<code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">demo.py</span></code>” and load up the URL it prints out!</p> <p>Follow the source gratification mode with these steps (change the <code class="docutils literal notranslate"><span class="pre">-2.4.0</span></code> version identifier to match your downloaded file).</p> <ol class="arabic"> <li><p><code class="docutils literal notranslate"><span class="pre">python3</span> <span class="pre">-m</span> <span class="pre">pip</span> <span class="pre">download</span> <span class="pre">roundup</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">tar</span> <span class="pre">-xzvf</span> <span class="pre">roundup-2.4.0.tar.gz</span></code></p> <ul> <li><p>if you don’t have a tar command (e.g windows), use:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">c</span> <span class="s2">"import tarfile, sys; tarfile.open(sys.argv[1]).extractall();"</span> <span class="n">roundup</span><span class="o">-</span><span class="mf">2.4.0</span><span class="o">.</span><span class="n">tar</span><span class="o">.</span><span class="n">gz</span> </pre></div> </div> </li> </ul> </li> <li><p><code class="docutils literal notranslate"><span class="pre">cd</span> <span class="pre">roundup-2.4.0</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">python3</span> <span class="pre">demo.py</span></code></p></li> </ol> <p>(The source download can also be used to <a class="reference external" href="docs/installation.html#docker-support">create a custom Docker image</a>.)</p> <p>Alternatively, you can install using a virtual environment with pip by:</p> <ol class="arabic"> <li><p>create a virtual environment with:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">roundup</span> </pre></div> </div> </li> <li><p>activate the environment with (assuming your shell is sh/bash/zsh/ksh like):</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.</span> <span class="n">roundup</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span> </pre></div> </div> </li> <li><p>install the latest release of Roundup with:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">roundup</span> </pre></div> </div> </li> <li><p>create a demo tracker with:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">roundup</span><span class="o">-</span><span class="n">demo</span> </pre></div> </div> <p>using <code class="docutils literal notranslate"><span class="pre">./demo</span></code> as the directory and the <code class="docutils literal notranslate"><span class="pre">classic</span></code> tracker.</p> </li> <li><p>load the URL printed by the demo tracker</p></li> <li><p>when you are done, use <cite>deactivate</cite> to return your shell to using the system python.</p></li> </ol> <p>Both of these methods produce the same result.</p> </section> <section id="origin-story"> <h2>Origin Story</h2> <p>Roundup was originally released as version 0.1.1 in late August, 2001. The first <a class="reference external" href="https://sourceforge.net/p/roundup/code/ci/tip/tree/CHANGES.txt">change note</a> written said:</p> <blockquote> <div><p>Needed a bug tracking system. Looked around. Tried to install many Perl-based systems, to no avail. Got tired of waiting for Roundup to be released. Had just finished major product project, so needed something different for a while. Roundup here I come…</p> </div></blockquote> </section> </section> </main> </div> <footer class="footer"> <div> <span class="source">[<a href="_sources/index.txt" rel="nofollow">page source</a>]</span> © Copyright 2009-2024, Richard Jones, Roundup-Team. </div> <div> Last updated on Jul 13, 2024. <span>Hosted by <a href="https://sourceforge.net"><img src="https://sflogo.sourceforge.net/sflogo.php?group_id=31577&type=1" width="88" height="31" alt="SourceForge.net Logo" /></a></span> </div> </footer> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <!-- loading css_files --> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <!-- loading css_files --> <link rel="stylesheet" href="_static/" type="text/css" /> <!-- loading css_files --> <link rel="stylesheet" href="_static/tabs.css" type="text/css" /> <script> /* locally hosted goatcounter https://www.goatcounter.com/ */ /* include site info in path url to allow multiple sites to be tracked together */ window.goatcounter = { path: function(p) { return location.host + p } } </script> <script data-goatcounter="https://stats.rouilj.dynamic-dns.net/count" integrity="sha384-QGgNMMRFTi8ul5kHJ+vXysPe8gySvSA/Y3rpXZiRLzKPIw8CWY+a3ObKmQsyDr+a" async="" src="_static/goatcounter_count.v3.js"> </script> <script id="documentation_options" data-url_root="" src="_static/documentation_options.js"> </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="_static/language_data.js"></script> <script type="text/javascript" src="_static/searchtools.js"></script> <script type="text/javascript" src="_static/sphinx_highlight.js"></script> <script type="text/javascript">$('#searchbox').show(0);</script> </body> </html>