Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Achieve at least a "C" on GNU ethical repository criteria #1524

Closed
9 tasks done
lofidevops opened this issue Apr 20, 2017 · 25 comments
Closed
9 tasks done

Achieve at least a "C" on GNU ethical repository criteria #1524

lofidevops opened this issue Apr 20, 2017 · 25 comments
Labels
issue/stale type/docs This PR mainly updates/creates documentation

Comments

@lofidevops
Copy link

lofidevops commented Apr 20, 2017

  • Gitea version (or commit ref): 1.1.0
  • Can you reproduce the bug at https://try.gitea.io: Yes (homepage)
  • Log gist: N/A

Description

The GNU ethical repository criteria are used to evaluate whether a code host is suitable for hosting free software (aka open source). This mainly means making sure the host itself doesn't require or host proprietary software. At the time of writing Savannah and GitLab have passing grades, while SourceForge and GitHub do not.

At the moment Gitea fails because it uses JavaScript that is not labelled as free software. See #1484 for details.

Checklist

  • All important site functionality works correctly in free browsers, including IceCat, without running any nonfree software sent by the site. (C0) Passed (C0.0)

  • Any JavaScript used by an important site function either (1) is free software, and labeled properly for LibreJS to recognize as free, or (2) isn't necessary, so that the function works properly even if JavaScript is disabled in the browser. (C0.0) Passed. See https://try.gitea.io/vendor/librejs.html

  • Regarding sending code that executes based on a platform other than JavaScript, those conditions apply, mutatis mutandis. (C0.1) Not applicable.

  • No other nonfree software is required to use the site (thus, no Flash). (C1) Passed.

  • Does not discriminate against classes of users, or against any country. (C2) Passed.

  • Permits access via Tor (we consider this an important site function). (C3) Passed

  • The site's terms of service contain no odious conditions. (C4) Not applicable. No default/built-in TOS. Would be determined by a concrete instance.

  • Recommends and encourages GPL 3-or-later licensing at least as much as any other kind of licensing. (C5) Passed. No explicit recommendation, but offers to add the full license text to a new repository.

  • Support HTTPS properly and securely, including the site's certificates. (C6) Passed. Tested with https://www.ssllabs.com/ssltest/analyze.html?d=try.gitea.io

Next steps

  1. Resolve JavaScript issues
    1.1. Complete Unsourced/undocumented libraries; missing license files; and other issues #1484
    1.2. Generate new LibreJS report Yes: results in Unsourced/undocumented libraries; missing license files; and other issues #1484
    1.3. Confirm librejs.html exists Yes: https://try.gitea.io/vendor/librejs.html
  2. Check other "C" grade criteria, summarised above. Full details at https://www.gnu.org/software/repo-criteria.html#C
  3. Resolve any other issues
  4. Submit news to https://lists.gnu.org/archive/html/repo-criteria-discuss/ mailing list.
@strk
Copy link
Member

strk commented Apr 20, 2017

The LibreJS issue is already reported in #1484

Beside that, GNU ethical repository hosting criteria are for services, not software.

@lunny lunny added the type/docs This PR mainly updates/creates documentation label Apr 20, 2017
@lofidevops
Copy link
Author

lofidevops commented Apr 21, 2017

Apologies for the duplication on the LibreJS issue. I've moved those details to the relevant ticket.

There is interest on the ethical repository mailing list in evaluating options for self-hosting, although there is no formal procedure as yet. I picked https://try.gitea.io as a test-case. I'll update with any feedback from the mailing list.

@bkcsoft
Copy link
Member

bkcsoft commented Apr 26, 2017

C0: All important site functionality works correctly in free browsers, including IceCat, without running any nonfree software sent by the site.
C0.0: Any JavaScript used by an important site function (2) isn't necessary, so that the function works properly even if JavaScript is disabled in the browser.

Depends on what you define as "important site functionality". But most features work w/o JavaScript. Sans a few AJAX-triggers...

C2: Don't be a dick

We don't 🙂

C3: Works with Tor

Should work AFAIK

C4: No fucky ToS

try.gitea.io doesn't have a ToS :trollface:

C5: Recommends GPL-3 equally to OR more than the others

We don't recommend any license at all. We do have a list of 'em all, and AFAIK GPL-3 is fairly high up the list.

C6: Support HTTPS properly

A-grade :trollface: https://www.ssllabs.com/ssltest/analyze.html?d=try.gitea.io&s=159.203.182.191&latest

