unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* How to deal with GPL paper when the contributer can not contact with?
@ 2020-09-25  1:36 tumashu
  2020-09-25  2:40 ` Stefan Monnier
  2020-09-26  4:32 ` Richard Stallman
  0 siblings, 2 replies; 6+ messages in thread
From: tumashu @ 2020-09-25  1:36 UTC (permalink / raw)
  To: emacs-devel


Hello:

     When I move ivy-posframe (https://github.com/tumashu/ivy-posframe) to gnu-elpa,  
I can not contact with a contributer , and I do not know his GPL paper status.

1. his patchs: https://github.com/tumashu/ivy-posframe/commits?author=noctuid
2. The length of his patchs is  > 15 lines.
2.  his patchs are rewrite ivy.el and swiper.el's exist functions, so many code of his patch come from  ivy.el and swiper.el,  ivy.el and swiper.el are gnu-elpa packages.

How should I do?  wait or elimit his commit?

Other info:
1. https://github.com/tumashu/ivy-posframe
2. https://github.com/tumashu/ivy-posframe/issues/95#issuecomment-698649551

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: How to deal with GPL paper when the contributer can not contact with?
  2020-09-25  1:36 How to deal with GPL paper when the contributer can not contact with? tumashu
@ 2020-09-25  2:40 ` Stefan Monnier
  2020-09-25  4:07   ` tumashu
  2020-09-26  4:32 ` Richard Stallman
  1 sibling, 1 reply; 6+ messages in thread
From: Stefan Monnier @ 2020-09-25  2:40 UTC (permalink / raw)
  To: tumashu; +Cc: emacs-devel

>      When I move ivy-posframe (https://github.com/tumashu/ivy-posframe) to gnu-elpa,  
> I can not contact with a contributer , and I do not know his GPL paper status.
>
> 1. his patchs: https://github.com/tumashu/ivy-posframe/commits?author=noctuid
> 2. The length of his patchs is  > 15 lines.

Indeed, looking at those patches makes it sound like they're not quite
trivial enough.

I've also sometimes found it difficult to get in touch with some people.
Filing an issue in their repository is an alternative way to contact
them (which I have never tried, tho, because I prefer to keep my github
use to a minimum).

> 2.  his patchs are rewrite ivy.el and swiper.el's exist functions, so many
> code of his patch come from  ivy.el and swiper.el,  ivy.el and swiper.el are
> gnu-elpa packages.

Maybe if you decompose his patches into "copy code from gnu-elpa" (his
copyright doesn't apply to this) and then "modify that new code"
(copyright does apply to that), the end result is simple enough to pass
the "15 lines or so" test.

Then again, copying code is better avoided, so maybe you can rewrite his
changes in such a way that they make use of (i.e. share code with)
ivy/swiper code rather than copying it.  That would circumvent the
problem and improve the code at the same time.


        Stefan




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re:Re: How to deal with GPL paper when the contributer can not contact with?
  2020-09-25  2:40 ` Stefan Monnier
@ 2020-09-25  4:07   ` tumashu
  0 siblings, 0 replies; 6+ messages in thread
From: tumashu @ 2020-09-25  4:07 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel@gnu.org






At 2020-09-25 10:40:39, "Stefan Monnier" <monnier@iro.umontreal.ca> wrote:
>>      When I move ivy-posframe (https://github.com/tumashu/ivy-posframe) to gnu-elpa,  
>> I can not contact with a contributer , and I do not know his GPL paper status.
>>
>> 1. his patchs: https://github.com/tumashu/ivy-posframe/commits?author=noctuid
>> 2. The length of his patchs is  > 15 lines.
>
>Indeed, looking at those patches makes it sound like they're not quite
>trivial enough.
>
>I've also sometimes found it difficult to get in touch with some people.
>Filing an issue in their repository is an alternative way to contact
>them (which I have never tried, tho, because I prefer to keep my github
>use to a minimum).
>
>> 2.  his patchs are rewrite ivy.el and swiper.el's exist functions, so many
>> code of his patch come from  ivy.el and swiper.el,  ivy.el and swiper.el are
>> gnu-elpa packages.
>
>Maybe if you decompose his patches into "copy code from gnu-elpa" (his
>copyright doesn't apply to this) and then "modify that new code"
>(copyright does apply to that), the end result is simple enough to pass
>the "15 lines or so" test.

In his patch, I think using code from ivy.el and swiper.el is a normal thing,
for ivy-posframe-swiper-avy  is  just posframe version ivy-swiper-avy 
 and ivy-posframe-avy  is posframe version ivy-avy,

If I were him, I will do same thing :-)  because ivy-posframe is a melpa 
package at that time,  no need consider gpl paper. :-) 


>
>Then again, copying code is better avoided, so maybe you can rewrite his
>changes in such a way that they make use of (i.e. share code with)
>ivy/swiper code rather than copying it.  That would circumvent the
>problem and improve the code at the same time.
>
>
>        Stefan
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: How to deal with GPL paper when the contributer can not contact with?
  2020-09-25  1:36 How to deal with GPL paper when the contributer can not contact with? tumashu
  2020-09-25  2:40 ` Stefan Monnier
@ 2020-09-26  4:32 ` Richard Stallman
  2020-09-26  7:12   ` tumashu
  1 sibling, 1 reply; 6+ messages in thread
From: Richard Stallman @ 2020-09-26  4:32 UTC (permalink / raw)
  To: tumashu; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > 2.  his patchs are rewrite ivy.el and swiper.el's exist functions,
  > so many code of his patch come from ivy.el and swiper.el, ivy.el
  > and swiper.el are gnu-elpa packages.

  > How should I do?  wait or elimit his commit?

How many of those lines contain code he wrote?
There is no need to count the code that he left unchanged.

If what he wrote is short, and not crucial, then you can ignore
the copyright issue for that.

Or you can rewrite the code some other way.  It sounds like that
won't be a lot of work.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re:Re: How to deal with GPL paper when the contributer can not contact with?
  2020-09-26  4:32 ` Richard Stallman
@ 2020-09-26  7:12   ` tumashu
  2020-09-27  2:45     ` Richard Stallman
  0 siblings, 1 reply; 6+ messages in thread
From: tumashu @ 2020-09-26  7:12 UTC (permalink / raw)
  To: rms@gnu.org; +Cc: emacs-devel@gnu.org

















At 2020-09-26 12:32:21, "Richard Stallman" <rms@gnu.org> wrote:
>[[[ To any NSA and FBI agents reading my email: please consider    ]]]
>[[[ whether defending the US Constitution against all enemies,     ]]]
>[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
>  > 2.  his patchs are rewrite ivy.el and swiper.el's exist functions,
>  > so many code of his patch come from ivy.el and swiper.el, ivy.el
>  > and swiper.el are gnu-elpa packages.
>
>  > How should I do?  wait or elimit his commit?
>
>How many of those lines contain code he wrote?
>There is no need to count the code that he left unchanged.
>
>If what he wrote is short, and not crucial, then you can ignore
>the copyright issue for that.
>
>Or you can rewrite the code some other way.  It sounds like that
>won't be a lot of work.


1. ivy-posframe.el

;; (defun ivy-posframe--avy-action (pt)
;;   "Finish ivy session with the candidate at PT."
;;   (with-current-buffer ivy-posframe-buffer
;;     (ivy--done
;;      (substring-no-properties
;;       (nth (- (line-number-at-pos pt) 2) ivy--old-cands)))))

1. ivy.el (cdd7ada)

;; (defun ivy--avy-action (pt)
;;   (when (number-or-marker-p pt)
;;     (ivy--done
;;      (substring-no-properties
;;       (nth (- (line-number-at-pos pt) 2) ivy--old-cands)))))


about 3 lines
--------------------------------------------------------------------------

2. ivy-posframe.el

;; (defun ivy-posframe--window ()
;;   "Return the posframe window displaying `ivy-posframe-buffer'."
;;   (frame-selected-window
;;    (buffer-local-value 'posframe--frame
;;                        (get-buffer ivy-posframe-buffer))))


