Bug#771102: upstream license violation
Hi Ned, Formally yes, but see my response to #821237, whose action may moot the point. I'll update this bug with whatever info that one brings shortly. Best regards, Evan signature.asc Description: PGP signature
Bug#771102: upstream license violation
Hi Evan, I have not received a response from you regarding this bug since it was submitted last year. Are you still maintaining abduco in Debian? -- Ned T. Crigler
Bug#771102: upstream license violation
Control: tag -1 + confirmed Hi, Ned T. Crigler wrote: abduco is derived from dtach, According to the abduco upstream web page, it is only in many ways very similar, but not derived. I checked the initial import of abduco (commit 89cbbb3aa6aea7ca7410096aeacc3316a3532344) against dtach 0.8. I first checked it with dwdiff -c dtach-0.8/main.c abduco/abduco.c dwdiff -c dtach-0.8/attach.c abduco/client.c dwdiff -c dtach-0.8/master.c abduco/server.c dwdiff -c dtach-0.8/main.c abduco/server.c dwdiff -c dtach-0.8/master.c abduco/abduco.c and didn't find any similarities. Also the file listing does not look very similar: ls -l dtach-0.8 abduco abduco: total 52 -rw-r--r-- 1 abe abe 1574 Dec 4 13:55 abduco.1 -rw-r--r-- 1 abe abe 10121 Dec 4 13:55 abduco.c -rw-r--r-- 1 abe abe 3168 Dec 4 13:55 client.c -rw-r--r-- 1 abe abe72 Dec 4 13:55 config.def.h -rw-r--r-- 1 abe abe 364 Dec 4 13:55 config.mk -rw-r--r-- 1 abe abe 1780 Dec 4 13:55 debug.c -rw-r--r-- 1 abe abe 765 Dec 4 13:54 LICENSE -rw-r--r-- 1 abe abe 1544 Dec 4 13:55 Makefile -rw-r--r-- 1 abe abe 271 Dec 4 13:55 README -rw-r--r-- 1 abe abe 6661 Dec 4 13:55 server.c dtach-0.8: total 244 -rw-r--r-- 1 abe abe 5963 Jan 31 2008 attach.c -rw-r--r-- 1 abe abe 3513 Jan 31 2008 config.h.in -rwxr-xr-x 1 abe abe 155943 Jan 31 2008 configure* -rw-r--r-- 1 abe abe903 Jan 31 2008 configure.ac -rw-r--r-- 1 abe abe 17992 Jan 31 2008 COPYING -rw-r--r-- 1 abe abe 5204 Jan 31 2008 dtach.1 -rw-r--r-- 1 abe abe 2864 Jan 31 2008 dtach.h -rw-r--r-- 1 abe abe 3510 Jan 31 2008 dtach.spec -rw-r--r-- 1 abe abe 6692 Jan 31 2008 main.c -rw-r--r-- 1 abe abe953 Jan 31 2008 Makefile.in -rw-r--r-- 1 abe abe 14174 Jan 31 2008 master.c -rw-r--r-- 1 abe abe 7891 Jan 31 2008 README While abduco may be considered a rewrite of dtach that just has similar looking portions of code left in it, I then took similarity-tester (from Wheezy) and ran it as follows: → sim_c dtach-0.8/*.c / abduco/*.c File dtach-0.8/attach.c: 988 tokens File dtach-0.8/main.c: 844 tokens File dtach-0.8/master.c: 2600 tokens File /: separator File abduco/abduco.c: 2028 tokens File abduco/client.c: 774 tokens File abduco/debug.c: 394 tokens File abduco/server.c: 1554 tokens Total: 9182 tokens dtach-0.8/attach.c: line 45-62 |dtach-0.8/master.c: line 178-195 [76] fflush(stdout); | kill(-pty-pid, sig); } |} | /* Connects to a unix domain socket */ |/* Creates a new unix domain socket. * static int |static int connect_socket(char *name) |create_socket(char *name) { |{ int s;| int s; struct sockaddr_un sockun;| struct sockaddr_un sockun; | s = socket(PF_UNIX, SOCK_STREAM, 0); | s = socket(PF_UNIX, SOCK_STREAM, 0); if (s 0)| if (s 0) return -1; | return -1; sockun.sun_family = AF_UNIX; | sockun.sun_family = AF_UNIX; strcpy(sockun.sun_path, name);| strcpy(sockun.sun_path, name); if (connect(s, (struct sockaddr*)soc | if (bind(s, (struct sockaddr*)sockun { | { close(s);| close(s); dtach-0.8/attach.c: line 179-184 |abduco/abduco.c: line 316-321 [54] cur_term.c_iflag = ~(IXON|IXOFF);| cur_term.c_iflag = ~(IGNBRK|BRKINT|P cur_term.c_oflag = ~(OPOST); | cur_term.c_oflag = ~(OPOST); cur_term.c_lflag = ~(ECHO|ECHONL|ICA | cur_term.c_lflag = ~(ECHO|ECHONL|ICA cur_term.c_cflag = ~(CSIZE|PARENB); | cur_term.c_cflag = ~(CSIZE|PARENB); cur_term.c_cflag |= CS8; | cur_term.c_cflag |= CS8; cur_term.c_cc[VLNEXT] = VDISABLE; | cur_term.c_cc[VLNEXT] = _POSIX_VDISAB dtach-0.8/attach.c: line 166-175 |dtach-0.8/master.c: line 420-429 [46] atexit(restore_term); | atexit(unlink_socket); | /* Set some signals. */ | /* Set up some signals. */ signal(SIGPIPE, SIG_IGN); | signal(SIGPIPE, SIG_IGN); signal(SIGXFSZ, SIG_IGN); | signal(SIGXFSZ, SIG_IGN); signal(SIGHUP, die); | signal(SIGHUP, SIG_IGN); signal(SIGTERM, die); | signal(SIGTTIN, SIG_IGN); signal(SIGINT, die); | signal(SIGTTOU, SIG_IGN); signal(SIGQUIT, die); | signal(SIGINT, die); signal(SIGWINCH, win_change); | signal(SIGTERM, die); dtach-0.8/main.c: line 142-153 |dtach-0.8/main.c: line 164-175[42] else if (*p == 'e') | else if (*p == 'r') { | { ++argv; --argc;|++argv; --argc; if (argc 1) |if (argc 1) { |{
Bug#771102: upstream license violation
On Thu, Dec 04, 2014 at 02:39:34PM +0100, Axel Beckert wrote: So there are indeed a small number of code locations which look suspiciously similar. There are other similarities between the initial commit of abduco and dtach, such as the code declaring abduco's client to server protocol: [abduco/abduco.c lines 61-67] |[dtach-0.8/dtach.h lines 89-96] enum PacketType { |enum MSG_CONTENT = 0,|{ MSG_ATTACH = 1,|MSG_PUSH= 0, MSG_DETACH = 2,|MSG_ATTACH = 1, MSG_RESIZE = 3,|MSG_DETACH = 2, MSG_REDRAW = 4,|MSG_WINCH = 3, }; |MSG_REDRAW = 4, |}; [abduco/abduco.c lines 69-78] |[dtach-0.8/dtach.h lines 106-116] /* packet sent from client to server */ |/* The client to master protocol. */ typedef struct {|struct packet unsigned char type; |{ unsigned char len; |unsigned char type; union { |unsigned char len; char msg[sizeof(struct w|union insize)]; |{ struct winsize ws; |unsigned char buf[sizeo int i; |f(struct winsize)]; } u;|struct winsize ws; } ClientPacket; |} u; |}; and the same escape sequence trick that dtach uses to move to the bottom of the screen along with similar code for handling the suspend key: [abduco/abduco.c line 161] |[dtach-0.8/dtach.h line 128] fprintf(stdout, \e[999H\r\n); |#define EOS \033[999H [abduco/client.c lines 126-133] |[dtach-0.8/attach.c lines 105-115] } else i|if (!no_suspend (pkt-u.buf[ f (pkt.u.msg[0] == cur_term.c_cc[VSUSP])|0] == cur_term.c_cc[VSUSP])) { |{ |/* Tell the master that pkt.type = MSG_DETACH; | we are suspending. */ |pkt-type = MSG_DETACH; client_send_packet(pkt); |write(s, pkt, sizeof(st |ruct packet)); tcsetattr(0, TCSADRAIN, orig_term);| |/* And suspend... */ client_show_cursor(); |tcsetattr(0, TCSADRAIN, | orig_term); info(NULL); |printf(EOS \r\n); |kill(getpid(), SIGTSTP) kill(getpid(), SIGTSTP);|; |tcsetattr(0, TCSADRAIN, tcsetattr(0, TCSADRAIN, cur_term); | cur_term); Note that in abduco, client_send_packet(pkt) will write the raw contents of pkt to a socket, and info(NULL) will write the \e[999H\r\n escape sequence to stdout. It should also be mentioned that the initial reporter of this issue, Ned, is the author of dtach, see http://dtach.sourceforge.net/. I neither claim that this is a bad sign nor that this is a good sign. I though consider it suspicious that this was not mentioned in the original report, hence I think it's important to mention it myself. I'm not sure why this would be suspicious, however I do confirm that I am the author of dtach. -- Ned T. Crigler -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#771102: upstream license violation
Package: abduco Version: 0.1-2 Severity: serious Justification: Policy 2.3 Hi, abduco is derived from dtach, which is licensed under GPLv2. However, abduco is licensed under ISC with dtach's copyright notices removed. While abduco may be considered a rewrite of dtach that just has similar looking portions of code left in it, http://digital-law-online.info/lpdi1.0/treatise27.html says that: Many people have reimplemented computer programs by rewriting them to replace the source code with code of their own writing. There is no reason to believe that this would not be a copyright infringement, particularly if the reimplementer had access to the source code of the original program, even if none of the original source code remains. abduco should not be a part of Debian if it is violating dtach's copyright and license. -- Ned T. Crigler -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org