@lofidevops
Copy link
Author

Updated as follows:

  • C2, C4. Pass/not applicable.
  • C6. Pass (added relevant link).

Remaining issues:

  • C0.0. No-JavaScript option. Is the Gitea team prepared to fix bugs for users running without JavaScript? i.e. are such bugs in-scope? With-JavaScript option. Requires resolution of Unsourced/undocumented libraries; missing license files; and other issues #1484
  • C3. Requires a quick note confirming someone has actually done this (I'll see if I can find some time). I assume this only means gitea-via-Tor-browser, not git-over-Tor, or Gitea-over-Tor-to-remote-git-repo.
  • C5. Added a note (needs feedback from mailing list I think).

@MTecknology
Copy link
Contributor

C0. Covered
C.0.0. There are some things that break without javascript enabled. There are places where javascript template items like ${ repo.stars_count } and ${ repo.full_name } show up, and things like drop-down menus don't work. I doubt you'd find the man-power interested in making the site functional without javascript, but it's really not that far off.

C3. I believe you can check Tor access off the list. There's nothing in the application that breaks by being accessed via the tor network or the tor browser. Depending on the tor exit node, it's also possible to run git+ssh:// over the network as well.

CX. There are some vendor'ed dependencies in vendor/ that weren't properly licensed. Some technically couldn't legally be part of any project, but every library (non-)maintainer--except tidb--was happy to license/copyright their work so that'll be cleaned up whenever gitea refreshes downstream modules.

CY. There is a similar problem in public/, documented in #1484. I believe this just requires somebody taking the time to restructure and document the directory and clean up anything referencing the data.

C5. AFAICT, there's no bias against GPLv3, which means equal to or greater than. Requiring it be above all others wouldn't be in the spirit of freedom. There's already a prompt to select a license. What's missing is reading PREFERRED_LICENSES from the config and sticking those values up top in bold (ideally order maintained). Then, by including GPLv3 in that default list, you can check off C5.

@lofidevops
Copy link
Author

Updated as follows:

Remaining issues:

  • As before. (Thanks for the extra details.)

bkcsoft pushed a commit that referenced this issue Aug 23, 2017
) (#2241)

* Cleaning up public/ and documenting js/css libs.

This commit mostly addresses #1484 by moving vendor'ed plugins into a
vendor/ directory and documenting their upstream source and license in
vendor/librejs.html.

This also proves gitea is using only open source js/css libraries which
helps toward reaching #1524.

* Removing unused css file.

The version of this file in use is located at:
  vendor/plugins/highlight/github.css

* Cleaned up librejs.html and added javascript header

A SafeJS function was added to templates/helper.go to allow keeping
comments inside of javascript.

A javascript comment was added in the header of templates/base/head.tmpl
to mark all non-inline source as free.

The librejs.html file was updated to meet the current librejs spec. I
have now verified that the librejs plugin detects most of the scripts
included in gitea and suspect the non-free detections are the result of
a bug in the plugin. I believe this commit is enough to meet the C0.0
requirement of #1534.

* Updating SafeJS function per lint suggestion

* Added VERSIONS file, per request
@mxmehl
Copy link

mxmehl commented Sep 21, 2017

Can we close a few more points here? E.g. #1484 is closed as far as I can see.

@lofidevops
Copy link
Author

Updated as follows:

  • Marked Unsourced/undocumented libraries; missing license files; and other issues #1484 as complete
  • Noted we still need a new LibreJS report to confirm the issue is resolved for this ticket. I tried generating one now, but it is taking a really long time. I'll try again when I can leave my browser for a while, unless someone else gets there first. Maybe the LibreJS HTML page can be optimized somehow?
  • Just to highlight, anyone can drop a query about C5 to the repo-criteria-discuss mailing list.

@MTecknology
Copy link
Contributor

I believe we can check off C5. The default is to provide no preference for any license above GPL-3.0+ and provide GPL-3.0+ is an available option. It is not weighted below any other option. FWIW- Alphabetical is organization, not preference.

I think it would be a great idea to set a default list of preferred licenses (GPL-3.0+, MIT, Apache-2.0, ) in the default configuration, but that's a preference (not requisite) of the C5 requirement. Requiring a license selection at repository creation would be a terrible idea but it's a part of the current workflow.

@lofidevops
Copy link
Author

Posted queries to the repo-criteria-discuss mailing list about:

  • C0.0 -- asking for someone else to do a LibreJS test
  • C5 -- asking if "blank by default, GPL-3.0 option (not GPL-3.0+)" is suitable

@lofidevops
Copy link
Author

Skipped LibreJS test (my plugin/browser is bust and no-one seems to be volunteering). Passed C0.0 on the basis that https://try.gitea.io/vendor/librejs.html exists and any errors would be logged as bugs.

@lofidevops
Copy link
Author

Performed LibreJS test (success). Linked to results in #1484

@sapk
Copy link
Member

sapk commented Oct 31, 2017

So we could close this one ?

@lofidevops
Copy link
Author

I'm afraid I'm still waiting on an answer on C5. If someone can find a reference to it being ok for Savannah or GitLab, that would work.

@lofidevops
Copy link
Author

Also, please point me to where this should be documented for the eventual merge request.

@lofidevops
Copy link
Author

Feedback from the repo mailing list:

@lofidevops
Copy link
Author

Passed C5 based on discussion. Next steps:

  1. Announce on to mailing list for confirmation
  2. Add suitable text to Gitea documentation. something like "Based on a self-evaluation, your Gitea instance can achieve at least a 'C' grade using the GNU ethical repository criteria. If you want to add your specific instance to the list of GNU evaluations, it will need independent evaluation. [insert checklist results from the top of this ticket]"
  3. Close this ticket 🍾

@MTecknology
Copy link
Contributor

And then create a new one for grade 'B'? :)