about 5 lines
-----------------------------------------------------------------------------

3. ivy-posframe.el
;; (defvar avy-all-windows)
;; (defvar avy-keys)
;; (defvar avy-keys-alist)
;; (defvar avy-style)
;; (defvar avy-styles-alist)
;; (defvar avy-action)
;; (declare-function avy--process "avy")
;; (declare-function avy--style-fn "avy")
;; (defun ivy-posframe-avy ()
;;   "Jump to one of the current ivy candidates."
;;   (interactive)
;;   (unless (require 'avy nil 'noerror)
;;     (error "Package avy isn't installed"))
;;   (unless (boundp 'avy-pre-action)
;;     (error "A newer version of avy is required for this command"))
;;   (let* ((avy-all-windows nil)
;;          (avy-keys (or (cdr (assq 'ivy-avy avy-keys-alist))
;;                        avy-keys))
;;          (avy-style (or (cdr (assq 'ivy-avy
;;                                    avy-styles-alist))
;;                         avy-style))
;;          ;; prevent default pre action, which calls
;;          ;; `select-frame-set-input-focus', deselecting the minibuffer and
;;          ;; causing `ivy-posframe-cleanup' to run prematurely
;;          (avy-pre-action #'ignore)
;;          (window (ivy-posframe--window))
;;          candidates)
;;     (with-current-buffer ivy-posframe-buffer
;;       (save-excursion
;;         (save-restriction
;;           (narrow-to-region
;;            (window-start window)
;;            (window-end window))
;;           (goto-char (point-min))
;;           (forward-line)
;;           (while (< (point) (point-max))
;;             (push (cons (point) window) candidates)
;;             (forward-line)))))
;;     (setq avy-action #'ivy-posframe--avy-action)
;;     (avy--process
;;      (nreverse candidates)
;;      (avy--style-fn avy-style))))


3. ivy.el (cdd7ada)
;; (defun ivy-avy ()
;;   "Jump to one of the current ivy candidates."
;;   (interactive)
;;   (unless (require 'avy nil 'noerror)
;;     (error "Package avy isn't installed"))
;;   (let* ((avy-all-windows nil)
;;          (avy-keys (or (cdr (assq 'ivy-avy avy-keys-alist))
;;                        avy-keys))
;;          (avy-style (or (cdr (assq 'ivy-avy avy-styles-alist))
;;                         avy-style))
;;          (avy-action #'ivy--avy-action))
;;     (avy--process
;;      (ivy--avy-candidates))))

;; (defun ivy--avy-candidates ()
;;   (let (candidates)
;;     (save-excursion
;;       (save-restriction
;;         (narrow-to-region
;;          (window-start)
;;          (window-end))
;;         (goto-char (point-min))
;;         (forward-line)
;;         (while (< (point) (point-max))
;;           (push
;;            (cons (point)
;;                  (selected-window))
;;            candidates)
;;           (forward-line))))
;;     (nreverse candidates)))

about 5 lines without count (defvar xxx)
------------------------------------------------------------------------------
4. ivy-posframe.el
;; (declare-function avy--make-backgrounds "avy")
;; (declare-function avy-window-list "avy")
;; (declare-function avy-read-de-bruijn "avy")
;; (declare-function avy-read "avy")
;; (declare-function avy-tree "avy")
;; (declare-function avy--overlay-post "avy")
;; (declare-function avy--remove-leading-chars "avy")
;; (declare-function avy-push-mark "avy")
;; (declare-function avy--done "avy")
;; (defun ivy-posframe--swiper-avy-candidate ()
;;   (let* ((avy-all-windows nil)
;;          ;; We'll have overlapping overlays, so we sort all the
;;          ;; overlays in the visible region by their start, and then
;;          ;; throw out non-Swiper overlays or overlapping Swiper
;;          ;; overlays.
;;          (visible-overlays (cl-sort (with-ivy-window
;;                                       (overlays-in (window-start)
;;                                                    (window-end)))
;;                                     #'< :key #'overlay-start))
;;          (min-overlay-start 0)
;;          (overlays-for-avy (cl-remove-if-not
;;                             (lambda (ov)
;;                               (when (and (>= (overlay-start ov)
;;                                              min-overlay-start)
;;                                          (memq (overlay-get ov 'face)
;;                                                swiper-faces))
;;                                 (setq min-overlay-start (overlay-start ov))))
;;                             visible-overlays))
;;          (offset (if (eq (ivy-state-caller ivy-last) 'swiper) 1 0))
;;          (window (ivy-posframe--window))
;;          (candidates (nconc
;;                       (mapcar (lambda (ov)
;;                                 (cons (overlay-start ov)
;;                                       (overlay-get ov 'window)))
;;                               overlays-for-avy)
;;                       (with-current-buffer ivy-posframe-buffer
;;                         (save-excursion
;;                           (save-restriction
;;                             (narrow-to-region (window-start window)
;;                                               (window-end window))
;;                             (goto-char (point-min))
;;                             (forward-line)
;;                             (let (cands)
;;                               (while (not (eobp))
;;                                 (push (cons (+ (point) offset) window)
;;                                       cands)
;;                                 (forward-line))
;;                               cands)))))))
;;     (unwind-protect
;;         (prog2
;;             (avy--make-backgrounds
;;              (append (avy-window-list)
;;                      (list (ivy-state-window ivy-last))))
;;             (if (eq avy-style 'de-bruijn)
;;                 (avy-read-de-bruijn candidates avy-keys)
;;               (avy-read (avy-tree candidates avy-keys)
;;                         #'avy--overlay-post
;;                         #'avy--remove-leading-chars))
;;           (avy-push-mark))
;;       (avy--done))))

4. ivy.el (cdd7ada)
;; (defun swiper--avy-candidate ()
;;   (let* ((avy-all-windows nil)
;;          ;; We'll have overlapping overlays, so we sort all the
;;          ;; overlays in the visible region by their start, and then
;;          ;; throw out non-Swiper overlays or overlapping Swiper
;;          ;; overlays.
;;          (visible-overlays (cl-sort (with-ivy-window
;;                                       (overlays-in (window-start)
;;                                                    (window-end)))
;;                                     #'< :key #'overlay-start))
;;          (min-overlay-start 0)
;;          (overlays-for-avy (cl-remove-if-not
;;                             (lambda (ov)
;;                               (when (and (>= (overlay-start ov)
;;                                              min-overlay-start)
;;                                          (memq (overlay-get ov 'face)
;;                                                swiper-faces))
;;                                 (setq min-overlay-start (overlay-start ov))))
;;                             visible-overlays))
;;          (offset (if (eq (ivy-state-caller ivy-last) 'swiper) 1 0))
;;          (candidates (nconc
;;                       (mapcar (lambda (ov)
;;                                 (cons (overlay-start ov)
;;                                       (overlay-get ov 'window)))
;;                               overlays-for-avy)
;;                       (save-excursion
;;                         (save-restriction
;;                           (narrow-to-region (window-start) (window-end))
;;                           (goto-char (point-min))
;;                           (forward-line)
;;                           (let ((win (selected-window))
;;                                 cands)
;;                             (while (not (eobp))
;;                               (push (cons (+ (point) offset) win)
;;                                     cands)
;;                               (forward-line))
;;                             cands))))))
;;     (unwind-protect
;;         (prog2
;;             (avy--make-backgrounds
;;              (append (avy-window-list)
;;                      (list (ivy-state-window ivy-last))))
;;             (if (eq avy-style 'de-bruijn)
;;                 (avy-read-de-bruijn candidates avy-keys)
;;               (avy-read (avy-tree candidates avy-keys)
;;                         #'avy--overlay-post
;;                         #'avy--remove-leading-chars))
;;           (avy-push-mark))
;;       (avy--done))))

about 3 line without count (defvar xxx)
-----------------------------------------------------------------


the rest code have been rewrite by me.



----------------------------------------------------------------




















>
>-- 
>Dr Richard Stallman
>Chief GNUisance of the GNU Project (https://gnu.org)
>Founder, Free Software Foundation (https://fsf.org)
>Internet Hall-of-Famer (https://internethalloffame.org)
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: How to deal with GPL paper when the contributer can not contact with?
  2020-09-26  7:12   ` tumashu
@ 2020-09-27  2:45     ` Richard Stallman
  0 siblings, 0 replies; 6+ messages in thread
From: Richard Stallman @ 2020-09-27  2:45 UTC (permalink / raw)
  To: tumashu; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

That seems to be 16 lines.   I think we don't need papers from him.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-09-27  2:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-09-25  1:36 How to deal with GPL paper when the contributer can not contact with? tumashu
2020-09-25  2:40 ` Stefan Monnier
2020-09-25  4:07   ` tumashu
2020-09-26  4:32 ` Richard Stallman
2020-09-26  7:12   ` tumashu
2020-09-27  2:45     ` Richard Stallman

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).