From: Philip Kaludercic <philipk@posteo.net>
To: Jeremy Bryant <jb@jeremybryant.net>
Cc: Eli Zaretskii <eliz@gnu.org>, Justin Burkett <justin@burkett.cc>,
emacs-devel@gnu.org
Subject: Re: URGENT - which-key FSF contributor status
Date: Sat, 15 Jun 2024 09:05:52 +0000 [thread overview]
Message-ID: <87sexelgnj.fsf@posteo.net> (raw)
In-Reply-To: <87msp6o9o4.fsf@jeremybryant.net> (Jeremy Bryant's message of "Fri, 03 May 2024 22:41:31 +0100")
Jeremy Bryant <jb@jeremybryant.net> writes:
> Philip Kaludercic <philipk@posteo.net> writes:
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>>> From: Jeremy Bryant <jb@jeremybryant.net>
>>>> CC: Eli Zaretskii <eliz@gnu.org>, Philip Kaludercic <philipk@posteo.net>
>>>> Date: Thu, 02 May 2024 23:01:02 +0100
>>>>
>>>> Hi Justin,
>>>>
>>>> Prior to merging which-key and its history into Emacs core we need to
>>>> confirm that the contributors have indeed signed the FSF paperwork.
>>>> While this is a requirement of being ELPA it's up to the maintainer of
>>>> the package to check.
>>>>
>>>> Can you confirm?
>>>
>>> I can easily check who has an assignment on file and who doesn't. See
>>> below. Where I need help is with the contribution of those who do NOT
>>> have assignments. For each one of those, we need the total line count
>>> of non-trivial code changes they contributed, so we can decide whether
>>> their contributions present a copyright problem.
>>>
>>> Here's the list of contributors to which-key for whom I found no
>>> copyright assignment on file:
>>>
>>>> 16 Author: Bar Magal <barmagal@gmail.com>
>>>> 1 Author: Yunhao Zhao <yunhaozhaots@gmail.com>
>>>> 1 Author: Uros Perisic <uros.m.perisic@gmail.com>
>>>> 1 Author: N V <44036031+progfolio@users.noreply.github.com>
>>>> 1 Author: Hariharan R <hariharanrangasamy@gmail.com>
>>>> 1 Author: Frank Terbeck <ft@bewatermyfriend.org>
>>>> 1 Author: Duncan Burke <duncankburke@gmail.com>
>>>> 1 Author: D.K <beerandhot@gmail.com>
>>>> 1 Author: Colin Yates <colin@colinyates.co.uk>
>>>> 1 Author: Chris Perkins <chrisperkins99@gmail.com>
>>>> 1 Author: Celestial Nebula <41875671+CelestialNebula@users.noreply.github.com>
>>>> 1 Author: BlaCk_Void <alstjr7375@daum.net>
>>>> 1 Author: anis-semmar <78486514+anis-semmar@users.noreply.github.com>
>>>> 1 Author: Amory Meltzer <Amorymeltzer@gmail.com>
>>>
>>> If the notion of "line count of non-trivial code changes" presents a
>>> problem, feel free to email the diffs, and I will make the call.
>>
>> To my estimation, the above git log is suggestive and there are no
>> significant contributors besides Bar Magal (the others have 1-5 lines of
>> changes in the current code base).
>>
>> Here is an Occur buffer of the whitespace-insensitive vc-annotate buffer
>> with Bar's attributed lines:
>>
>> 111 matches for "Bar Magal" in buffer: *Annotate which-key.el (rev 1e89fa0)*
>> 57:2df42e2d (Bar Magal 2015-07-10 57) (defcustom which-key-idle-delay 1.0
>> 267:2df42e2d (Bar Magal 2015-07-10 267) :type '(radio (const :tag "Show in minibuffer" minibuffer)
>> 268:2df42e2d (Bar Magal 2015-07-10 268) (const :tag "Show in side window" side-window)
>> 290:2df42e2d (Bar Magal 2015-07-10 290) :type '(radio (const right)
>> 291:2df42e2d (Bar Magal 2015-07-10 291) (const bottom)
>> 292:2df42e2d (Bar Magal 2015-07-10 292) (const left)
>> 321:d9a9bd5a (Bar Magal 2015-07-09 321) This variable can also be a number between 0 and 1. In that case, it denotes
>> 687:02140265 (Bar Magal 2015-07-06 687) (defvar which-key--frame nil
>> 1122:688ba7ee (Bar Magal 2015-07-09 1122)
>> 1131:688ba7ee (Bar Magal 2015-07-09 1131) (let ((char-width (frame-char-width)))
>> 1132:688ba7ee (Bar Magal 2015-07-09 1132) (+ text-width
>> 1133:688ba7ee (Bar Magal 2015-07-09 1133) (/ (frame-fringe-width) char-width)
>> 1134:688ba7ee (Bar Magal 2015-07-09 1134) (/ (frame-scroll-bar-width) char-width)
>> 1136:315eeca5 (Bar Magal 2015-07-09 1136) ;; add padding to account for possible wide (unicode) characters
>> 1137:315eeca5 (Bar Magal 2015-07-09 1137) 3)))
>> 1138:688ba7ee (Bar Magal 2015-07-09 1138)
>> 1141:688ba7ee (Bar Magal 2015-07-09 1141) TOTAL-WIDTH is the desired total width of the window. The function calculates
>> 1142:688ba7ee (Bar Magal 2015-07-09 1142) what text width fits such a window. The calculation considers possible fringes
>> 1143:688ba7ee (Bar Magal 2015-07-09 1143) and scroll bars. This function assumes that the desired window has the same
>> 1144:688ba7ee (Bar Magal 2015-07-09 1144) character width as the frame."
>> 1145:688ba7ee (Bar Magal 2015-07-09 1145) (let ((char-width (frame-char-width)))
>> 1146:688ba7ee (Bar Magal 2015-07-09 1146) (- total-width
>> 1147:688ba7ee (Bar Magal 2015-07-09 1147) (/ (frame-fringe-width) char-width)
>> 1148:688ba7ee (Bar Magal 2015-07-09 1148) (/ (frame-scroll-bar-width) char-width)
>> 1150:315eeca5 (Bar Magal 2015-07-09 1150) ;; add padding to account for possible wide (unicode) characters
>> 1151:315eeca5 (Bar Magal 2015-07-09 1151) 3)))
>> 1152:688ba7ee (Bar Magal 2015-07-09 1152)
>> 1156:688ba7ee (Bar Magal 2015-07-09 1156)
>> 1160:688ba7ee (Bar Magal 2015-07-09 1160)
>> 1164:688ba7ee (Bar Magal 2015-07-09 1164)
>> 1166:d9a9bd5a (Bar Magal 2015-07-09 1166) "Return window total width.
>> 1167:d9a9bd5a (Bar Magal 2015-07-09 1167) If WIDTH-OR-PERCENTAGE is a whole number, return it unchanged. Otherwise, it
>> 1168:d9a9bd5a (Bar Magal 2015-07-09 1168) should be a percentage (a number between 0 and 1) out of the frame's width.
>> 1169:d9a9bd5a (Bar Magal 2015-07-09 1169) More precisely, it should be a percentage out of the frame's root window's
>> 1170:d9a9bd5a (Bar Magal 2015-07-09 1170) total width."
>> 1172:d9a9bd5a (Bar Magal 2015-07-09 1172) width-or-percentage
>> 1173:d9a9bd5a (Bar Magal 2015-07-09 1173) (round (* width-or-percentage (window-total-width (frame-root-window))))))
>> 1174:d9a9bd5a (Bar Magal 2015-07-09 1174)
>> 1176:d9a9bd5a (Bar Magal 2015-07-09 1176) "Return window total height.
>> 1177:d9a9bd5a (Bar Magal 2015-07-09 1177) If HEIGHT-OR-PERCENTAGE is a whole number, return it unchanged. Otherwise, it
>> 1178:d9a9bd5a (Bar Magal 2015-07-09 1178) should be a percentage (a number between 0 and 1) out of the frame's height.
>> 1179:d9a9bd5a (Bar Magal 2015-07-09 1179) More precisely, it should be a percentage out of the frame's root window's
>> 1180:d9a9bd5a (Bar Magal 2015-07-09 1180) total height."
>> 1182:d9a9bd5a (Bar Magal 2015-07-09 1182) height-or-percentage
>> 1183:d9a9bd5a (Bar Magal 2015-07-09 1183) (round (* height-or-percentage (window-total-height (frame-root-window))))))
>> 1184:d9a9bd5a (Bar Magal 2015-07-09 1184)
>> 1195:67065197 (Bar Magal 2015-07-05 1195)
>> 1208:02140265 (Bar Magal 2015-07-06 1208)
>> 1225:67065197 (Bar Magal 2015-07-05 1225) (when (buffer-live-p which-key--buffer)
>> 1226:02140265 (Bar Magal 2015-07-06 1226) ;; in case which-key buffer was shown in an existing window, `quit-window'
>> 1227:02140265 (Bar Magal 2015-07-06 1227) ;; will re-show the previous buffer, instead of closing the window
>> 1233:02140265 (Bar Magal 2015-07-06 1233)
>> 1236:02140265 (Bar Magal 2015-07-06 1236) (when (frame-live-p which-key--frame)
>> 1237:02140265 (Bar Magal 2015-07-06 1237) (delete-frame which-key--frame)))
>> 1259:67065197 (Bar Magal 2015-07-05 1259)
>> 1267:315eeca5 (Bar Magal 2015-07-09 1267) (apply #'fit-window-to-buffer window params)))
>> 1268:315eeca5 (Bar Magal 2015-07-09 1268)
>> 1302:02140265 (Bar Magal 2015-07-06 1302)
>> 1306:35a171ef (Bar Magal 2015-07-06 1306) (frame-height (+ (car act-popup-dim)
>> 1307:35a171ef (Bar Magal 2015-07-06 1307) (if (with-current-buffer which-key--buffer
>> 1308:35a171ef (Bar Magal 2015-07-06 1308) mode-line-format)
>> 1309:35a171ef (Bar Magal 2015-07-06 1309) 1
>> 1310:35a171ef (Bar Magal 2015-07-06 1310) 0)))
>> 1311:35a171ef (Bar Magal 2015-07-06 1311) ;; without adding 2, frame sometimes isn't wide enough for the buffer.
>> 1312:35a171ef (Bar Magal 2015-07-06 1312) ;; this is probably because of the fringes. however, setting fringes
>> 1313:35a171ef (Bar Magal 2015-07-06 1313) ;; sizes to 0 (instead of adding 2) didn't always make the frame wide
>> 1314:35a171ef (Bar Magal 2015-07-06 1314) ;; enough. don't know why it is so.
>> 1315:35a171ef (Bar Magal 2015-07-06 1315) (frame-width (+ (cdr act-popup-dim) 2))
>> 1316:02140265 (Bar Magal 2015-07-06 1316) (new-window (if (and (frame-live-p which-key--frame)
>> 1317:02140265 (Bar Magal 2015-07-06 1317) (eq which-key--buffer
>> 1324:35a171ef (Bar Magal 2015-07-06 1324) (when new-window
>> 1325:35a171ef (Bar Magal 2015-07-06 1325) ;; display successful
>> 1326:02140265 (Bar Magal 2015-07-06 1326) (setq which-key--frame (window-frame new-window))
>> 1327:35a171ef (Bar Magal 2015-07-06 1327) new-window)))
>> 1328:02140265 (Bar Magal 2015-07-06 1328)
>> 1331:35a171ef (Bar Magal 2015-07-06 1331) (let* ((frame-params `((height . ,frame-height)
>> 1332:35a171ef (Bar Magal 2015-07-06 1332) (width . ,frame-width)
>> 1333:35a171ef (Bar Magal 2015-07-06 1333) ;; tell the window manager to respect the given sizes
>> 1334:35a171ef (Bar Magal 2015-07-06 1334) (user-size . t)
>> 1335:35a171ef (Bar Magal 2015-07-06 1335) ;; which-key frame doesn't need a minibuffer
>> 1336:35a171ef (Bar Magal 2015-07-06 1336) (minibuffer . nil)
>> 1337:35a171ef (Bar Magal 2015-07-06 1337) (name . "which-key")
>> 1338:35a171ef (Bar Magal 2015-07-06 1338) ;; no need for scroll bars in which-key frame
>> 1339:35a171ef (Bar Magal 2015-07-06 1339) (vertical-scroll-bars . nil)
>> 1340:35a171ef (Bar Magal 2015-07-06 1340) ;; (left-fringe . 0)
>> 1341:35a171ef (Bar Magal 2015-07-06 1341) ;; (right-fringe . 0)
>> 1342:35a171ef (Bar Magal 2015-07-06 1342) ;; (right-divider-width . 0)
>> 1343:35a171ef (Bar Magal 2015-07-06 1343) ;; make sure frame is visible
>> 1344:35a171ef (Bar Magal 2015-07-06 1344) (visibility . t)))
>> 1345:35a171ef (Bar Magal 2015-07-06 1345) (alist `((pop-up-frame-parameters . ,frame-params)))
>> 1346:35a171ef (Bar Magal 2015-07-06 1346) (orig-frame (selected-frame))
>> 1347:35a171ef (Bar Magal 2015-07-06 1347) (new-window (display-buffer-pop-up-frame which-key--buffer alist)))
>> 1348:35a171ef (Bar Magal 2015-07-06 1348) (when new-window
>> 1349:35a171ef (Bar Magal 2015-07-06 1349) ;; display successful
>> 1350:35a171ef (Bar Magal 2015-07-06 1350) (redirect-frame-focus (window-frame new-window) orig-frame)
>> 1351:35a171ef (Bar Magal 2015-07-06 1351) new-window)))
>> 1352:02140265 (Bar Magal 2015-07-06 1352)
>> 1355:35a171ef (Bar Magal 2015-07-06 1355) (let ((window
>> 1358:35a171ef (Bar Magal 2015-07-06 1358) (when window
>> 1359:35a171ef (Bar Magal 2015-07-06 1359) ;; display successful
>> 1360:35a171ef (Bar Magal 2015-07-06 1360) (set-frame-size (window-frame window) frame-width frame-height)
>> 1361:35a171ef (Bar Magal 2015-07-06 1361) window)))
>> 1362:67065197 (Bar Magal 2015-07-05 1362)
>> 1383:67065197 (Bar Magal 2015-07-05 1383) (if (floatp max-mini-window-height)
>> 1384:67065197 (Bar Magal 2015-07-05 1384) (floor (* (frame-text-lines)
>> 1385:67065197 (Bar Magal 2015-07-05 1385) max-mini-window-height))
>> 1409:d9a9bd5a (Bar Magal 2015-07-09 1409) which-key-side-window-max-width))
>> 1419:02140265 (Bar Magal 2015-07-06 1419) (cons which-key-frame-max-height which-key-frame-max-width))
>> 1420:02140265 (Bar Magal 2015-07-06 1420)
>> 2313:67065197 (Bar Magal 2015-07-05 2313) (with-current-buffer which-key--buffer
>> 2314:02140265 (Bar Magal 2015-07-06 2314) (erase-buffer)
>>
>>
>> What concerns me is that at least according to his GitHub profile[0],
>> there has been no activity since 2022, and almost no regular activity
>> since 2016-2017, so I cannot estimate how reliably we can contact him.
>>
>> Setting aside the issue of adding this to Emacs, the package should not
>> be in GNU ELPA if this is the case.
>>
>> [0] https://github.com/bmag
>>
>>> But please let's do this ASAP, as I don't want to delay the release
>>> branch creation, if possible.
>>>
>>> Thanks.
>
> Philip, thanks for checking - yes it appears to be a problem, I'll try and chase
> this 1 contributor.
(Adding emacs-devel)
We have found out that Bar has completed the CA. That means we can
proceed with adding which-key, perhaps even by Emacs 30 (Eli?)?
I think the best thing right now would be to collect all the patches in
a single message for a final review.
--
Philip Kaludercic on peregrine
next parent reply other threads:[~2024-06-15 9:05 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87le4r98m9.fsf@jeremybryant.net>
[not found] ` <86le4rjv9p.fsf@gnu.org>
[not found] ` <87a5l78kc0.fsf@posteo.net>
[not found] ` <87msp6o9o4.fsf@jeremybryant.net>
2024-06-15 9:05 ` Philip Kaludercic [this message]
2024-06-15 12:30 ` URGENT - which-key FSF contributor status Eli Zaretskii
2024-06-15 12:58 ` Philip Kaludercic
2024-06-15 14:36 ` Stefan Kangas
2024-06-18 19:06 ` Stefan Kangas
2024-06-18 19:23 ` Philip Kaludercic
2024-06-18 19:30 ` Stefan Kangas
2024-06-18 19:41 ` Philip Kaludercic
2024-06-18 19:42 ` Stefan Kangas
2024-06-18 21:41 ` Philip Kaludercic
2024-06-20 14:26 ` Justin Burkett
2024-06-20 18:25 ` Stefan Kangas
2024-06-20 19:22 ` Philip Kaludercic
2024-06-20 21:16 ` Justin Burkett
2024-06-20 21:45 ` Stefan Kangas
2024-06-15 15:19 ` Eli Zaretskii
2024-06-15 17:09 ` Philip Kaludercic
2024-06-15 17:42 ` Justin Burkett
2024-06-15 17:50 ` Eli Zaretskii
2024-06-18 8:49 ` Philip Kaludercic
2024-06-18 17:37 ` Eli Zaretskii
2024-06-16 19:07 ` Jeremy Bryant
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=87sexelgnj.fsf@posteo.net \
--to=philipk@posteo.net \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=jb@jeremybryant.net \
--cc=justin@burkett.cc \
/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).