Bisakah saya mengurangi Javascript yang membutuhkan pemberitahuan hak cipta?

37

Saya kira ini sebenarnya pertanyaan hukum, tetapi ini berkaitan dengan perangkat lunak. Saya akan memasukkan plugin JS dalam proyek. Komentar tersebut meliputi:

  • Redistribusi kode sumber harus mempertahankan pemberitahuan hak cipta di atas, daftar persyaratan ini dan penafian berikut. * Redistribusi dalam bentuk biner harus mereproduksi pemberitahuan hak cipta di atas, daftar persyaratan ini dan penafian berikut dalam dokumentasi dan / atau materi lain yang disediakan bersama distribusi.
  1. Apakah menggunakan ini di situs web saya "redistribusi?"
  2. Jika saya mengurangi ini untuk menghemat bandwidth, saya menganggap itu akan menghapus semua komentar. Jika jawaban ke # 1 adalah ya, bukankah itu menyiratkan bahwa saya secara hukum tidak diizinkan untuk memperkecil itu?

(Itu akan berbau busuk, karena saya berencana untuk secara otomatis memperkecil semua JS sebagai bagian dari proses penyebaran.)

Nathan Long
sumber
Apakah ini akan menjadi sisi server atau sisi klien? Sisi klien adalah distribusi, sisi server tidak (sebagai aturan umum).
David Thornley
3
@ Davidvidhorn - Saya setuju dengan poin Anda, tetapi saya tidak bisa memikirkan alasan yang bagus mengapa Anda akan meminimalkan JS sisi server.
Chris Dolan

Jawaban:

34

Sebagian besar perangkat lunak minifying memiliki beberapa metode untuk meninggalkan komentar di tempat untuk tujuan yang tepat ini.

Misalnya, dari dokumentasi Kompresor YUI :

  + C-style comments starting with /*! are preserved. This is useful with
    comments containing copyright/license information. For example:

    /*!
     * TERMS OF USE - EASING EQUATIONS
     * Open source under the BSD License.
     * Copyright 2001 Robert Penner All rights reserved.
     */

    becomes:

    /*
     * TERMS OF USE - EASING EQUATIONS
     * Open source under the BSD License.
     * Copyright 2001 Robert Penner All rights reserved.
     */

Google Closure Compiler akan mempertahankan blok JavaDoc apa pun yang memiliki @licenseatau @preservetag di dalamnya:

Dengan @license:

    /* 
     * TERMS OF USE - EASING EQUATIONS
     * @license Open source under the BSD License.
     * Copyright 2001 Robert Penner All rights reserved.
     */

    becomes:

    /* 
      TERMS OF USE - EASING EQUATIONS
      Open source under the BSD License.
      Copyright 2001 Robert Penner All rights reserved.
     */

Dengan @preserve:

    /* @preserve
     * TERMS OF USE - EASING EQUATIONS
     * Open source under the BSD License.
     * Copyright 2001 Robert Penner All rights reserved.
     */

    becomes:

    /* 
      TERMS OF USE - EASING EQUATIONS
      Open source under the BSD License.
      Copyright 2001 Robert Penner All rights reserved.
     */
Orbling
sumber
Oh keren, senang tahu!
Nathan Long
@Nathan Long: Ini adalah pendekatan yang direkomendasikan oleh orang-orang yang membuat minimizer.
Orbling
23

iya nih

Dengan peringatan. Anda harus menaruh pemberitahuan di tempat lain di situs. Biasanya di bawah halaman Syarat & Ketentuan atau Pemberitahuan. Anda bisa melakukan ini hanya dengan menambahkan berikut ini ke atas setiap bagian JS yang telah Anda minify (atau hanya di atas file JS tunggal):

/** Notice 
  *
  * This file contains works from many authors under various (but compatible)
  * licenses. Please visit http://example.com/notices for more information.
  *
 **/
Josh K.
sumber
4

Sebenarnya, mengapa tidak mempertahankan pemberitahuan itu sebagai bagian dari langkah minifikasi itu sendiri?

Cara paling sederhana adalah mengekstrak pemberitahuan terlebih dahulu (secara manual) dan menyimpannya di suatu tempat. Maka skrip minifikasi Anda hanya dapat mengecilkan JS dan kemudian menggabungkan pemberitahuan yang tidak diubah.

Saya berharap itu cukup kecil tentu saja ... jika besar, maka jawaban Josh K mungkin lebih baik.

Matthieu M.
sumber
Masalahnya menjadi secara otomatis mendeteksi pemberitahuan saat membangun. Poin lain yang Anda sentuh adalah bahwa pemberitahuan bisa sangat besar dan mahal untuk diunduh ulang.
Josh K
@Josh K: Saya memang mengatakan secara manual mengekstrak pemberitahuan. Adapun pemberitahuan besar, saya pikir saya mendapatkan yang tertutup juga, dalam hal ini saya setuju lebih baik memisahkannya.
Matthieu M.
Secara khusus, saya sedang memikirkan Plugin jQuery Easing. jika Anda melihat sumbernya, ada hampir setengah baris syarat dan ketentuan kode: gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js Jadi dalam kasus ini, jika saya bisa ' t menghapus pemberitahuan, itu masalah besar untuk minifikasi.
Nathan Long
3

Dari pembacaan lisensi saya, saya percaya bahwa untuk benar-benar aman Anda harus menyertakan teks lisensi lengkap dengan distribusi perangkat lunak atau karya turunannya (termasuk minified JS). Dari lisensi sumber terbuka utama:

GPLv3:

Anda dapat menyampaikan salinan kata demi kata dari kode sumber Program saat Anda menerimanya, dalam media apa pun, asalkan Anda ... memberikan semua penerima salinan Lisensi ini bersama dengan Program. ...

Anda dapat menyampaikan sebuah karya berdasarkan Program ... dalam bentuk kode sumber di bawah ketentuan [bagian di atas].

Lisensi MIT:

Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua salinan atau bagian penting Perangkat Lunak.

Lisensi BSD:

Redistribusi kode sumber harus mempertahankan pemberitahuan hak cipta di atas, daftar persyaratan ini dan penafian berikut.

Sepertinya pendekatan ini tidak diambil oleh kebanyakan orang. Bahkan Bootstrap resmi dari Twitter hanya berisi pemberitahuan hak cipta kecil, sehingga Anda akan melanggar lisensi MIT jika Anda menyajikannya kepada pengguna Anda.

Brian Gordon
sumber