aboutsummaryrefslogblamecommitdiff
path: root/README.org
blob: b0291958601df066550651cfa16e9e51cb7dd57f (plain) (tree)
1
2
3
4
5
6
7
8
9



                                                                

                                                                 


                                     
                                                                      
 






                                                                     
 
                         
 

                                                                
 








































                                                                      

                                                                             



                                                            
* librejserver: a server program serving librejs compliance info

*WIP - it does not work yet*.

The program should return librejs report for free javascript on a
given webpage.  It should return a JSON for a given url:

http://localhost:5678/https://fsf.org

This should return a JSON report of the compliance of https://fsf.org.

A proper version of this program should take user input of a url with
all free javascript (url to a webpage, not a javascript file), run
librejs compliance script on the url, and return the report to user.
If the user is ok for the report to be shared, it will also be added
to a database.  The server can then serve a filtered / sorted list of
urls by compliance, popularity etc.  This can help users discover
sites that are librejs-compliant.

** Purpose of the program

LibreJS does not recognise all free javascript. That is, every
javascript code or file falls under one of the three catogories:

1. Free and librejs-compliant - these scripts will be accepted by
   librejs and excuted.  Example: JS on most FSF/GNU pages.
2. Free and librejs-noncompliant - these scripts will be blocked by
   librejs.  Example: peertube instances
3. Nonfree javascript.  Example: YouTube web client.

To improve LibreJS coverage means to make it recognise more free
javascript so that the number of scripts in the first category
increase and that of the second category decreases.

To that end, we design a server program that maintain a database of
free scripts, that come from webpages whose urls are submitted by
users of this server.

Initially users should only submit webpages they believe contains only
free javascript, LibreJS-compliant or not. Ideally the user should be
able to explain why they think all the js on the page is free, e.g. it
is an instance of a free software web application.

With this, librejs devs can use this data and statistics to determine
how to update the compliance check to cover more free javascript. On
the other hand, LibreJS can include a functionality to download the
database from the librejserver, and add javascript to whitelist
depending on some threshold from the data (e.g. popularity of the
script based on user submission counts or upvotes).

** Possible problems

This sounds like an SaaSS. Users will let the server run the librejs
compliance script, which they can do on their own computer. However,
the main functionality of this server program is crowd-sourcing
LibreJS compliance info, similar to a wiki. Therefore, the compliance
script run on the server can be considered as a computation done by
the project which the user is part of.

Another possible problem is that without moderation or approval, user
may submit pages with nonfree javascript, intentionally or
unintentionally. This requires moderation or approval. Something
similar would be the FSD review process, but that would be too slow or
heavy. Perhaps the moderation can be done automatically using an
upvote / downvote functionality.

see also https://lists.gnu.org/archive/html/bug-librejs/2022-11/msg00003.html

** Acknowledgement

This document is improved thanks to conversations with iank.