Mercurial > p > roundup > code
comparison doc/developers.txt @ 7109:561c66232347
Merge
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Thu, 08 Dec 2022 11:18:46 +0100 |
| parents | e4e651b1bcfa |
| children | d0ef168a9379 |
comparison
equal
deleted
inserted
replaced
| 7108:b26207712c2b | 7109:561c66232347 |
|---|---|
| 2 Developing Roundup | 2 Developing Roundup |
| 3 ================== | 3 ================== |
| 4 | 4 |
| 5 .. note:: | 5 .. note:: |
| 6 The intended audience of this document is the developers of the core | 6 The intended audience of this document is the developers of the core |
| 7 Roundup code. If you just wish to alter some behaviour of your Roundup | 7 Roundup code. If you just wish to alter some behavior of your Roundup |
| 8 installation, see `customising roundup`_. | 8 installation, see `Customising Roundup`_. |
| 9 | 9 |
| 10 Contents | 10 Contents |
| 11 | 11 |
| 12 .. contents:: | 12 .. contents:: |
| 13 :local: | 13 :local: |
| 14 | 14 |
| 15 If you are looking for info on managing the roundup-tracker.org | |
| 16 infrastructure, that information has migrated to website/README.txt | |
| 17 in the roundup repo. | |
| 18 | 15 |
| 19 Getting Started | 16 Getting Started |
| 20 --------------- | 17 --------------- |
| 21 | 18 |
| 22 Anyone wishing to help in the development of Roundup must read `Roundup's | 19 If you are looking for a good first issue, search for `StarterTicket |
| 23 Design Document`_ and the `implementation notes`_. | 20 on https://issues.Roundup-tracker.org`_. These include issues where |
| 21 Python development, Documentation or Web design skills are useful. | |
| 22 | |
| 23 You can continue the conversation using the issue or join the | |
| 24 Roundup-devel list to get assistance and verify your planned changes. | |
| 24 | 25 |
| 25 All development is coordinated through two resources: | 26 All development is coordinated through two resources: |
| 26 | 27 |
| 27 - roundup-devel mailing list at | 28 - Roundup-devel mailing list at |
| 28 https://sourceforge.net/projects/roundup/lists/roundup-devel | 29 https://sourceforge.net/projects/Roundup/lists/Roundup-devel |
| 29 - The issue tracker running at | 30 - The issue tracker running at |
| 30 https://issues.roundup-tracker.org/ | 31 https://issues.Roundup-tracker.org/ |
| 32 | |
| 33 In addition, the Roundup IRC channel on irc.oftc.net can be accessed | |
| 34 via the web interface shown on the Contact page. The channel is logged | |
| 35 and the web sites for the logs are shown in the channel topic. You can | |
| 36 ask questions and use it to coordinate work discussed using the | |
| 37 resources above. | |
| 38 | |
| 39 Anyone wishing to help in the development of the Roundup Python core | |
| 40 may find `Roundup's Design Document`_ and the `implementation notes`_ | |
| 41 helpful. | |
| 42 | |
| 43 People working on Documentation or designing changes to the Web | |
| 44 interface don't need to get into the implementation internals. | |
| 31 | 45 |
| 32 | 46 |
| 33 Small Changes | 47 Small Changes |
| 34 ------------- | 48 ------------- |
| 35 | 49 |
| 36 Most small changes can be submitted as patches through the | 50 Most small changes can be submitted as patches through the |
| 37 `issue tracker`_ or sent to `roundup-devel mailing list`_. | 51 `issue tracker`_ or sent to `Roundup-devel mailing list`_. |
| 38 | |
| 39 | |
| 40 Source Repository Access | |
| 41 ------------------------ | |
| 42 | |
| 43 See https://www.roundup-tracker.org/code.html. | |
| 44 For all other questions ask on the development mailinglist. | |
| 45 | 52 |
| 46 | 53 |
| 47 Project Rules | 54 Project Rules |
| 48 ------------- | 55 ------------- |
| 49 | 56 |
| 50 Mostly the project follows Guido's Style (though naming tends to be a little | 57 Be polite to others. There is no place for ad hominem attacks. |
| 51 relaxed sometimes). In short: | 58 |
| 59 Mostly the project follows Guido's Python Style (though naming tends | |
| 60 to be a little relaxed sometimes). In short: | |
| 52 | 61 |
| 53 - 80 column width code | 62 - 80 column width code |
| 54 - 4-space indentations | 63 - 4-space indentations |
| 55 - All modules must have an Id line near the top | |
| 56 | 64 |
| 57 Other project rules: | 65 Other project rules: |
| 58 | 66 |
| 59 - New functionality must be documented, even briefly (so at least we know | 67 - new functionality must be documented, even briefly (so at |
| 60 where there's missing documentation) and changes to tracker configuration | 68 least we know where there's missing documentation) and |
| 61 must be logged in the upgrading document. | 69 changes to tracker configuration must be logged in the |
| 62 - subscribe to roundup-checkins to receive checkin notifications from the | 70 upgrading document. |
| 63 other developers with write access to the source-code repository. | 71 - discuss any changes with the other developers on |
| 64 - discuss any changes with the other developers on roundup-dev. If nothing | 72 Roundup-dev. If nothing else, this makes sure there's no |
| 65 else, this makes sure there's no rude shocks | 73 rude shocks. |
| 66 - write unit tests for changes you make (where possible), and ensure that | 74 - write unit tests for changes you make (where possible), |
| 67 all unit tests run before committing changes | 75 and ensure that all unit tests run before committing |
| 68 - run pychecker over changed code | 76 changes. |
| 77 - run flake8_ or pylint_ over changed code. | |
| 78 - if you have direct commit access to the repository, | |
| 79 subscribe to Roundup-checkins to receive checkin | |
| 80 notifications from the other developers with write access | |
| 81 to the source-code repository. | |
| 82 | |
| 83 The goal is to have no flake8 issues. Current code does include long | |
| 84 lines and use of mutable objects in function signatures. Some third | |
| 85 party code (e.g. ZPT) vendored into the codebase has more issues. | |
| 69 | 86 |
| 70 The administrators of the project reserve the right to boot developers who | 87 The administrators of the project reserve the right to boot developers who |
| 71 consistently check in code which is either broken or takes the codebase in | 88 consistently check in code which is either broken or takes the codebase in |
| 72 directions that have not been agreed to. | 89 directions that have not been agreed to. |
| 73 | 90 |
| 91 Source Repository Access | |
| 92 ------------------------ | |
| 93 | |
| 94 Roundup is developed using the `Mercurial distributed version control | |
| 95 system (DVCS)`_ [1]_. It is `hosted at Sourceforge`_. See | |
| 96 https://www.Roundup-tracker.org/code.html for details. | |
| 97 For all other questions ask on the development mailing list. | |
| 98 | |
| 99 Other Resources - CI, Code Coverage | |
| 100 ----------------------------------- | |
| 101 | |
| 102 Roundup has a `copy of the mercurial repository on GitHub`_. It is | |
| 103 updated manually after every few commits to the Mercurial | |
| 104 repository. Updates trigger the CI pipeline which happens on two | |
| 105 services: | |
| 106 | |
| 107 1. `GitHub Actions`_. It runs Docker container scans using Anchore as | |
| 108 well as security scans for dependencies using CodeQL. Also it | |
| 109 runs the test suite on multiple versions of Python. | |
| 110 2. `TravisCI`_ is also used to run CI. It runs the test suite on | |
| 111 multiple Python versions. It also provides alpha and development | |
| 112 Python releases faster than GitHub. | |
| 113 | |
| 114 GitHub actions upload coverage statistics to both `CodeCov`_ and | |
| 115 `Coveralls`_. TravisCI only uploads to CodeCov. | |
| 116 | |
| 117 We run our own issue tracker so we can dogfood the code. So we do not | |
| 118 use GitHub issues. Pull requests are grudgingly accepted. They have to | |
| 119 be exported and applied to the Mercurial repository. This is time | |
| 120 consuming so patches attached to the issue are preferred. | |
| 74 | 121 |
| 75 Debugging Aids | 122 Debugging Aids |
| 76 -------------- | 123 -------------- |
| 77 | 124 |
| 78 See :doc:`debugging <debugging>`. | 125 See :doc:`debugging <debugging>`. |
| 124 GNU gettext package | 171 GNU gettext package |
| 125 ~~~~~~~~~~~~~~~~~~~ | 172 ~~~~~~~~~~~~~~~~~~~ |
| 126 | 173 |
| 127 This chapter is full of references to GNU `gettext package`_. | 174 This chapter is full of references to GNU `gettext package`_. |
| 128 GNU gettext is a "must have" for nearly all steps of internationalizing | 175 GNU gettext is a "must have" for nearly all steps of internationalizing |
| 129 any program, and it's manual is definetely a recommended reading | 176 any program, and it's manual is definitely a recommended reading |
| 130 for people involved in `I18N`_. | 177 for people involved in `I18N`_. |
| 131 | 178 |
| 132 There are GNU gettext ports to all major OS platforms. | 179 There are GNU gettext ports to all major OS platforms. |
| 133 Windows binaries are available from `GNU mirror sites`_. | 180 Windows binaries are available from `GNU mirror sites`_. |
| 134 | 181 |
| 267 <button name="btn_wink" value=" Wink " i18n:attributes="value" /> | 314 <button name="btn_wink" value=" Wink " i18n:attributes="value" /> |
| 268 | 315 |
| 269 will translate the caption (and return value) for the "wink" button. | 316 will translate the caption (and return value) for the "wink" button. |
| 270 | 317 |
| 271 * explicit msgids. Sometimes it may be useful to specify msgid | 318 * explicit msgids. Sometimes it may be useful to specify msgid |
| 272 for the element translation explicitely, like this:: | 319 for the element translation explicitly, like this:: |
| 273 | 320 |
| 274 <span i18n:translate="know what i mean?">this text is ignored</span> | 321 <span i18n:translate="know what i mean?">this text is ignored</span> |
| 275 | 322 |
| 276 When rendered, element contents will be replaced by translation | 323 When rendered, element contents will be replaced by translation |
| 277 of the string specified in ``i18n:translate`` attribute. | 324 of the string specified in ``i18n:translate`` attribute. |
| 398 Translatable Messages`_.) | 445 Translatable Messages`_.) |
| 399 | 446 |
| 400 At run time, Roundup automatically compiles message catalogs whenever | 447 At run time, Roundup automatically compiles message catalogs whenever |
| 401 `PO`_ file is changed. | 448 `PO`_ file is changed. |
| 402 | 449 |
| 450 .. [1] Roundup is written in Python and we believe in using tools in | |
| 451 the Python ecosystem whenever possible. | |
| 452 | |
| 453 | |
| 454 | |
| 403 .. _`Customising Roundup`: customizing.html | 455 .. _`Customising Roundup`: customizing.html |
| 404 .. _`Roundup's Design Document`: spec.html | 456 .. _`Roundup's Design Document`: spec.html |
| 405 .. _`implementation notes`: implementation.html | 457 .. _`implementation notes`: implementation.html |
| 406 | 458 |
| 407 | 459 |
| 408 .. _External hyperlink targets: | 460 .. _External hyperlink targets: |
| 409 | 461 |
| 410 .. _alexander smishlajev: | 462 .. _alexander smishlajev: |
| 411 .. _als: https://sourceforge.net/u/a1s/profile/ | 463 .. _als: https://sourceforge.net/u/a1s/profile/ |
| 464 .. _CodeCov: https://app.codecov.io/gh/roundup-tracker/roundup | |
| 465 .. _copy of the mercurial repository on GitHub: | |
| 466 https://github.com/roundup-tracker/roundup | |
| 467 .. _Coveralls: https://coveralls.io/github/roundup-tracker/roundup | |
| 412 .. _cygwin: https://www.cygwin.com/ | 468 .. _cygwin: https://www.cygwin.com/ |
| 413 .. _emacs: https://www.gnu.org/software/emacs/ | 469 .. _emacs: https://www.gnu.org/software/emacs/ |
| 414 .. _gettext package: http://www.gnu.org/savannah-checkouts/gnu/gettext/manual/gettext.html | 470 .. _flake8: https://flake8.pycqa.org/en/latest/ |
| 471 .. _gettext package: https://www.gnu.org/savannah-checkouts/gnu/gettext/manual/gettext.html | |
| 415 .. _gettext module: https://docs.python.org/2/library/gettext.html | 472 .. _gettext module: https://docs.python.org/2/library/gettext.html |
| 416 .. _GNU: http://www.gnu.org/ | 473 .. _GitHub Actions: https://github.com/roundup-tracker/roundup/actions |
| 417 .. _GNU mirror sites: http://www.gnu.org/prep/ftp.html | 474 .. _GNU: https://www.gnu.org/ |
| 475 .. _GNU mirror sites: https://www.gnu.org/prep/ftp.html | |
| 476 .. _hosted at sourceforge: | |
| 477 https://sourceforge.net/p/roundup/code/ci/default/tree/ | |
| 418 .. _issue tracker: https://issues.roundup-tracker.org/ | 478 .. _issue tracker: https://issues.roundup-tracker.org/ |
| 419 .. _Lokalize: https://apps.kde.org/lokalize/ | 479 .. _Lokalize: https://apps.kde.org/lokalize/ |
| 420 .. _KDE: https://kde.org/ | 480 .. _KDE: https://kde.org/ |
| 421 .. _linux: https://www.linux.org/ | 481 .. _linux: https://www.linux.org/ |
| 482 .. _Mercurial distributed version control system (DVCS): | |
| 483 https://www.mercurial-scm.org/ | |
| 422 .. _Plural Forms: | 484 .. _Plural Forms: |
| 423 http://www.gnu.org/savannah-checkouts/gnu/gettext/manual/gettext.html | 485 https://www.gnu.org/savannah-checkouts/gnu/gettext/manual/gettext.html |
| 424 .. _po filetype plugin: | 486 .. _po filetype plugin: |
| 425 https://vim.sourceforge.io/scripts/script.php?script_id=695 | 487 https://vim.sourceforge.io/scripts/script.php?script_id=695 |
| 426 .. _PO utilities: https://github.com/pinard/po-utils | 488 .. _PO utilities: https://github.com/pinard/po-utils |
| 427 .. _poEdit: https://poedit.net/ | 489 .. _poEdit: https://poedit.net/ |
| 490 .. _pylint: https://pylint.pycqa.org/en/latest/ | |
| 428 .. _Roundup Source: | 491 .. _Roundup Source: |
| 429 .. _Roundup source distribution: | 492 .. _Roundup source distribution: |
| 430 .. _Roundup binary distribution: | 493 .. _Roundup binary distribution: |
| 431 https://sourceforge.net/projects/roundup/files/ | 494 https://sourceforge.net/projects/roundup/files/ |
| 432 .. _roundup-devel mailing list: | 495 .. _roundup-devel mailing list: |
| 433 https://sourceforge.net/projects/roundup/lists/roundup-devel | 496 https://sourceforge.net/projects/roundup/lists/roundup-devel |
| 497 .. _StarterTicket on https://issues.roundup-tracker.org: | |
| 498 https://issues.roundup-tracker.org/issue?@columns=title,id,activity,status&@sort=activity&@filter=status,keywords&status=-1,1,2&keywords=15&@dispname=Starter%20tickets | |
| 434 .. _TAL: | 499 .. _TAL: |
| 435 .. _Template Attribute Language: | 500 .. _Template Attribute Language: |
| 436 https://pagetemplates.readthedocs.io/en/latest/history/TALSpecification14.html | 501 https://pagetemplates.readthedocs.io/en/latest/history/TALSpecification14.html |
| 437 .. _TALES: | 502 .. _TALES: |
| 438 .. _Template Attribute Language Expression Syntax: | 503 .. _Template Attribute Language Expression Syntax: |
| 439 https://pagetemplates.readthedocs.io/en/latest/history/TALESSpecification13.html | 504 https://pagetemplates.readthedocs.io/en/latest/history/TALESSpecification13.html |
| 505 .. _TravisCI: https://app.travis-ci.com/github/roundup-tracker/roundup | |
| 440 .. _vim: https://www.vim.org/ | 506 .. _vim: https://www.vim.org/ |
| 441 .. _ZPTInternationalization: http://grok.zope.org/documentation/how-to/how-to-internationalize-your-application/view | 507 .. _ZPTInternationalization: http://grok.zope.org/documentation/how-to/how-to-internationalize-your-application/view |
