Mercurial > p > roundup > code
comparison doc/features.txt @ 8416:370689471a08 issue2550923_computed_property
merge from default branch accumulated changes since Nov 2023
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 17 Aug 2025 16:12:25 -0400 |
| parents | a0f9ef08c36c |
| children | 695399dea532 |
comparison
equal
deleted
inserted
replaced
| 7693:78585199552a | 8416:370689471a08 |
|---|---|
| 6 | 6 |
| 7 ================ | 7 ================ |
| 8 Roundup Features | 8 Roundup Features |
| 9 ================ | 9 ================ |
| 10 | 10 |
| 11 Roundup is a simple-to-use and -install issue-tracking system with | 11 Roundup is an easy-to-use and -install issue-tracking system with |
| 12 web, e-mail and command-line interfaces. It is based on the winning design | 12 web, e-mail and command-line interfaces. Based on the winning design |
| 13 from Ka-Ping Yee in the :index:`Software Carpentry` "Track" design competition. | 13 from Ka-Ping Yee in the :index:`Software Carpentry` "Track" design |
| 14 competition. | |
| 14 | 15 |
| 15 *simple to install* | 16 **Installation and Setup** |
| 16 - installation (including web interface) takes about 30 minutes | |
| 17 - instant-gratification ``python demo.py`` takes less than 5 minutes :) | |
| 18 - five templates included in the distribution for you to base your tracker on | |
| 19 - play with the demo, customise it and then use *it* as the template for | |
| 20 your production tracker | |
| 21 - requires *no* additional support software - python (2.7 or 3.6+) is | |
| 22 enough to get you going | |
| 23 - supports higher-performance storage backends like sqlite_, | |
| 24 mysql_ and postgresql_ | |
| 25 | 17 |
| 26 *simple to use* | 18 - Start using the software in `instant-gratification (demo) mode`_ with |
| 27 - accessible through the web (html, REST or XMLRPC), email, | 19 ``python demo.py`` or `a Docker container`_ in under 5 minutes. |
| 28 command-line or Python programs | 20 - Choose from `five included templates`_ for your tracker. |
| 29 - may be used to track bugs, features, user feedback, sales opportunities, | 21 - `Customize`_ and use the demo as a template for your production tracker. |
| 30 milestones, ... | 22 - No need for additional support software, just Python (3.7+) |
| 31 - automatically keeps a full history of changes to issues with | 23 to get started. |
| 32 configurable verbosity and easy access to information about who created | 24 - Basic installation (including a web interface) takes about 30 minutes. |
| 33 or last modified *any* item in the database | 25 - Supports embedded databases like `SQLite`_ and dbm. Upgradable |
| 34 - issues have their own mini mailing list (nosy list) | 26 to databases like `MySQL`_ or `PostgreSQL`_ if needed. |
| 35 - users may sign themselves up, there may be automatic signup for | 27 - Can be run in a container like Docker or kubernetes. |
| 36 incoming email and users may handle their own password reset requests | 28 - Deploy in your network as a standalone web server or `through |
| 29 various methods`_ like WSGI, FastCGI, plain CGI, etc. | |
| 30 - Essential tracking features depend on the Python standard | |
| 31 library. Supplementary packages from PyPI are optional and can be | |
| 32 tailored to fit your unique threat model and security needs. | |
| 37 | 33 |
| 38 *highly configurable* | 34 **Issue Tracking and Management** |
| 39 - web interface HTML is fully editable | |
| 40 - database schema is also fully editable (only the "user" class is required) | |
| 41 with a full set of data types (including dates and many-to-many relations) | |
| 42 across all storages available | |
| 43 - authorization is fine grained and can be based on the properties of | |
| 44 a user and resource (`ABAC, PBAC (Attribute or Policy/Purpose Based Access | |
| 45 Control <https://en.wikipedia.org/wiki/Attribute-based_access_control>`_)) | |
| 46 - customised automatic auditors and reactors may be written that perform | |
| 47 actions before and after changes are made to entries in the database, | |
| 48 or may veto the creation or modification of items in the database | |
| 49 - samples are provided for all manner of configuration changes and | |
| 50 customisations | |
| 51 | 35 |
| 52 *fast, scalable* | 36 - Manage your issues your way. Handle bugs, features, milestones, |
| 53 - with the sqlite, mysql and postgresql backends, roundup is | 37 user feedback, fleet maintenance, office issues etc. |
| 54 also fast and scalable, easily handling thousands of issues and users | 38 - Issues become a mini mailing list to keep everyone informed. |
| 55 with decent response times | 39 - Searches on specific properties (e.g. open issues with a high |
| 56 - database indexes are automatically added for those backends that | 40 priority) can be saved and reused or shared with other users. |
| 57 support them (sqlite, mysql and postgresql) | 41 - Full Text Search for quick searches across messages. |
| 58 - indexed full text search (FTS) gives fast responses to searches across all | 42 - Keeps a detailed history of issue changes. |
| 59 messages and indexed string properties | 43 - Email is a first class method for interacting with issues. |
| 60 - support for the Xapian, Whoosh, sqlite or postgres full-text | |
| 61 indexing engines for large trackers | |
| 62 | 44 |
| 63 *documented* | 45 **Scalability and Performance** |
| 64 - documentation exists for installation, upgrading, maintenance, users and | |
| 65 customisation | |
| 66 | 46 |
| 67 *web interface* | 47 - Default trackers use simple HTML with low resource requirements. |
| 68 - fully editable interfaces for listing and display of items | 48 - Fast and scalable with sqlite, mysql, and postgresql backends. |
| 69 - extendable to include wizards, parent/meta bug displays, ... | 49 - Indexes are automatically configured. |
| 70 - differentiates between anonymous, known and admin users | 50 - Supports full-text indexing engines (xapian, whoosh, SQLite, |
| 71 - may be set up to require login, and may also only allow admin users | 51 PostgreSQL) for large trackers. |
| 72 to register new users | |
| 73 - authentication of user registration and user-driven password resetting | |
| 74 using email and one time keys | |
| 75 - may be run using WSGI or through CGI as a normal cgi script, as a | |
| 76 stand-alone web server, under mod_wsgi (mod_python is deprecated) | |
| 77 or through Zope | |
| 78 - searching may be performed using many constraints, including a full-text | |
| 79 search of messages attached to issues | |
| 80 - file attachments (added through the web or email) are served up with the | |
| 81 correct content-type and filename | |
| 82 - email change messages generated by roundup appear to be sent by the | |
| 83 person who made the change, but responses will go back through the nosy | |
| 84 list by default | |
| 85 - flexible access control built around Permissions and Roles with assigned | |
| 86 Permissions | |
| 87 - generates valid HTML4 or XHTML | |
| 88 - detects concurrent user changes | |
| 89 - saving and editing of user-defined queries which may optionally be | |
| 90 shared with other users | |
| 91 | 52 |
| 92 *e-mail interface* | 53 **Customization** |
| 93 - may be set up using sendmail-like delivery alias, POP polling or mailbox | |
| 94 polling | |
| 95 - may auto-register users who send in mail and aren't known to roundup | |
| 96 - nosy list configuration controls how people are added and when messages | |
| 97 are sent to the list | |
| 98 - auto-filing of "unformatted" messages into a particular class | |
| 99 - e-mail attachments are handled sanely, being attached to the issue they're | |
| 100 intended for, and forwarded on to the nosy list | |
| 101 - sane handling of content-type and content-encoding of messages (text/plain | |
| 102 preferred in all situations) | |
| 103 - email packages that display threading will show issue messages correctly | |
| 104 threaded | |
| 105 - users may send in messages from multiple addresses and be associated | |
| 106 with the same roundup username | |
| 107 - built-in security features like TLS and APOP | |
| 108 | 54 |
| 109 *command-line* | 55 - The database schema can be updated to `track additional data`_. |
| 110 - may be used to interactively manage roundup databases | 56 - The web interface can be redesigned to fit your workflow. |
| 111 - may be scripted using standard shell scripting | 57 - Extensible web interface with various features like `wizards`_, |
| 112 - roundup's API may also be used by other Python programs - a sample is | 58 bug displays, etc. |
| 113 provided that runs once a day and emails people their assigned issues | 59 - Add business rules using `auditors and reactors`_ for actions before |
| 114 - a variety of sample shell scripts are provided (weekly reports, issue | 60 and after database changes. |
| 115 generation, ...) | 61 - Comprehensive documentation for customization, installation, |
| 62 maintenance, and user guidance. | |
| 116 | 63 |
| 117 *xmlrpc interface* | 64 **Data Security, Privacy and Authorization** |
| 118 - simple remote tracker interface with basic HTTP authentication | |
| 119 available at the /xmlrpc endpoint. | |
| 120 - provides same access to tracker as roundup-admin, but based on | |
| 121 XMLRPC calls | |
| 122 - see the `xmlrpc guide`_ for more details basic and advanced clients etc. | |
| 123 | 65 |
| 124 *RESTful interface* | 66 - Your data remains on your servers. |
| 125 - accessible using basic HTTP authentication at /rest starting point | 67 - You can choose if AI can access the data. |
| 126 - able to be extended with new endpoints | 68 - Can use HTTPS for security over the web. |
| 127 - authentication can be done using JSON Web Tokens (JWT) | 69 - Fine-grained authorization (`ABAC`_, `ReBAC`_, `RBAC`_) based on |
| 128 - CORS support for use by third party web pages. | 70 user, resource, and external properties. |
| 129 - see the `rest guide`_ for details. | |
| 130 | 71 |
| 131 .. _sqlite: https://www.sqlite.org/index.html | 72 .. _`ABAC`: https://en.wikipedia.org/wiki/Attribute-based_access_control |
| 73 .. _`ReBAC`: https://en.wikipedia.org/wiki/Relationship-based_access_control | |
| 74 .. _`RBAC`: https://en.wikipedia.org/wiki/Role-based_access_control | |
| 75 | |
| 76 **Documentation and User Management** | |
| 77 | |
| 78 - Users can sign up through the web interface or new user creation | |
| 79 can be limited to admin users. | |
| 80 - Can use an `external user database`_ (LDAP, password file) | |
| 81 - Self-serve password reset for users via email. | |
| 82 | |
| 83 **Email Integration and Automation** | |
| 84 | |
| 85 - Update issues via email with new messages and the ability to | |
| 86 change properties of issues (e.g. close an issue). | |
| 87 - Secure email handling with features like TLS, APOP, IMAPS/OAUTH. | |
| 88 - Optional auto-registration for email users. | |
| 89 - Configurable nosy list for each issue controls email notifications. | |
| 90 - Proper handling of email attachments and content types. | |
| 91 | |
| 92 **Command-Line and API Access** | |
| 93 | |
| 94 - Manage database interactively from the command line. | |
| 95 - Automate modifications using standard shell scripting. | |
| 96 - Python programs can use the Roundup Python API to manage/automate issues. | |
| 97 - Sample scripts provided for various tasks. | |
| 98 | |
| 99 **Remote Access Interfaces** | |
| 100 | |
| 101 - `RESTful API`_ accessible with basic HTTP authentication or optional JWT. | |
| 102 - `XMLRPC interface`_ for remote tracker access with basic | |
| 103 HTTP authentication. | |
| 104 - Configurable CORS support for third-party web pages. | |
| 105 - Ability to `generate and authenticate JSON Web Tokens (JWT) | |
| 106 <rest.html#changing-access-roles-with-json-web-tokens>`_. | |
| 107 | |
| 108 .. _`auditors and reactors`: reference.html#auditor-or-reactor | |
| 109 .. _`customize`: customizing.html | |
| 110 .. _`external user database`: customizing.html#using-external-user-databases | |
| 111 .. _`five included templates`: installation.html#choosing-your-template | |
| 112 .. _`instant-gratification (demo) mode`: | |
| 113 installation.html#for-the-really-impatient | |
| 114 .. _`a Docker container`: installation.html#running-in-demo-mode-with-docker | |
| 132 .. _mysql: https://pypi.org/project/MySQL-python/ | 115 .. _mysql: https://pypi.org/project/MySQL-python/ |
| 133 .. _postgresql: https://www.psycopg.org/ | 116 .. _postgresql: https://www.psycopg.org/ |
| 134 .. _`xmlrpc guide`: xmlrpc.html | 117 .. _`restful api`: rest.html |
| 135 .. _`rest guide`: rest.html | 118 .. _`run in a container`: installation.html#docker-support |
| 119 .. _sqlite: https://www.sqlite.org/index.html | |
| 120 .. _`track additional data`: | |
| 121 customizing.html#adding-a-new-field-to-the-classic-schema | |
| 122 .. _`through various methods`: installation.html#configure-a-web-interface | |
| 123 .. _wizards: | |
| 124 customizing.html#setting-up-a-wizard-or-druid-for-controlled-adding-of-issues | |
| 125 .. _`xmlrpc interface`: xmlrpc.html |
