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

Roundup Issue Tracker: http://roundup-tracker.org/