taskSavannah Administration - Tasks: task #16050, Submission of the Quirk browser

 
 

task #16050: Submission of the Quirk browser

Submitter:  zamfofex <zamfofex>
Submitted:  Wed 29 Sep 2021 04:14:06 AM UTC
   
 
Should Start On:  Wed 29 Sep 2021 12:00:00 AM UTC Should be Finished on:  Sat 09 Oct 2021 12:00:00 AM UTC
Category:  Project Approval Priority:  * 5 - Normal
Status:  Cancelled Privacy:  Public
Assigned to:  ineiev Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Sun 21 Nov 2021 10:57:20 AM UTC, comment #11: 

Please check our requirements carefully again, fix your issues, and make a new request.

Ineiev <ineiev>
Site Administrator
Sat 20 Nov 2021 02:32:16 AM UTC, comment #10: 

Hello once again. I decided to read about the GPL more carefully, and I wanted to say that I think I had misunderstood what it means to be a “GPL‐compatible license”.

From what I was able to gather, contrary to my previous understanding, permissive free software licenses such as MIT/Expat and alike are indeed compatible with the GPL.

I’m really sorry for the misunderstanding. From that, I was able to conclude that my project does not actually have GPL‐incompatible dependencies! (From what I can see, at least.)

Is it possible to ask for this task to be reopened, or would I have to open a new one? Thanks in advance!

I can post a new tarball with the requested change (removing the FAL/LAL file), and I hope it can be accepted.

zamfofex <zamfofex>
Mon 15 Nov 2021 07:14:22 AM UTC, comment #9: 

Cancelling.

Ineiev <ineiev>
Site Administrator
Tue 26 Oct 2021 06:00:07 AM UTC, comment #8: 

comment #7:

> In my case, the only parts of the program that are GPL‐licensed are written by me, and I’m almost certaint that the GPL cannot constrain me from distributing my program in any way, because I wrote it myself.


Quite right; but you shouldn't distribute proprietary software, it would be unethical.

> In particular:
>
> - I don’t want to allow people to create derivations of my program that are proprietary.
> - I don’t mind if people can’t distribute the linked binaries of my program because of the non‐GPL‐compatible licensed dependencies.
> - However, I don’t want for it to be illegal for users to link and use my program by themselves because it has non‐GPL‐compatible dependencies.


You can add exceptions for certain libraries,
https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs

However, your users shan't be able to add third-party GPL'ed code without the same exceptions to your program; in other words, your program will be effectively GPL-incompatible, and GPL compatibility is a hosting requirement in Savannah.

Ineiev <ineiev>
Site Administrator
Mon 25 Oct 2021 09:02:24 PM UTC, comment #7: 

comment #6:

> This isn't correct.  It doesn't matter whether I link the binaries myself or leave that for my users,
> https://www.gnu.org/licenses/gpl-faq.html#NonfreeDriverKernelLinux


I see. In my case, the only parts of the program that are GPL‐licensed are written by me, and I’m almost certaint that the GPL cannot constrain me from distributing my program in any way, because I wrote it myself.

I’m worried about the effects applying the GPL to my program will have on its users, not on myself.

In particular:

- I don’t want to allow people to create derivations of my program that are proprietary.
- I don’t mind if people can’t distribute the linked binaries of my program because of the non‐GPL‐compatible licensed dependencies.
- However, I don’t want for it to be illegal for users to link and use my program by themselves because it has non‐GPL‐compatible dependencies.

I am not sure whether the last one is possible for a program distributed under the GPL with GPL‐incompatible licenses. And when I say “I’m not sure”, I mean it — I really don’t know.

Any advice about whether that is possible would be appreciated! But I will note once again that it is not trivial to replace the GPL‐incompatible dependencies, and you may cancel this task if that prevents my project from being hosted at Savannah.

Also, once again, I don’t think this is a matter of whether I am allowed to distribute Quirk, because I was the one who wrote it to begin with (and thus the license cannot constrain me). This is a matter of whether users would be legally allowed to compile and run it.

zamfofex <zamfofex>
Tue 19 Oct 2021 12:10:13 PM UTC, comment #6: 

comment #5:

> From my understanding, it is possible for a project distributed under the GPL to use GPL‐incompatible libraries, the same way that a GPL‐incompatible program may have dependencies distributed under the GPL (as long as people don’t distribute both together).


This isn't correct.  It doesn't matter whether I link the binaries myself or leave that for my users,
https://www.gnu.org/licenses/gpl-faq.html#NonfreeDriverKernelLinux

Ineiev <ineiev>
Site Administrator
Fri 15 Oct 2021 12:44:36 PM UTC, comment #5: 

From my understanding, it is possible for a project distributed under the GPL to use GPL‐incompatible libraries, the same way that a GPL‐incompatible program may have dependencies distributed under the GPL (as long as people don’t distribute both together).

But note that I plan to distribute only the source of my project, so the GPL‐incompatible libraries wouldn’t be distributed alongside it, and users would be required to build and link against them on their own terms. As far as I know, those are things that the GPL allows.

This admitedly means that some free software distributed under GPL‐incompatible licenses are required to build and run my program, but even then, users will be able to do so, because the linking occurs on their end, and the GPL allows that. (At least from my understanding.)

From what I understand, the GPL disallows people from sharing fully linked binaries of my project (or derivations thereof), because that would mean they would have to distribute GPL‐incompatible binaries alongside binaries derived from my source (which is under the GPL).

But also, as I mentioned, I also took the step of separating the GPL‐incompatible binaries out of the binaries created from my sources as part of the build process to help avoid people share them alongside each other. If someone wishes to share only the binaries from my sources, they can, but to be able to use them, the GPL‐incompatible binaries are also necessary (people can build those themselves).

