BUGS: forward 5 TODO issues to the Debian BTS
[qa/debsources.git] / BUGS
1 #    -*- mode: org -*-
2
3 **Note*: Debsources bugs are now at
4 https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=qa.debian.org;tag=debsources
5 The entries remaining below are in wait of triaging/forwarding there.
6
7 * TODO check-in derivatives from the census               :infra:derivatives:
8
9 * TODO update-debsources --trigger should skip update stages          :infra:
10   At the very least it should skip: update statistics, update charts, update
11   suites mappings. Should it become a separate tool? Or should we expose on the
12   cmdline the support to select individual update stages? (see updater.py)
13
14 * TODO suite test data: differentiate sid and jessie                   :test:
15   Currently, the set of packages in sid and jessie are exactly the same. Add
16   one or more packages which is in sid but not in jessie.
17
18 * TODO popup messages between lines instead of on the right       :web:popup:
19   - rationale #1: popups are invisible for very long source code lines
20     e.g.: http://sources.debian.net/src/vim/2:7.3.547-7/runtime/syntax/sicad.vim?hl=133&msg=133%3Atest%3Atest#L133
21   - rationale #2: it is the only sane way to show multiple pop-ups avoding
22     they clash with one another
23
24 * TODO multiple popup messages                                    :web:popup:
25   to be able to show multiple error( location)s on the same source file
26
27 * TODO qualified ctags                                   :plugin:ctags:infra:
28   Add --extra=+q to ctags invocation. "However, that this could potentially
29   more than double the size of the tag file". Bug report by Olly Betts
30   on #debian-devel.
31 ** benchmarks
32 *** computation time is ~10-15% slower with +q
33 *** size
34     - libreoffice (C++)
35       zack@tytso:~/ctags-bench/libreoffice-4.1.5$ wc ../libreoffice*ctags
36       561396   3872260  61123731 ../libreoffice-4.1.5.ctags
37       972942   6799455 117133590 ../libreoffice-4.1.5.extra+q.ctags
38     - chromium-browser (C/C++)
39       zack@tytso:~/ctags-bench/chromium-browser-32.0.1700.123$ wc ../chromium-browser*ctags
40       1618199  10931585 205005488 ../chromium-browser-32.0.1700.123.ctags
41       2472627  17064351 342772532 ../chromium-browser-32.0.1700.123.extra+q.ctags
42     - linux (C)
43       zack@tytso:~/ctags-bench/linux-3.12.9$ wc ../linux*ctags
44       2146431  14340875 208057034 ../linux-3.12.9.ctags
45       2610525  17780208 269391932 ../linux-3.12.9.extra+q.ctags
46 *** bottom line
47     it's doable, but will need to rerun all ctags indexing
48
49 * TODO debian cross reference (lxr.debian.net)                    :web:ctags:
50   A-la http://lxr.linux.no/ . Suggested by Pierre Habouzit. Main problem is of
51   scope, cross-ref is mostly reasonable within the same package; /possibly/
52   reasonable between dependent packages; largely unresonable among unrelated
53   packages. (Not to mention the risk of cross-referincing across different
54   languages; although we should have the info to avoid that...)
55
56 * TODO .pc/ exclusion should become a configuration entry      :web:browsing:
57   ..in a more general configuration variable in etc/webconfig.py. Similar to
58   HIGHLIGHT_CLASSES, although we probably don't need regex for exclusions. See
59   http://anonscm.debian.org/gitweb/?p=qa/debsources.git;a=blob;f=web/flask/app/models_app.py;hb=HEAD#l166
60
61 * TODO make web UI parts conditional on plugin enablement         :infra:web:
62
63 * TODO shutter effect                                       :web:hilight:css:
64   When we highlight a line, we have to use a display:inline tag (whose
65   rendering isn't cool, because an highlighted block doesn't have the
66   same width verywhere). With a display:blog tag, newlines are added
67   by the browser/highlight.js (?), because tags conflicts with
68   highlight.js tags (when a hl.js lexem is multiline).
69   Try to highlight lines 3-4 of this to see the bug:
70
71   def hello():
72      """aaa
73      aaa
74      """ zzz = 3
75
76   Edit: the browser close tags automatically, and since our tags
77   aren't correct (ie
78   <span class="string"><div class="highlight">foo</span></div>
79   ), closing display:block tags are inserted.
80
81  Debugging: maybe with inline-block and other css tricks
82
83 * TODO migrate to sources.debian.org                              :infra:dsa:
84   conversation started by Zack with DSA
85   Message-ID: <20131229152159.GA8400@upsilon.cc>
86
87 * TODO bulk ctags insertion traceback           :ctags:bulk:traceback:ATTACH:
88   :PROPERTIES:
89   :Attachments: 1.3.1-4.ctags
90   :ID:       b9a3371f-6e2d-4e60-82e4-9d7c7543ba86
91   :END:
92     Traceback (most recent call last):
93       File "bin/bulk-insert-ctags", line 94, in <module>
94         main(conf, ctagsfile=args.file)
95       File "bin/bulk-insert-ctags", line 73, in main
96         insert_ctags(conn, ctagsfile)
97       File "bin/bulk-insert-ctags", line 65, in insert_ctags
98         conn.execute(INSERT_CTAGS_Q, ctags)
99       File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1449, in execute
100         params)
101       File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1584, in _execute_clauseelement
102         compiled_sql, distilled_params
103       File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1698, in _execute_context
104         context)
105       File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1680, in _execute_context
106         context)
107       File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 328, in do_executemany
108         cursor.executemany(statement, parameters)
109     sqlalchemy.exc.ProgrammingError: (ProgrammingError) can't adapt type 'RowProxy' '\n    INSERT INTO ctags (version_id, tag, path, line, kind, language)\n    VALUES (%(version_id)s, %(tag)s, %(path)s, %(line)s, %(kind)s, %(language)s)\n    ' ({'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'is_absolute', 'path': <psycopg2._psycopg.Binary object at 0x2800248>, 'line': 51}, {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'absolute_or_prefix', 'path': <psycopg2._psycopg.Binary object at 0x2800200>, 'line': 57}, {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'showhelp', 'path': <psycopg2._psycopg.Binary object at 0x2800290>, 'line': 65}, {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'yorn', 'path': <psycopg2._psycopg.Binary object at 0x2800320>, 'line': 202}, {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'nory', 'path': <psycopg2._psycopg.Binary object at 0x2800368>, 'line': 207}, {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'message', 'path': <psycopg2._psycopg.Binary object at 0x28003b0>, 'line': 213}, {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'info', 'path': <psycopg2._psycopg.Binary object at 0x28003f8>, 'line': 214}, {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'warning', 'path': <psycopg2._psycopg.Binary object at 0x2800440>, 'line': 215}  ... displaying 10 of 436 total bound parameter sets ...  {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'duplex', 'path': <psycopg2._psycopg.Binary object at 0x2a11e18>, 'line': 734}, {'kind': 'f', 'language': 'sh', 'version_id': (38474,), 'tag': u'viewps', 'path': <psycopg2._psycopg.Binary object at 0x2a11e60>, 'line': 757})
110
111   test recipe (bulk):
112   - find /srv/debsources/sources -mindepth 4 -maxdepth 4 -name '*.ctags > ctags.txt
113   - while read f ; do bin/bulk-insert-ctags -c etc/config.batch.ini $f ; done < ctags.txt
114
115   test recipe (single file):
116   - bin/bulk-insert-ctags -c etc/config.batch.ini 1.3.1-4.ctags
117     (see attachment)
118
119 * TODO move queries for the web app in a separate file      :web:refactoring:
120   SQLAlchemy queries in models.py should be in a new file,
121   e.g. webqueries.py.
122
123 * TODO Produce RDF meta-data interlinked with the PTS'              :rdf:web:
124   The idea would be to generate machine parseable meta-data, as RDF,
125   through content-negociation which would allow to interlink source
126   package descriptions with those generated by the PTS
127   -- obergix@debian.org
128
129 * TODO refactor app/views.py                                     :web:python:
130   The GeneralView object should be inheritated to PaginationView, in
131   order for all routes which use pagination (ctags, checksums, etc) to
132   automatically have these features. In this case, the json view is
133   not paginated but the html view is.
134
135 * TODO ability to "edit" files                                          :web:
136   every file exposed should have a edit file (maybe only for some users) a-la
137   GitHub. The result of the edit actionn will be returned as debdiff against
138   the whole package, so that it could be submitted as an easy to import patch
139   to the Debian BTS. Bonus point (but more difficult): have real editing
140   sessions, in which more than one file could be edited.
141
142   Credit: Raphael Geissert after DebConf14 talk
143