-18

It would be cool if Stack Exchange supported LibreJS, a Firefox extension for blocking non-free non-trivial Javascript code. Currently LibreJS blocks almost all of it. For example I had to temporarily disable LibreJS in order to pass the CAPTCHA test, which is not a good thing.

Edit: I forgot to attach the LibreJS report.

List of accepted JavaScript in LibreJS support

This script has been tagged as free software by LibreJS authors.
http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

List of blocked JavaScript in LibreJS support

Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts


            StackExchange.ready(function () {

                    StackExchange.using("snippets", function () {
                        StackExchange.snippets.initSnippetRenderer();
                    });


                StackExchange.using("postValidation", function () {
                    StackExchange.postValidation.initOnBlurAndSubmit($('#post-form'), 2, 'answer');
                });


                StackExchange.question.init({votesCast:[],autoShowCommentHelp:true,totalCommentCount:3,shownCommentCount:3,highlightColor:'#F4A83D',backgroundColor:'#FFF',questionId:270092});

                styleCode();

                    StackExchange.realtime.subscribeToQuestion('4', '270092');
                                                                    StackExchange.using("gps", function () { StackExchange.gps.trackOutboundClicks('#content', '.post-text'); });

            });


Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts

        StackExchange.ready(function () {
            StackExchange.realtime.init('wss://qa.sockets.stackexchange.com,ws://qa.sockets.stackexchange.com');
            StackExchange.realtime.subscribeToReputationNotifications('4');
                StackExchange.realtime.subscribeToTopBarNotifications('4');
        });


Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts

        StackExchange.init({"locale":"en","stackAuthUrl":"https://stackauth.com","serverTime":1448704400,"networkMetaHostname":"meta.stackexchange.com","routeName":"Questions/Show","styleCode":true,"enableUserHovercards":true,"snippets":{"enabled":true,"domain":"stacksnippets.net"},"site":{"name":"Meta Stack Exchange","description":"Q&A for meta-discussion of the Stack Exchange family of Q&A websites","isNoticesTabEnabled":true,"recaptchaPublicKey":"6LdsB7sSAAAAAAzjgEF_Hd8vXv-C42sa_KyofaGR","recaptchaAudioLang":"en","enableNewTagCreationWarning":false,"insertSpaceAfterNameTabCompletion":false,"id":4,"isMetaSite":true,"enableSocialMediaInSharePopup":true},"user":{"fkey":"d7904c09d42268f6fad806c69f60b59f","rep":69,"isRegistered":true,"userType":3,"userId":310293,"accountId":510444,"gravatar":"<div class=\"gravatar-wrapper-32\"><img src=\"https://www.gravatar.com/avatar/c7b23614adebef83e39c4a520d380c5a?s=32&amp;d=identicon&amp;r=PG\" alt=\"\" width=\"32\" height=\"32\"></div>","profileUr…

Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts

        StackExchange.ready(function() { StackExchange.topbar.init(); });


Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts

            StackExchange.ifUsing("editor", function () {
                StackExchange.using("externalEditor", function () {
                    StackExchange.using("snippets", function () {
                        StackExchange.snippets.init();
                    });
                });
            }, "code-snippets");


Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts

    StackExchange.ready(function() {
        initTagRenderer("bug feature-request discussion support".split(" "), "faq status-completed status-declined status-bydesign status-norepro status-reproduced status-planned status-deferred status-review featured community-ads".split(" "));

        StackExchange.using("externalEditor", function() {
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.options.snippets.enabled) {
                    StackExchange.using("snippets", function() {
                        createEditor();
                    });
                }
                else {
                    createEditor();
                }
            });

            function createEditor() {
                prepareEditor({
                    heartbeatType: 'answer',
                convertImagesToLinks: false,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix:…

Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts

                                StackExchange.ready(function () {
                                    $("#show-editor-button input").click(function () {
                                        var showEditor = function() {
                                            $("#show-editor-button").hide();
                                            $("#post-form").removeClass("dno");
                                            StackExchange.editor.finallyInit();
                                        };

                                        var useFancy = $(this).data('confirm-use-fancy');
                                        if(useFancy == 'True') {
                                            var popupTitle = $(this).data('confirm-fancy-title');
                                            var popupBody = $(this).data('confirm-fancy-body');
                                            var popupAccept = $(this).data('confirm-fancy-accept-button');

                                            $(this).loadPopup({
                                                url: '/post/self-answer-popup',
                                                loaded: function(popup) {
                                                    var pTitle = $(popup).find('h2');
                                                    var pBody = $(popup).find('.popup-body');
                …

Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts

StackExchange.ready(function(){$.get('/posts/270092/ivc/bf46');});

Whitelist

NONTRIVIAL: an open method similar to xhr.open is used

        (function (i, s, o, g, r, a, m) {
            i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o),
            m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m);
        })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
        ga('create', 'UA-5620270-45', {'cookieDomain': 'stackexchange.com', 'userId': '510444'});
                ga('set', 'dimension1', '510444');                 ga('set', 'dimension2', '|feature-request|javascript|');         ga('send', 'pageview');
        var _qevents = _qevents || [],
            _comscore = _comscore || [];
        (function () {
            var ssl='https:'==document.location.protocol,
                s=document.getElementsByTagName('script')[0],
                qc=document.createElement('script');
            qc.async=true;
            qc.src=(ssl?'https://secure':'h…

Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts
[{"attribute":"onclick","value":""}]

Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts
[{"attribute":"href","value":"void(0);"}]

Whitelist

This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts
[{"attribute":"onclick","value":"StackExchange.switchMobile(\"on\")"}]

WhitelistNONTRIVIAL: eval has been found in code
https://meta.stackexchange.com/content/Js/stub.en.js?v=4929d55ac00d
  • 2
    I don't understand what needs to be done. Which non-free non-trivial Javascript has to go then, except the recaptcha, anything else? – rene Nov 27 '15 at 20:41
  • 4
    Should anything need to be paid for then? Rent? Food? – random Nov 27 '15 at 20:49
  • 8
    You are totally free to only deal with free/open source software, I respect that. But we are also free to deal with and love closed-source software. Why do activists always try to force their opinions and ideas and make everything else unethical? – Nean Der Thal Nov 28 '15 at 1:34
  • 1
    @NeanDerThal It's not about forcing anyones beliefs. For regular users like you, you wouldn't even know the support was in place, for LibreJS users however, it would be a huge deal. – Gerstmann Nov 28 '15 at 10:46
  • How many users use LibreJS? How many of them use SE? Hint: it makes no sense to develop for an aesthetic use case with the number of users less than 1 per cent. You are free to not use SE, anyway. – Deer Hunter Nov 28 '15 at 21:34
  • Wow, that's obnoxious. – user1228 Nov 30 '15 at 15:59
  • I agree. Stackexchange loses my respect for not meeting fsf standards. – TheIronKnuckle Aug 19 at 4:44
13

If I understand it correctly, the only way to do that would be to license the entire JavaScript part of the SE website under an open source license. I don't see any compelling reason for SE to do that. They have open-sourced various parts of their platform in the past, but none of those were core components of the Q&A platform. I'd also guess that the code isn't all that useful to anyone else as it is pretty tightly coupled to the site.

The freedom I care about is already provided by the Creative Commons license SE uses for all user contributions. This ensures that anything I contribute will stay free and available (as long as someone cares enough to host the content).

| improve this answer | |
  • 3
    The only reason I'm asking for this feature is because of the need to respect users rights to freedom. Proprietary software is never ethical. I used to like Stack Exchange websites in the past, but until this feature is implemented I cannot recommend this website to anyone. – user310293 Nov 27 '15 at 21:18
  • 7
    @FrancescoTurco I'm stil puzzled by what you ask. Are you referring to the software/scripts that are built by the SE Dev team or to the extra libraries like jquery they use in their software, or both? Can you explain how the SE software is not ethical? – rene Nov 27 '15 at 21:25
  • 4
    @FrancescoTurco you don't need to recommend it. People looking for answers search, and find SE all by themselves. – Mathieu Guindon Nov 27 '15 at 21:59
  • 1
    @rene Jquery is already recognized by LibreJS as free software. No problem with that one. I'm going to edit my question and attach the LibreJS report so you can see what I'm talking about. As for why proprietary software is unethical I recommend reading this essay by Richard Stallman. – user310293 Nov 28 '15 at 9:52
  • 2
    @FrancescoTurco I respect Richard Stallman but I don't agree with his premises. I strongly disagree with anyone even suggesting that the operation as run by SE is unethical, that statement needs a lot of nuance that is completely missing from your point of view. – rene Nov 28 '15 at 10:09
  • @FrancescoTurco Why do you care only about the JS and not the server-side components of the SE software. Even though I think it is unreasonable to demand that SE open-sources them, those parts would actually be really useful to other people. – Mad Scientist Nov 28 '15 at 10:18
  • 7
    Of course releasing server-side components as free software would be wonderful, but that's not my immediate concern because I don't have to run it on my computer. Javascript code, instead, runs on my computer and that bothers me when it is proprietary. – user310293 Nov 28 '15 at 10:42

You must log in to answer this question.