My hope with using the GPL is to prevent source derivations from becoming proprietary.

Sorry if I misunderstood something! If it really is not possible for the project to be hosted because of the GPL‐incompatible dependencies, then I think it’s fine to resolve this task as cancelled, since the specific dependencies used are inherent to the design and approach taken by project as a whole, and it’s really nontrivial to replace or remove them.

In any way, thanks for the attention!

zamfofex <zamfofex>
Fri 15 Oct 2021 09:33:34 AM UTC, comment #4: 

comment #3:

> I see. Do you think it would be enough if I removed the file from the package?


Yes.

> Once I do remove the file, are there any other problems I should also look into?


You are right.  You say that your package has GPL-incompatible dependencies.  It means that your package will be GPL-incompatible.

Ineiev <ineiev>
Site Administrator
Fri 15 Oct 2021 09:07:22 AM UTC, comment #3: 

I see. Do you think it would be enough if I removed the file from the package? (It is only documentation, so removing it wouldn’t affect the project otherwise.) Once I do remove the file, are there any other problems I should also look into?

Thanks in advance!

zamfofex <zamfofex>
Thu 14 Oct 2021 11:27:57 AM UTC, comment #2: 

The Free Art License is incompatible with the GPL and the FDL.  We can't host packages that use it.

Ineiev <ineiev>
Site Administrator
Sat 02 Oct 2021 04:39:22 AM UTC, comment #1: 

For the sake of completion, I should note that standard C tools and libraries are also necessary dependencies. I have used GCC and glibc in my experimentations with Quirk, which are both GNU projects distributed under the GPL and the LGPL respectively.

In addition, commonplace tools available in unix operating systems such as GNU are also needed during the build process. Among those are “make”, “objcopy”, a POSIX shell (such as Bash, for example), and other basic utilities.

zamfofex <zamfofex>
Wed 29 Sep 2021 04:14:06 AM UTC, original submission:  

A new project has been registered at Savannah
This project account will remain inactive until a site admin approves
or discards the registration.


Registration Administration


While this item will be useful to track the registration process,
approving or discarding the registration must be done using the specific Group Administration page, accessible only to site administrators,
effectively logged as site administrators (superuser):



Registration Details


  • Name: the Quirk browser
  • System Name:  quirk
  • Type: non-GNU software and documentation
  • License: GNU General Public License v3 or later (The ‘layout.txt’ file is meant to be available under the FAL/LAL (“Free Art License”) rather than the GPL. See: https://artlibre.org


It has been under this license since I first wrote it, and I’m unsure about whether it would make sense to change it. Thoughts about what to do would be appreciated!

- - -

JSDOM and other dependencies from NPM are not released under a GPL-compatible license, most are released under MIT and other similar permissive licenses.

The build process for the project discourages people from distributing those dependencies alongside the project binaries by creating a shared library for them, rather than linking them statically with the executable.)




Description:

Quirk is a browser based on JSDOM.

The hope is to be able to leverage existent work put into JSDOM to create a full working browser. The biggest missing part being rendering.

JSDOM is an implementation of the DOM (which are the APIs provided to JavaScript by browsers), itself written in JavaScript.

JSDOM was created with Node in mind, but Quirk uses QuickJS as its JavaScript engine. Thus, Quirk also needs to provide the API of Node libraries for JSDOM to work.

The Node APIs are provided using a mixture of: (1) existent NPM libraries, and (2) code written specifically for Quirk, to interface with QuickJS and cURL.

Quirk is written in a mixture of C and JavaScript. The parts written in JavaScript are reduced to interfacing JavaScript with C. I believe it makes sense to write APIs targetting JavaScript usage in JavaScript itself, rather than in C.

Currently, Quirk only has a simple TUI display, but the hope is to also provide a GUI using Cairo at some point.

Some brief discussion about the current status of Quirk can be found in its readme in the attached tarball.


Other Software Required:

- cURL (uses its own license, derived from MIT)
  https://curl.se
- QuickJS (MIT license)
  https://bellard.org/quickjs/
- Node.js (MIT license)
  https://nodejs.org
- NPM (Artistic License 2.0)
  https://npmjs.com
- JSPM generator (MIT license)
  https://jspm.org
  https://github.com/jspm/generator

Node.js, NPM, and the JSPM generator are build-only dependencies, used to fetch NPM dependencies through JSPM. At runtime, Quirk uses QuickJS to run those JavaScript dependencies.

There are other dependencies too. Those include indirect dependencies of JSDOM, and also other NPM libraries used to allow JSDOM to work with QuickJS.


Other Comments:

The license header in each files was shortened for terseness. I believe that they are sufficient, but if this is unacceptable, I wouldn’t mind including the longer versions.

I prefer to avoid using my real name online, so the copyright notices use my pseudonym instead (“zamfofex”). I don’t mind mentioning my full real name in the readme if it is deemed necessary, but I’d rather avoid including it in each source file if possible.

The default URL used when no URL is passed to the command is https://cricket.piapiac.org/software/ which is my friend’s webpage.


Tarball URL:

https://zamfofex.neocities.org/quirk.tar.gz


zamfofex <zamfofex>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by ineiev (Posted a comment)
  • -email is unavailable- added by zamfofex (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2021-11-21 ineiev StatusIn Progress Cancelled
    2021-11-15 ineiev Open/ClosedOpen Closed
    2021-10-14 ineiev StatusNone In Progress
        Assigned toNone ineiev

    Back to the top

    Powered by Savane 3.13-caa5.
    Corresponding source code