From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: emacs-devel@gnu.org
Cc: Stefan Monnier <monnier@iro.umontreal.ca>
Subject: Re: [ELPA] New package: repology.el (v4)
Date: Tue, 19 Jan 2021 10:50:06 +0100 [thread overview]
Message-ID: <87eeih9rxt.fsf_-_@nicolasgoaziou.fr> (raw)
In-Reply-To: <jwvr1n0txte.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Mon, 04 Jan 2021 12:32:59 -0500")
Hello,
As announced a few days ago, and with the guidance of Stefan Monnier,
I tweaked "repology.el" so it is somewhat aware about freedom, and
cautious about what it displays.
TL;DR: it is currently located at <https://elpa.gnu.org/devel/repology.html>.
Here is its current commentary section. The third and fifth paragraphs
are of particular interest for the discussion.
This package provides tools to query Repology API
(<https://repology.org/api>), process results, and display them.
The results of a query revolve around three types of objects:
projects, packages and problems. Using this library, you can find
projects matching certain criteria, packages in a given project,
and possible problems in some repository. See `repology-search-projects',
`repology-lookup-project', and `repology-report-problems'.
Projects-related requests are limited to `repology-projects-limit'.
All requests are cached during `repology-cache-duration' seconds.
By default, only projects recognized as free are included in the search
results. You can control this behavior with the variable
`repology-free-only-projects'. The function `repology-check-freedom'
is responsible for guessing if a project, or a package, is free.
You can then access data from those various objects using dedicated
accessors. See, for example, `repology-project-name',
`repology-project-packages', `repology-package-field', or
`repology-problem-field'.
You can also decide to display (a subset of) results in a tabulated
list. See `repology-display-package', `repology-display-packages',
`repology-display-projects' and `repology-display-problems'. You
can control various aspects of the display, like the colors used
(see `repology-status-faces'), or the columns shown (see
`repology-display-packages-columns',`repology-display-projects-columns',
and `repology-display-problems-columns'). When projects or packages
are displayed, pressing <RET> gives you more information about the item
at point, whereas pressing <F> reports their "freedom" status.
For example, the following expression displays all outdated projects
named after "emacs" and containing a package in GNU Guix repository
that I do not ignore:
(repology-display-projects
(seq-filter (lambda (project)
(not (member (repology-project-name project)
my-ignored-projects)))
(repology-search-projects
:search "emacs" :inrepo "gnuguix" :outdated "on")))
Eventually, this library provides an interactive function with
a spartan interface wrapping this up: `repology'. Since it builds
and displays incrementally search filters, you may use it as
a template to create your own queries.
The library distinguishes between three categories of freedom for
projects/packages: free, non-free, and unknown. Out of the 200.000
projects from Repology, it currently considers that about 73.000 are
free, 300 are non-free, and the rest is unknown.
Out of the box, the interface now only displays projects _most likely
free_ (more in this below). It is also possible to configure it so it
displays both free and unknown categories, or everything.
The commentary section in "repology-license.el" explains how freedom
state is obtained:
This library provides the `repology-check-freedom' function, which returns
t when a package or a project can be considered as free, nil it is
identified as being non-free, and `unknown' otherwise.
The decision is made by polling a number of "Reference repositories",
defined in `repology-license-reference-repositories'. If the ratio of
"Free" votes is above `repology-license-poll-threshold', the project is
declared as free.
In order to see the results of each vote, and possibly debug the process,
you can set `repology-license-debug' to a non-nil value.
Currently, reference repositories are: Debian, Fedora, OpenSUSE, Gentoo,
Mageia, along with all FSF-endorsed distributions known to Repology: GNU
Guix, Hyperbola, Parabola, PureOS, and Trisquel. I also added GNU ELPA
as a specialized repository.
The poll threshold is set to 0.5, so a package/project needs a strict
majority of "Free" votes to be considered as free. As explained above,
it is possible to look at the vote results to understand the final
decision for each project.
I hope this is now more in line with GNU expectations. Let me know if
you have questions, or suggestions.
Regards,
--
Nicolas Goaziou
next prev parent reply other threads:[~2021-01-19 9:50 UTC|newest]
Thread overview: 145+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-30 16:23 [ELPA] New package: repology.el Nicolas Goaziou
2020-12-30 19:34 ` Jean Louis
2020-12-30 21:01 ` Clément Pit-Claudel
2020-12-31 13:31 ` Jean Louis
2020-12-31 11:46 ` Nicolas Goaziou
2020-12-31 13:11 ` Jean Louis
2020-12-31 20:30 ` Ulrich Mueller
2021-01-01 7:31 ` Richard Stallman
2021-01-01 10:05 ` Jean Louis
2021-01-01 11:56 ` Eli Zaretskii
2021-01-02 9:56 ` Jean Louis
2021-01-02 5:30 ` Richard Stallman
2021-01-04 12:09 ` Dmitry Gutov
2021-01-04 14:39 ` Alfred M. Szmidt
2021-01-04 15:00 ` Ulrich Mueller
2021-01-04 16:32 ` Alfred M. Szmidt
2021-01-05 6:45 ` Richard Stallman
2021-01-05 8:56 ` Alfred M. Szmidt
2021-01-07 7:34 ` Richard Stallman
2021-01-04 15:02 ` Dmitry Gutov
2021-01-04 16:29 ` Alfred M. Szmidt
2021-01-04 17:08 ` Dmitry Gutov
2021-01-04 17:12 ` Alfred M. Szmidt
2021-01-04 17:17 ` Dmitry Gutov
2021-01-04 17:58 ` Alfred M. Szmidt
2021-01-04 17:43 ` Clément Pit-Claudel
2021-01-04 17:55 ` Vasilij Schneidermann
2021-01-04 18:51 ` Clément Pit-Claudel
2021-01-04 22:21 ` Vasilij Schneidermann
2021-01-05 2:09 ` Stefan Monnier
2021-01-05 6:42 ` Richard Stallman
2021-01-05 9:28 ` Ulrich Mueller
2021-01-06 5:03 ` Richard Stallman
2021-01-06 9:44 ` Alfred M. Szmidt
2021-01-07 17:51 ` Richard Stallman
2021-01-04 19:14 ` Ulrich Mueller
2021-01-04 19:17 ` Clément Pit-Claudel
2021-01-06 5:02 ` Richard Stallman
2021-01-06 10:58 ` Dmitry Gutov
2021-01-06 14:41 ` Jean Louis
2021-01-06 14:59 ` Arthur Miller
2021-01-06 15:21 ` Jean Louis
2021-01-06 16:23 ` Arthur Miller
2021-01-06 18:53 ` Jean Louis
2021-01-06 19:26 ` Eli Zaretskii
2021-01-06 21:18 ` Alfred M. Szmidt
2021-01-06 21:25 ` Dmitry Gutov
2021-01-07 7:47 ` Richard Stallman
2021-01-07 8:54 ` Jean Louis
2021-01-07 14:07 ` Eli Zaretskii
2021-01-07 7:49 ` Richard Stallman
2021-01-07 11:41 ` Dmitry Gutov
2021-01-09 6:39 ` Richard Stallman
2021-01-09 10:50 ` Dmitry Gutov
2021-01-07 14:24 ` Eli Zaretskii
2021-01-07 8:15 ` Jean Louis
2021-01-07 14:37 ` Eli Zaretskii
2021-01-06 20:36 ` Arthur Miller
2021-01-07 7:48 ` Richard Stallman
2021-01-07 16:53 ` Arthur Miller
2021-01-14 5:21 ` Richard Stallman
2021-01-15 14:52 ` Arthur Miller
2021-01-16 5:14 ` Richard Stallman
2021-01-07 7:49 ` Richard Stallman
2021-01-07 9:00 ` Jean Louis
2021-01-08 6:21 ` Richard Stallman
2021-01-07 10:55 ` Ulrich Mueller
2021-01-09 6:34 ` Richard Stallman
2021-01-09 21:07 ` Ulrich Mueller
2021-01-11 4:46 ` Richard Stallman
2021-01-12 8:24 ` Ulrich Mueller
2021-01-20 6:14 ` Richard Stallman
2021-01-21 11:09 ` Ulrich Mueller
2021-01-22 6:06 ` Richard Stallman
2021-01-22 9:43 ` Ulrich Mueller
2021-01-24 6:35 ` Richard Stallman
2021-01-24 8:34 ` Ulrich Mueller
2021-01-25 5:53 ` Richard Stallman
2021-01-25 6:52 ` Jean Louis
2021-01-25 12:11 ` Fabrice BAUZAC-STEHLY
2021-01-25 15:29 ` Eli Zaretskii
2021-01-27 7:37 ` Richard Stallman
2021-01-25 15:51 ` Dmitry Gutov
2021-01-25 17:59 ` Jean Louis
2021-01-25 18:21 ` Dmitry Gutov
2021-01-26 3:40 ` Jean Louis
2021-01-26 6:10 ` Richard Stallman
2021-01-26 13:42 ` Stefan Monnier
2021-01-27 18:32 ` Jean Louis
2021-01-25 19:33 ` Eli Zaretskii
2021-01-25 19:38 ` Eli Zaretskii
2021-01-26 13:21 ` Richard Stallman
2021-01-26 5:59 ` Richard Stallman
2021-01-26 13:15 ` Dmitry Gutov
2021-01-27 7:41 ` Richard Stallman
2021-01-24 10:53 ` Org schemas we talked to be non-free, was: " Jean Louis
2021-01-24 17:50 ` Ulrich Mueller
2021-01-24 19:12 ` Jean Louis
2021-01-24 19:53 ` Eli Zaretskii
2021-01-24 20:36 ` Ulrich Mueller
2021-01-25 15:06 ` Eli Zaretskii
2021-01-26 6:01 ` Richard Stallman
2021-01-26 15:57 ` Eli Zaretskii
2021-01-26 16:03 ` Dmitry Gutov
2021-01-26 16:13 ` Eli Zaretskii
2021-01-26 16:14 ` Dmitry Gutov
2021-01-26 16:31 ` Eli Zaretskii
2021-01-26 22:55 ` Dmitry Gutov
2021-01-28 6:29 ` Richard Stallman
2021-01-28 14:08 ` Eli Zaretskii
2021-01-29 6:36 ` Richard Stallman
2021-01-24 20:47 ` Jean Louis
2021-01-25 15:13 ` Eli Zaretskii
2021-01-25 17:50 ` Jean Louis
2021-01-25 17:56 ` Jean Louis
2021-01-25 19:27 ` Eli Zaretskii
2021-01-26 3:50 ` Jean Louis
2021-01-26 6:09 ` Richard Stallman
2021-01-25 20:10 ` Ulrich Mueller
2021-01-25 20:21 ` Eli Zaretskii
2021-01-26 6:09 ` Richard Stallman
2021-01-25 5:53 ` Richard Stallman
2021-01-25 15:27 ` Eli Zaretskii
2021-01-24 20:46 ` tomas
2021-01-27 7:35 ` Richard Stallman
2021-01-25 5:53 ` Richard Stallman
2021-01-25 9:27 ` Ulrich Mueller
2021-01-26 6:03 ` Richard Stallman
2021-01-26 9:24 ` Ulrich Mueller
2021-01-27 7:43 ` Richard Stallman
2021-01-26 15:43 ` Jose A. Ortega Ruiz
2021-01-26 16:48 ` Kévin Le Gouguec
2021-01-28 6:34 ` Richard Stallman
2021-01-25 5:51 ` Richard Stallman
2021-02-16 5:21 ` freedom issues in free software Richard Stallman
2021-01-07 15:05 ` [ELPA] New package: repology.el Stefan Monnier
2021-01-13 15:57 ` Richard Stallman
2021-01-05 6:33 ` Richard Stallman
2021-01-05 11:21 ` Dmitry Gutov
2021-01-07 7:32 ` Richard Stallman
2020-12-30 21:58 ` [ELPA] New package: repology.el (v2) Nicolas Goaziou
2021-01-04 11:45 ` [ELPA] New package: repology.el (v3) Nicolas Goaziou
2021-01-04 17:32 ` Stefan Monnier
2021-01-19 9:50 ` Nicolas Goaziou [this message]
2021-01-20 6:13 ` [ELPA] New package: repology.el (v4) Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87eeih9rxt.fsf_-_@nicolasgoaziou.fr \
--to=mail@nicolasgoaziou.fr \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).