1UnitedPower: github Dateien direkt verlinken

In letzter Zeit benutze ich oft folgendes Pattern um Bibliotheken einzubinden:

  
<script src="https://raw.github.com/user/project/master/build/example.min.js"></script>  

Jetzt frage ich mich, ob das überhaupt legal ist, denn immerhin verursache ich Traffic bei github. Ähnliche Vorgehensweisen sind zum Beispiel oft bei jQuery-Einbindungen zu finden, aber bei jQuery empfiehlt man es den Nutzern ja sogar, um immer die aktuelle Version zu benutzen. Kennt sich jemand mit der Rechtslage aus?

  1. Moin!

    In letzter Zeit benutze ich oft folgendes Pattern um Bibliotheken einzubinden:

    <script src="https://raw.github.com/user/project/master/build/example.min.js"></script>

    
    >   
    > Jetzt frage ich mich, ob das überhaupt legal ist, denn immerhin verursache ich Traffic bei github. Ähnliche Vorgehensweisen sind zum Beispiel oft bei jQuery-Einbindungen zu finden, aber bei jQuery empfiehlt man es den Nutzern ja sogar, um immer die aktuelle Version zu benutzen. Kennt sich jemand mit der Rechtslage aus?  
      
    Die Rechtslage dürfte erstmal egal sein, viel spannender ist, ob du es dir leisten willst, immer die maximal aktuelle Version aus dem Master-Branch zu verwenden. Bei jQuery definierst du ja die zu verwendende Version, und die wird sich nicht spontan anders verhalten. Deine obige Referenz hingegen ist dynamisch und potentiell mit Defekten versehen, bzw. zumindest abhängig von der je nach Projekt unterschiedlichen Arbeitsweise beim Mergen von Features - du bist dennoch nicht gegen inkompatible Updates gefeit.  
      
    Und wenn man das dann mal durchdenkt, und mit der Idee des jQuery-Hostings auf einem zentralen Server vergleicht, welcher deswegen attraktiv ist, weil diese eine Library durch langlaufende Caching-Erlaubnis mit guter Wahrscheinlichkeit ohne Download schon im Browser vorliegt, dann kommt man zur Erkenntnis, dass der Github-Link diese Eigenschaft eben gerade nicht besitzen kann. Langfristiges Caching einer Ressource, die sich bei jedem Commit verändern muss, funktioniert nicht.  
      
    Du machst also deinen Besuchern keine Freude, weil sie dieses Javascript bei jedem Request herunterladen müssen. Würdest du irgendein Kopie des Skripts einfach lokal hosten, würde sich das Caching vermutlich schon von allein verbessern, zumindest aber durch dich optimierbar sein.  
      
    Und schon erledigt sich die Rechtsfrage von ganz allein.  
      
     - Sven Rautenberg
    
    1. Hi,

      Und schon erledigt sich die Rechtsfrage von ganz allein.

      Und was auch noch dazu kommt: wenn man das Zeug auf einem eigenen Server "zwischenlagert", hat man Kontrolle darüber.

      Wer weiß schon, ob nicht eines Tages sich irgendwer die fremde Domain grabscht und plötzlich irgendwas bösartiges ausliefert ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    2. Das ergibt natürlich alle Sinn, vielen Dank für die Ausführung.

      Zum Glück habe ich keine große Audienz, weshalb ich den Punkt mit den Endnutzern getrost ignorieren kann. Konkret: Es dreht sich bei mir nicht um eine Website, sondern um kleine Javascript-Experimente, die selber auf github gehostet sind. Deswegen fällt dein erstes Argument aber besonders schwer ins Gewicht. Eine Kopie in meinem Projekt zu hosten bringt allerdings auch teilweise rechtliche Schwierigkeiten mit sich, nämlich wenn die Lizenzen sich unterscheiden. Um das Lizenz- und Versions-Problem zu lösen könnte ich einen Fork von der benötigten Version erstellen und dann die Datei wie gehabt hotlinken. Klingt aber nicht nach best-practice. Gibts bessere Vorschläge?

      1. Um das Lizenz- und Versions-Problem zu lösen könnte ich einen Fork von der benötigten Version erstellen und dann die Datei wie gehabt hotlinken. Klingt aber nicht nach best-practice. Gibts bessere Vorschläge?

        Den Baum vor lauter Wäldern nicht gesehen. Ich kann natürlich auch einfach ein gewisses Commit referenzieren. Aber das bringt mich wieder zum urprünglichen Problem.

  2. In letzter Zeit benutze ich oft folgendes Pattern um Bibliotheken einzubinden:

    <script src="https://raw.github.com/user/project/master/build/example.min.js"></script>

    
    >   
    > Jetzt frage ich mich, ob das überhaupt legal ist, denn immerhin verursache ich Traffic bei github. … Kennt sich jemand mit der Rechtslage aus?  
      
    Technisch gesehen kannst du das tun, auch wenn es mit vielen Nachteilen verbunden ist. Rechtlich darfst du das, solange Github es explizit verbietet oder sich beschwert. Github wird sich bei dir beschweren, sobald du ihnen massiv Traffic verursachst. Bis dahin wird es ihnen egal sein, da sie es nicht bemerken werden. Wenn du sie fragen würdest, würden sie dir davon abraten, höchstwahrscheinlich aus technischen Gründen.  
      
    
    > Ähnliche Vorgehensweisen sind zum Beispiel oft bei jQuery-Einbindungen zu finden, aber bei jQuery empfiehlt man es den Nutzern ja sogar, um immer die aktuelle Version zu benutzen.  
      
    Da verwechselst du etwas. jQuery wird auf CDNs gehostet und das Team rät keinesfalls dazu, jQuery aus dem Master-Branch von Github einzubinden. Sie raten auch nicht, automatisch die aktuellste Version einzubinden. Best Practice ist, eine bestimmte, sich nicht ändernde Version von einem CDN einzubinden.  
      
    Diese verteilten CDNs sind dafür optimiert, statische, minifizierte JavaScript-Bibliotheken performant, komprimiert und cachebar auszuliefern. Githubs Raw-Export hingegen ist zentral und mit viel Serveraufwand verbunden. Der MIME-Typ stimmt nicht und Caching-Header gibt’s auch keine. Es macht keinen Sinn, JavaScripte so einzubinden, es sei denn, man macht aus einem bestimmten Grund Tests mit dem aktuellen HEAD des Master-Branches (z.B. um Regressions zu suchen oder Bugfixes zu verifizieren). Für den Produktiveinsatz oder auch das Entwickeln von Scripten, die bloß auf der fraglichen Bibliothek aufsetzen, ist das nicht geeignet.  
      
    Mathias
    
    -- 
    [Chaplin - An Application Architecture Using Backbone.js](https://github.com/chaplinjs/chaplin)