92 | | * perhaps in the future we will replace "build/configure/package/distribute/test/develop" code written in the Make language with code written in Python; One specific instance of this is {{{./setup.py test}}} which runs the unit tests |
| 92 | Disadvantages: |
| 93 | |
| 94 | * setuptools has many bugs and is poorly maintained. |
| 95 | |
| 96 | * these bugs affect Tahoe-LAFS disproportionately because it has more, and more complicated, dependencies than most Python packages. We currently have [[TicketQuery(status!=closed&keywords~=setuptools, count)]] open setuptools-related bugs ([query:status!=closed&keywords~=setuptools full list]) and have closed [[TicketQuery(status=closed&keywords~=setuptools, count)]] such bugs ([query:status=closed&keywords~=setuptools full list]). (These counts may be a bit high because of duplicates and non-bugs, but they're indicative of the problem.) |
| 97 | |
| 98 | * maintaining our fork (which is necessary to avoid some of the bugs) takes up developer time and mental bandwidth that would be more productively spent on Tahoe-LAFS itself. |
| 99 | |
| 100 | * even when working as designed, setuptools has some serious problems. For example, people who package Tahoe for OS distributions generally dislike very much its behaviour of automatically downloading dependencies from random websites (however convenient something like that would be if it were optional and designed properly). |
| 101 | |