new blog post: sources.d.n advanced search and other news
[homepage.git] / blog / posts / 2013 / 09 / sources.debian.net_-_advanced_search_and_other_news.mdwn
1 # all your ctag (and checksum) are belong to us
2
3 A few months after the
4 [[initial announcement|07/introducing_sources.debian.net]], here are some news
5 about the [sources.d.n](http://sources.debian.net) service. I've been late in
6 blogging this, but most of it has been implemented by myself and Matthieu
7 Caneill during [DebConf13](http://debconf13.debconf.org/), which has been a
8 great DebConf, totally exceeding my expectations (and they were already fairly
9 high!).
10
11 First, you might have noticed some *user-visible changes*:
12
13 - there is now an
14   [**advanced search** page](http://sources.debian.net/advancedsearch/), which
15   complements the already existing
16   [regex code search](http://codesearch.debian.net/) with the possibility of
17   searching source files by their **sha256**, or the **ctags** defined therein
18   
19 - on the same topic, when browsing through a package and using regex search,
20   you'll now search by default within *that* package, allowing to focus your
21   searches more easily than before. (You can easily override this by editing
22   the search box and removing the `package:` predicate.)
23
24 - for the data geeks (or the wannabe host), there are now
25   [**disk usage stats**](http://sources.debian.net/about/stats/) (note that
26   they don't include the database size, though, see below for that)
27
28 - the website also got a significant **facelift**, as part of which we have
29   moved the detailed explanations of what the service is about out of your
30   way. You now immediately get to the various browsing options.
31
32 On the other hand, *under the hood*:
33
34 - to implement ctags and sha256 searches we needed a serious DBMS, so we
35   switched from SQLite to **PostgreSQL**.
36   
37   Again, for the data geek: storing ctags/sha256 for all of sources.d.n content
38   with decent indexes takes about 37 GB, for about 160 million rows in the
39   ctags table and 20 million rows in the checksums one. (Currently filenames
40   are duplicated between the two tables so, probably, the DB disk size might be
41   reduced some.)
42
43 - together with the switch to a serious DBMS, the update logics has been
44   completely rewritten in Python (from Bash...), and should now be entirely
45   transactional.
46
47 - ... and given it was going to be Python anyhow, better to enjoy what it has
48   to offer, no? So there is now a **plugin mechanism** that makes it easier to
49   add extra data extractors, triggering them at each package update. Currently
50   there are plugins for sha256sum, ctags, and sloccount (even though the latter
51   is not yet exposed via the web interface). An added benefit of this is that
52   if you want to deploy debsources elsewhere, you can easily disable the most
53   time consuming extractors: running ctags *and* sha256sum on the fabulous 3
54   chromium/libreoffice/linux is not for the faint of disks...
55
56 - we now receive **push updates** from the Debian mirror network, so that
57   you'll get updates on sources.d.n as soon as a package hits Debian mirrors (+
58   processing time, which is about 15-20 minutes on the average update run).
59   Many thanks to Simon Paillard and Adam Lackorzynski for their help in setting
60   this up.
61
62 - thanks to a [suggestion by kugel](https://lwn.net/Articles/557371/) we have
63   adopted [Geany](http://www.geany.org/)'s conventions for filetype detection,
64   and we now take into account both file extensions and shebang lines (when
65   available)
66
67 As you usual, your bug reports (and patches!) are more than welcome, just check
68 [BUGS](http://anonscm.debian.org/gitweb/?p=qa/debsources.git;a=blob;f=BUGS;hb=refs/heads/bugs)
69 before reporting to avoid duplicates.<br /> That's all!
70
71 [[!tag lang/english planet-debian debian qa debsources]]