@bkcsoft
Copy link
Member

bkcsoft commented Nov 9, 2017

@MTecknology Seems like these might be problematic:

Does not encourage bad licensing practices (no license, unclear licensing, GPL N only). (B2)

Since we don't enforce licenses, and the default is "no license". Though I'd argue that "not enforcing" is not the same as "encourage".

Does not recommend nonfree licenses for works of practical use. (B3)

Again, depends on the definition of "recommend". I'd argue that we pass these, but they might not since we do list "nonfree" (according to FSF) licenses. And the wording is very iffy since what is "works of practical use"??

These should be okey though:

All code sent to the user's browser must be free software and labeled for LibreJS or other suitable free automatic license analyzer, regardless of whether the site functions when the user disables this code. (B0)

We do only use free software, and are labeled for LibreJS AFAIK. And the rule does not enforce the site to work if said code is disabled :trollface:

Does not report visitors to other organizations; in particular, no tracking tags in the pages. This means the site must avoid most advertising networks. (B1)

We don't track or report anything to anyone, esp. not ad networks

@lofidevops
Copy link
Author

Maybe the instance owner should be able to configure their instance in order to achieve higher levels of compliance? For example, a given instance owner decides they will force users to pick a license and restrict the list to FSF-approved licenses.

@lafriks
Copy link
Member

lafriks commented Nov 10, 2017

@kwill instance owner can already add/remove licenses for his instance what he needs. I'm also not against adding option to require license when creating repository but that should not be enabled by default

@MTecknology
Copy link
Contributor

MTecknology commented Nov 11, 2017

I actually love the idea of being having the option to require a license selection, but I don't think that really matters for GNU criteria. I'd also agree with your assessment that not requiring a license is not the same as encouraging no license. There is an option to select a license and it's never hidden.

I think a very simple solution to assert a lack of ambiguity meeting the criteria is to simply take the existing PREFERRED_LICENSES option, stick those licenses at the top of the license-selection menu (perhaps in bold), and add a rule (<hr>) separating those licenses from the rest of the list. Then we just need to include a sane default list that includes GPL3+.

PREFERRED_LICENSES = Apache License 2.0,MIT License,GPL-3.0+

Pedantically, it might not be required, but doing so would let us confidently say the criteria has definitely been met.

@stale
Copy link

stale bot commented Feb 11, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs during the next 2 weeks. Thank you for your contributions.

@stale stale bot added the issue/stale label Feb 11, 2019
@stale
Copy link

stale bot commented Feb 25, 2019

This issue has been automatically closed because of inactivity. You can re-open it if needed.

@stale stale bot closed this as completed Feb 25, 2019
@lesderid
Copy link

Shouldn't have been closed.

@go-gitea go-gitea locked and limited conversation to collaborators Nov 24, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
issue/stale type/docs This PR mainly updates/creates documentation
Projects
None yet
Development

No branches or pull requests

10 participants