<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Hayden&#x27;s Personal Site</title>
    <link rel="self" type="application/atom+xml" href="https://haydenwu.org/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://haydenwu.org"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-04-05T00:00:00+00:00</updated>
    <id>https://haydenwu.org/atom.xml</id>
    <entry xml:lang="en">
        <title>Moving Away from My Home-brew SSG</title>
        <published>2026-04-05T00:00:00+00:00</published>
        <updated>2026-04-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/moving-from-dummy-ssg/"/>
        <id>https://haydenwu.org/posts/moving-from-dummy-ssg/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/moving-from-dummy-ssg/">&lt;h1 id=&quot;Moving_Away_from_My_Home-brew_SSG&quot;&gt;Moving Away from My Home-brew SSG
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Moving_Away_from_My_Home-brew_SSG&quot; aria-label=&quot;Anchor link for: Moving_Away_from_My_Home-brew_SSG&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;p&gt;For over three years, I&#x27;ve been dogfooding my personal site with the same static site generator of my own, &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;haydenwu&#x2F;dummy-ssg&quot;&gt;dummy-ssg&lt;&#x2F;a&gt;. It&#x27;s a simple CLI program I wrote in PHP, which, originally designed for my own site, turned out to as well power some community websites where I was involved, as it developed as a generic SSG.&lt;&#x2F;p&gt;
&lt;p&gt;The program is quite lightweight: just less than 200 lines of code at its core with a vendored Markdown parsing library. It supports writing templates in PHP, the language itself already being a powerful hypertext preprocessor.&lt;&#x2F;p&gt;
&lt;p&gt;Since I created the whole thing, I know how everything works and can easily patch it when needed. Plus, since templates are essentially written in a programming (scripting) language, they enjoy great extensibility too. For those reasons, I had always stuck to my home-brew SSG.&lt;&#x2F;p&gt;
&lt;p&gt;A few days ago when I was helping with a friend&#x27;s website, I had chance to work with the &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt; SSG again. Prior to that I had &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;haydenwu&#x2F;zola-clean-blog&quot;&gt;worked with Zola&lt;&#x2F;a&gt; (and I liked it), but this time I wanted to try migrating my own site to it and see if it was a good idea.&lt;&#x2F;p&gt;
&lt;p&gt;It took me two days to migrate my entire site. Because my templates are vastly PHP code, I spent most of my time rewriting them using an actual template language. And due to how Zola handles pages and sections very differently, I also had to restructure my directories.&lt;&#x2F;p&gt;
&lt;p&gt;Now that I&#x27;m on Zola, I can finally enjoy features that I&#x27;ve never bothered to work on for dummy-ssg:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Built-in server with live reloading&lt;&#x2F;li&gt;
&lt;li&gt;RSS feed&lt;&#x2F;li&gt;
&lt;li&gt;Syntax highlighting&lt;&#x2F;li&gt;
&lt;li&gt;Automatic heading anchor&lt;&#x2F;li&gt;
&lt;li&gt;Internal link validation&lt;&#x2F;li&gt;
&lt;li&gt;Inserting &lt;code&gt;target=&quot;_blank&quot;&lt;&#x2F;code&gt; and &lt;code&gt;rel=&quot;noreferrer&quot;&lt;&#x2F;code&gt; for external links&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;While I will miss not having to write a &lt;code&gt;title&lt;&#x2F;code&gt; in the front matter (because dummy-ssg automatically uses the first top-level heading found in the Markdown), I&#x27;m happy to be on Zola now.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;This page is released into the public domain under &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Presence, Claim and Identity</title>
        <published>2025-11-05T00:00:00+00:00</published>
        <updated>2025-11-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/pci/"/>
        <id>https://haydenwu.org/posts/pci/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/pci/">&lt;h1 id=&quot;Presence,_Claim_and_Identity&quot;&gt;Presence, Claim and Identity
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Presence,_Claim_and_Identity&quot; aria-label=&quot;Anchor link for: Presence,_Claim_and_Identity&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;p&gt;The purpose of this essay is to provide a standardized model for managing decentralized online identities. Specifically, it deals with how numerous online presences are associated and belong to the same identity, and provides a way for managing claims and identities of one&#x27;s counterparts.&lt;&#x2F;p&gt;
&lt;p&gt;Similar to &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;keyoxide.org&#x2F;&quot;&gt;Keyoxide&lt;&#x2F;a&gt;, it ensures one is interacting with whom they intended to be by helping check the authenticity of the counterpart&#x27;s claims. Different from Keyoxide, it doesn&#x27;t base an identity on any single profile (ASP, OpenPGP, etc.); claims can be made by any presence on any presence. Additionally, it doesn&#x27;t deal with the technical aspects of formatting claims and verifying proofs.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Table_of_Contents&quot;&gt;Table of Contents
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Table_of_Contents&quot; aria-label=&quot;Anchor link for: Table_of_Contents&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#summary&quot;&gt;Summary&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#presence&quot;&gt;Presence&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#claim&quot;&gt;Claim&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#identity&quot;&gt;Identity&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#medium-tips&quot;&gt;Medium-specific Adoption Tips&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#implementations&quot;&gt;Implementations&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#glossary-translations&quot;&gt;Glossary Translations&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#claim-boilerplate-translations&quot;&gt;Claim Boilerplate Translations&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;summary&quot;&gt;Summary
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#summary&quot; aria-label=&quot;Anchor link for: summary&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The structure of a sample database adopting the proposed model is illustrated below.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;.&#x2F;diagrams&#x2F;summary.svg&quot; alt=&quot;Summary&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The model is based on three core elements: presence, claim and identity, hence the abbreviation PCI.&lt;&#x2F;p&gt;
&lt;p&gt;An online account or a more fractional existence is recorded as a presence, represented by a smaller rectangle in the diagram above.&lt;&#x2F;p&gt;
&lt;p&gt;When a presence claims to be in control of another presence, a claim is recorded in the diagram as a one-directional arrow pointing to the claimed presence.&lt;&#x2F;p&gt;
&lt;p&gt;Presences that are inter-claimed are associated and belong to the same presence group, represented as a larger rectangle containing all these presences, the label of which being its identity. A presence being outside a group means it&#x27;s not under common control with any presence in that group.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;presence&quot;&gt;Presence
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#presence&quot; aria-label=&quot;Anchor link for: presence&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;A &lt;strong&gt;presence&lt;&#x2F;strong&gt; is a distinguishable existence on a medium of communication which can be interacted with. Examples of a presence are an OpenPGP key, an XMPP account (or an OMEMO device thereof), and a Matrix account.&lt;&#x2F;p&gt;
&lt;p&gt;In practice, each presence is distinguished by a unique name. The general principle of naming a presence is to include the name of the medium plus the amount of information enough for distinguishing the presence from other presences on the medium. Example formats for naming presences on various mediums are listed below.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Medium&lt;&#x2F;th&gt;&lt;th&gt;Format&lt;&#x2F;th&gt;&lt;th&gt;Example&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;OpenPGP key&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;openpgp:&amp;lt;fingerprint&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;openpgp:1234&lt;wbr&gt;5678&lt;wbr&gt;9ABC&lt;wbr&gt;DEF0&lt;wbr&gt;1234&lt;wbr&gt;5678&lt;wbr&gt;9ABC&lt;wbr&gt;DEF0&lt;wbr&gt;1234&lt;wbr&gt;5678&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;XMPP account&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;xmpp:&amp;lt;jid&amp;gt;[#&amp;lt;omemo_fingerprint&amp;gt;]&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;xmpp:alice@example.org&lt;&#x2F;code&gt;, &lt;br &#x2F;&gt; &lt;code&gt;xmpp:alice@example.org&lt;wbr&gt;#12345678&lt;wbr&gt;9ABCDEF0&lt;wbr&gt;12345678&lt;wbr&gt;9ABCDEF0&lt;wbr&gt;12345678&lt;wbr&gt;9ABCDEF0&lt;wbr&gt;12345678&lt;wbr&gt;9ABCDEF0&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Matrix account&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;matrix:&amp;lt;matrix_id&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;code&gt;matrix:&lt;wbr&gt;@alice:example.org&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;A presence may be &lt;strong&gt;revoked&lt;&#x2F;strong&gt;, if the medium of that presence supports declaring that the presence issuing revocation shall not be used any more. Revoked presences cease to exist and are removed from the database.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;claim&quot;&gt;Claim
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#claim&quot; aria-label=&quot;Anchor link for: claim&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;A presence may &lt;strong&gt;claim&lt;&#x2F;strong&gt; another presence. Through a claim, a presence unilaterally declares, in natural language, that the claimed presence is under common control with the presence making the claim.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;.&#x2F;diagrams&#x2F;claim.svg&quot; alt=&quot;Claim&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;An example claim on an XMPP account written in English would be (available translations &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#claim-boilerplate-translations&quot;&gt;attached&lt;&#x2F;a&gt;):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#24292E, #ABB2BF); background-color: light-dark(#FFFFFF, #282C34);&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;I hereby confirm that the following XMPP account:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	alice@example.org&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;and the OMEMO devices connected to it with the following fingerprints:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	- 12345678 9ABCDEF0 12345678 9ABCDEF0 12345678 9ABCDEF0 12345678 9ABCDEF0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	- 9ABCDEF0 12345678 9ABCDEF0 12345678 9ABCDEF0 12345678 9ABCDEF0 12345678&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;are under my control.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;A claim may be revoked through a similar declaration by the presence that made the claim, stating that the claimed presence is no longer under common control with the former presence. Revocation of a claim doesn&#x27;t render a presence revoked; however, when a presence is revoked, all its claims are revoked as well.&lt;&#x2F;p&gt;
&lt;p&gt;When two presences claim each other, they are &lt;strong&gt;associated&lt;&#x2F;strong&gt;, meaning it&#x27;s confirmed that both presences are under common control. When so, they belong to the same &lt;strong&gt;presence group&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;.&#x2F;diagrams&#x2F;presence-group.svg&quot; alt=&quot;Presence group&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Specifically, a single presence not associated with any other presence also forms a group.&lt;&#x2F;p&gt;
&lt;p&gt;An association between two presences from different presence groups &lt;strong&gt;combines&lt;&#x2F;strong&gt; the two groups into one.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;.&#x2F;diagrams&#x2F;groups-combined.svg&quot; alt=&quot;Groups combined&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Absence of an association (due to revocation of a claim) in a presence group may or may not &lt;strong&gt;dissolve&lt;&#x2F;strong&gt; the group into more than one independent groups, depending on how presences are associated within.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;identity&quot;&gt;Identity
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#identity&quot; aria-label=&quot;Anchor link for: identity&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;A presence group is by default unidentified. To &lt;strong&gt;identify&lt;&#x2F;strong&gt; a presence group is to recognize the control of the group as a definite entity by giving it a unique name. In other words, to identify a presence group is to name it.&lt;&#x2F;p&gt;
&lt;p&gt;Identity is group-level. Therefore, identifying any presence in a presence group equals identifying that group; it makes all other presences in that group identified the same.&lt;&#x2F;p&gt;
&lt;p&gt;When an unidentified presence group combines with an identified group, the identified one &lt;strong&gt;infects&lt;&#x2F;strong&gt; the unidentified one with its identity. From another perspective, the unidentified group &lt;strong&gt;contracts&lt;&#x2F;strong&gt; the identity from the identified one.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;.&#x2F;diagrams&#x2F;identity-infection.svg&quot; alt=&quot;Identity infection&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;When an identified presence group is dissolved into more than one groups, all resulting groups turn unidentified, since identity is unique and no more than one groups may be identified the same. Note that a single presence leaving an identified presence group also constitutes dissolution.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;.&#x2F;diagrams&#x2F;identity-dissolution.svg&quot; alt=&quot;Identity dissolution&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Presence groups dissolved into may be identified again. In this scenario, one may want to identify one of the resulting groups as its previous identity, or not identify any of them any more.&lt;&#x2F;p&gt;
&lt;p&gt;Due to various reasons, one physical individual may have multiple identities. In this case, their identities should be treated as separate ones, and no association should be assumed between any of their presences.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;medium-tips&quot;&gt;Medium-specific Adoption Tips
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#medium-tips&quot; aria-label=&quot;Anchor link for: medium-tips&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;XMPP&quot;&gt;XMPP
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#XMPP&quot; aria-label=&quot;Anchor link for: XMPP&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;In Gajim, consecutive messages from the same JID are merged into one block, even if they are from different OMEMO devices. To be able to see the OMEMO fingerprint of each message, go to Preferences → Advanced → Advanced Configuration Editor, and deactivate &lt;code&gt;chat_merge_consecutive_nickname&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;implementations&quot;&gt;Implementations
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#implementations&quot; aria-label=&quot;Anchor link for: implementations&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;An example CLI program &lt;code&gt;sam&lt;&#x2F;code&gt; is created that adopts this model for managing decentralized online identities. The program is released &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;haydenwu&#x2F;sam&quot;&gt;here&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;glossary-translations&quot;&gt;Glossary Translations
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#glossary-translations&quot; aria-label=&quot;Anchor link for: glossary-translations&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;English&lt;&#x2F;th&gt;&lt;th&gt;Mandarin&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;presence&lt;&#x2F;td&gt;&lt;td&gt;现身&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;to revoke&lt;&#x2F;td&gt;&lt;td&gt;吊销&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;claim&lt;&#x2F;td&gt;&lt;td&gt;声明&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;to claim&lt;&#x2F;td&gt;&lt;td&gt;声明所有权&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;association&lt;&#x2F;td&gt;&lt;td&gt;关联&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;to associate&lt;&#x2F;td&gt;&lt;td&gt;关联&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;presence group&lt;&#x2F;td&gt;&lt;td&gt;现身组&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;to combine&lt;&#x2F;td&gt;&lt;td&gt;合并&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;to dissolve&lt;&#x2F;td&gt;&lt;td&gt;解体&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;identity&lt;&#x2F;td&gt;&lt;td&gt;身份&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;to identify&lt;&#x2F;td&gt;&lt;td&gt;标识&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;to infect&lt;&#x2F;td&gt;&lt;td&gt;传染&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;to contract&lt;&#x2F;td&gt;&lt;td&gt;感染&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;claim-boilerplate-translations&quot;&gt;Claim Boilerplate Translations
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#claim-boilerplate-translations&quot; aria-label=&quot;Anchor link for: claim-boilerplate-translations&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Translations on the &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;pci&#x2F;#claim&quot;&gt;example claim on an XMPP account written in English&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Mandarin&quot;&gt;Mandarin
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Mandarin&quot; aria-label=&quot;Anchor link for: Mandarin&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#24292E, #ABB2BF); background-color: light-dark(#FFFFFF, #282C34);&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;本人特此证实，如下 XMPP 账号：&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	alice@example.org&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;及属于该账号且指纹如下的 OMEMO 设备：&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	- 12345678 9ABCDEF0 12345678 9ABCDEF0 12345678 9ABCDEF0 12345678 9ABCDEF0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	- 9ABCDEF0 12345678 9ABCDEF0 12345678 9ABCDEF0 12345678 9ABCDEF0 12345678&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;均受本人控制。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;This page is released into the public domain under &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Two Weeks of Learning Toki Pona</title>
        <published>2025-07-22T00:00:00+00:00</published>
        <updated>2025-07-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/learning-toki-pona/"/>
        <id>https://haydenwu.org/posts/learning-toki-pona/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/learning-toki-pona/">&lt;h1 id=&quot;Two_Weeks_of_Learning_Toki_Pona&quot;&gt;Two Weeks of Learning Toki Pona
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Two_Weeks_of_Learning_Toki_Pona&quot; aria-label=&quot;Anchor link for: Two_Weeks_of_Learning_Toki_Pona&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;p&gt;You may or may not have heard of &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;tokipona.org&quot;&gt;Toki Pona&lt;&#x2F;a&gt;. If not, in a word, it is a popular conlang (meaning a human-made language) second only to Esperanto, with only 100+ basic words and simple grammar. Despite the simplicity, it is, as it claims, already a complete language capable of handling any topics with clarity and comfort.&lt;&#x2F;p&gt;
&lt;p&gt;I had already known of the language for quite a while but had never learned it until two weeks ago. Then, having been in a MUC of friends for some time where everyone else except me speaks Toki Pona, I decided to actually learn the language.&lt;&#x2F;p&gt;
&lt;p&gt;In two weeks, or more precisely 12 days, I finished my Toki Pona course, which included learning all the grammar and memorizing all the core and common words, with what&#x27;s left to do being further honing my language skills through massive inputs and outputs because obviously you can&#x27;t actually master a language in just 12 days. The experience, though, was fun and pleasant throughout, and I would certainly recommend that you have a try at it as well.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Learning_resources&quot;&gt;Learning resources
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Learning_resources&quot; aria-label=&quot;Anchor link for: Learning_resources&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;To begin with, I chose the course &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;lipu-sona.pona.la&#x2F;&quot;&gt;lipu sona pona&lt;&#x2F;a&gt;, which literally means &quot;the good book.&quot; This is an online course well divided into 12-13 lessons, each a day, and is what my learning is mainly about. I also used &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;wasona.com&#x2F;&quot;&gt;Wasona&lt;&#x2F;a&gt; as an auxiliary resource, as it provides some useful Q&amp;amp;As and complementary information.&lt;&#x2F;p&gt;
&lt;p&gt;While kick-starting your learning, you probably want to watch &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=5phj5Ae80h8&quot;&gt;this video&lt;&#x2F;a&gt; to get a general idea of how Toki Pona works. This way, most grammatical points will feel more familiar to you in later lessons. This &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;jansa-tp.github.io&#x2F;tpcheatsheet&#x2F;Toki%20Pona%20Cheat%20Sheet%20v2.pdf&quot;&gt;cheat sheet&lt;&#x2F;a&gt; could also be a useful quick reference.&lt;&#x2F;p&gt;
&lt;p&gt;For the vocabulary part, instead of just relying on the short English translations provided by the course for word definitions, I would recommend using an online Toki Pona dictionary like &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;linku.la&#x2F;&quot;&gt;lipu Linku&lt;&#x2F;a&gt; or &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;nimi.li&#x2F;&quot;&gt;nimi.li&lt;&#x2F;a&gt;. The two are based on the same dataset, but I personally prefer using the latter because of the interface. What&#x27;s important is that, apart from just providing a few English translations, they also provide other helpful information such as word usage, origin and most importantly, semantic space. With each entry, there is an article about the semantic space of the word that describes in greater detail what the word is and is not about, which I find very helpful in understanding a word.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;The_experience&quot;&gt;The experience
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#The_experience&quot; aria-label=&quot;Anchor link for: The_experience&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;With all the resources, how has my learning gone? It actually went smoothly. Learning the language wasn&#x27;t a difficult experience, and all it took was time.&lt;&#x2F;p&gt;
&lt;p&gt;The easiest part is grammar. Thanks to the aforementioned video and  sheet, I was already able to have a good grasp of the grammar in the very first days. Toki Pona was designed to be easily learned, so the grammar was simplified to the maximum extent possible - no tense, voice, person, number, gender, inflection, or anything else. The grammar, though sometimes causing a little bit of ambiguity, is a lot simpler than those of Chinese and English, the languages which I speak, where there are random exceptions everywhere.&lt;&#x2F;p&gt;
&lt;p&gt;Being able to speak both languages also helped me learn the vocabulary. All words in Toki Pona originated from existing languages in the world, and there are quite a number of them from Mandarin, English, and their sister languages. But I bet not considering their origins, you&#x27;ll still have a pleasant time memorizing them, as the spelling and pronunciation are so simple, and you don&#x27;t have silent letters or suspicious syllables like those you get in English, plus there are only 120-140 words to remember after all. By the end of day 10, I had already memorized all core and common words - no flash card apps used and no rote memorizing. The key is to consult the dictionary often and familiarize yourself with the words through various inputs.&lt;&#x2F;p&gt;
&lt;p&gt;By various inputs, of course, we are not just talking about the course materials. There is this &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;lipu.pona.la&#x2F;&quot;&gt;Toki Pona library&lt;&#x2F;a&gt; that contains various works written in Toki Pona, though I personally haven&#x27;t used it. However, while learning the language, I do come across some awesome Toki Pona songs like &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=RPkuTDrCPts&quot;&gt;telo sewi&lt;&#x2F;a&gt;, &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=LU6FdgR85VY&quot;&gt;ale li ante&lt;&#x2F;a&gt;, &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=-x4rJsEbSvU&quot;&gt;mi jaki&lt;&#x2F;a&gt; and &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=uf4psPeNDqg&quot;&gt;Toki Pona Caramelldansen&lt;&#x2F;a&gt;. Some of them are extremely cute, and some of them are extremely emotive, but overall it&#x27;s fascinating seeing how much such a simple language can express.&lt;&#x2F;p&gt;
&lt;p&gt;Listening and speaking (aloud) is definitely an important part, because learning a language is not just learning to read and write it. During the past two weeks, I repeatedly listened to those songs and gradually found myself understanding more and more of the lyrics. I also tried to transcribe the song and translate it and compared my work with the official lyrics to see where I went wrong. A general tip for listening is to not listen syllable by syllable or word by word, otherwise you&#x27;ll have a hard time understanding something like &quot;soweli lili li...&quot; Instead, group the speech in chunks, and try to recognize and remember some common collocations of words and sentence patterns. The same applies to speaking.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Conclusion&quot;&gt;Conclusion
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Conclusion&quot; aria-label=&quot;Anchor link for: Conclusion&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Again, the two-week experience was pleasant and fruitful. It was also an experience about learning to simplify my thoughts and express everything in 130-ish words.&lt;&#x2F;p&gt;
&lt;p&gt;While two weeks is, I think, the average time it takes to finish the basic courses, it certainly takes many months or years to get really fluent, as I&#x27;ve seen from many fluent speakers in the community. Thus, I&#x27;ll probably continue honing my Toki Pona skills and see how far I can eventually get.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;This page is released into the public domain under &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Sound System Setup for Acoustic Guitar Recording and Streaming</title>
        <published>2025-04-05T00:00:00+00:00</published>
        <updated>2025-04-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/guitar-sound-system/"/>
        <id>https://haydenwu.org/posts/guitar-sound-system/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/guitar-sound-system/">&lt;h1 id=&quot;Sound_System_Setup_for_Acoustic_Guitar_Recording_and_Streaming&quot;&gt;Sound System Setup for Acoustic Guitar Recording and Streaming
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Sound_System_Setup_for_Acoustic_Guitar_Recording_and_Streaming&quot; aria-label=&quot;Anchor link for: Sound_System_Setup_for_Acoustic_Guitar_Recording_and_Streaming&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;p&gt;This is my rather unprofessional sound system setup for internally recording and streaming guitar performances on my computer.&lt;&#x2F;p&gt;
&lt;p&gt;In summary, it consists of an amplifier that picks up sounds through a guitar pickup and then transmits them to my laptop through a 3.5mm cable. Recording and streaming are mainly to the credit of OBS and a PulseAudio setup.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Guitar_pickup&quot;&gt;Guitar pickup
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Guitar_pickup&quot; aria-label=&quot;Anchor link for: Guitar_pickup&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Turn the humbucker pickup volume as high as possible without distortion. To see if there&#x27;s distortion, listen to the sounds from the amp rather than the computer.&lt;&#x2F;p&gt;
&lt;p&gt;If available, turn up the internal microphone to a relative high level to be able to pick up percussive sounds.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Amplifier&quot;&gt;Amplifier
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Amplifier&quot; aria-label=&quot;Anchor link for: Amplifier&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Turn input volume to maximum (100%), but do not tweak the bass or treble knobs.&lt;&#x2F;p&gt;
&lt;p&gt;Disable the loudspeaker, then turn the output volume to maximum (100%) to ensure highest S&#x2F;N ratio in the analog transmission.&lt;&#x2F;p&gt;
&lt;p&gt;Cabling is a bit tricky. Thanks to my ThinkPad having only a combo jack, I had to use a 4-pole audio cable.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Recording&quot;&gt;Recording
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Recording&quot; aria-label=&quot;Anchor link for: Recording&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;In OBS sources, create an &lt;code&gt;Audio Input Capture (PulseAudio)&lt;&#x2F;code&gt; and choose the input device. Do not rely on global audio devices (the ones in the Audio Mixer by default), since they follow the system default, which may automatically change when unplugging the cable. Global audio devices can be disabled in the settings.&lt;&#x2F;p&gt;
&lt;p&gt;In the Audio Mixer, always keep the PulseAudio capture at 100% volume. When there&#x27;s a need to otherwise turn input volume up or down, use &lt;code&gt;pavucontrol&lt;&#x2F;code&gt; instead. Doing that in system settings is also okay, but is not as straightforward compared to the dedicated PulseAudio volume controller.&lt;&#x2F;p&gt;
&lt;p&gt;Despite recording internally, there may still be much noise due to analog input. To tackle this, add &lt;code&gt;Noise Suppression&lt;&#x2F;code&gt; to audio filters, preferably with &lt;code&gt;Speex&lt;&#x2F;code&gt; method, which works best for me. Additionally, unplugging my laptop from power seems to magically reduce noise sometimes.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Streaming&quot;&gt;Streaming
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Streaming&quot; aria-label=&quot;Anchor link for: Streaming&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Regular streaming with OBS should be as simple as recording. However, in conferencing software such as Jitsi, where direct access to microphone is the only option, the following PulseAudio &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;thecodeofdaniel.github.io&#x2F;posts&#x2F;virtual-mic-with-obs&#x2F;&quot;&gt;tricks&lt;&#x2F;a&gt; need to be applied.&lt;&#x2F;p&gt;
&lt;p&gt;First, create a virtual microphone named &lt;code&gt;VirtualMic&lt;&#x2F;code&gt; which pipes audio from the virtual output device &lt;code&gt;SinkForVirtualMic&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#24292E, #ABB2BF); background-color: light-dark(#FFFFFF, #282C34);&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#6F42C1, #61AFEF);&quot;&gt;pactl&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2B5581, #98C379);&quot;&gt; load-module&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2B5581, #98C379);&quot;&gt; module-null-sink&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2B5581, #98C379);&quot;&gt; sink_name=Source&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2B5581, #98C379);&quot;&gt; sink_properties=device.description=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#22863A, #98C379);&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#22863A, #98C379);&quot;&gt;SinkForVirtualMic&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#22863A, #98C379);&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#6F42C1, #61AFEF);&quot;&gt;pactl&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2B5581, #98C379);&quot;&gt; load-module&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2B5581, #98C379);&quot;&gt; module-virtual-source&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2B5581, #98C379);&quot;&gt; source_name=VirtualMic&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2B5581, #98C379);&quot;&gt; master=Source.monitor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then, go to OBS settings &amp;gt; Audio &amp;gt; Advanced, and select &lt;code&gt;SinkForVirtualMic&lt;&#x2F;code&gt; for Monitoring Device.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, open Advanced Audio Properties, locate the actual input device, and switch its Audio Monitoring to &lt;code&gt;Monitor and Output&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Now, &lt;code&gt;VirtualMic&lt;&#x2F;code&gt; can be used as the input device for the conferencing software. To get optimal volume, also make sure volumes for &lt;code&gt;VirtualMic&lt;&#x2F;code&gt; and &lt;code&gt;SinkForVirtualMic&lt;&#x2F;code&gt; are set to 100% in Pavucontrol.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;This page is released into the public domain under &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Issues with the English Version of the Mulan Public License</title>
        <published>2024-08-25T00:00:00+00:00</published>
        <updated>2024-08-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/mulanpubl/"/>
        <id>https://haydenwu.org/posts/mulanpubl/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/mulanpubl/">&lt;h1 id=&quot;Issues_with_the_English_Version_of_the_Mulan_Public_License&quot;&gt;Issues with the English Version of the Mulan Public License
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Issues_with_the_English_Version_of_the_Mulan_Public_License&quot; aria-label=&quot;Anchor link for: Issues_with_the_English_Version_of_the_Mulan_Public_License&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;p&gt;The &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;http:&#x2F;&#x2F;license.coscl.org.cn&#x2F;MulanPubL-2.0&quot;&gt;Mulan Public License, Version 2&lt;&#x2F;a&gt; is a &lt;em&gt;bilingual&lt;&#x2F;em&gt; copyleft license published by COSOL. It is approved by neither FSF nor OSI, though its sibling license, the &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;http:&#x2F;&#x2F;license.coscl.org.cn&#x2F;MulanPSL2&quot;&gt;Mulan Permissive Software License, Version 2&lt;&#x2F;a&gt; was approved by OSI as an &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;opensource.org&#x2F;license&#x2F;mulanpsl-2-0&quot;&gt;&quot;open source&quot; license&lt;&#x2F;a&gt;. What I&#x27;m talking about today is, however, not &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;License_proliferation&quot;&gt;license proliferation&lt;&#x2F;a&gt; or anything like that, but rather how problematic the English version of that license can be.&lt;&#x2F;p&gt;
&lt;p&gt;According to its license terms, the Mulan Public License &quot;is written in both Chinese and English&quot;, both &quot;having the same legal effect&quot;, and &quot;in case of divergence, the Chinese version shall prevail.&quot; I&#x27;m glad the English version doesn&#x27;t look like it&#x27;s machine-translated, but from what you&#x27;re about to read soon, that could be exactly what extinguished my gladness.&lt;&#x2F;p&gt;
&lt;p&gt;Starting from Section 0 of the license, we&#x27;ve already got a typo here:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Affiliates&lt;&#x2F;strong&gt; &lt;u&gt;mmeans&lt;&#x2F;u&gt; entities that control, are controlled by, or are under common control...&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Moving on to Section 2, which is about grant of patent license:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;... such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future ..., &lt;u&gt;excluding of&lt;&#x2F;u&gt; any patent claims solely &lt;u&gt;be&lt;&#x2F;u&gt; infringed by your modification.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;There&#x27;s no &quot;excluding of&quot;, just &quot;excluding&quot; (the incorrect one is used in Section 0 as well). Also, just so it&#x27;s grammatical, use &quot;to be&quot; instead of &quot;be&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;For Section 4, we&#x27;ve got a lot to talk about:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you Distribute your Derivative Work, you &lt;u&gt;have to&lt;&#x2F;u&gt;:&lt;&#x2F;p&gt;
&lt;p&gt;(i) accompanying the &lt;u&gt;Derivative work&lt;&#x2F;u&gt;, provide recipients with &lt;u&gt;Corresponding Source Code&lt;&#x2F;u&gt; of your Derivative Work under this License...&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;In order to indicate requirements, &quot;must&quot; should be used instead of &quot;have to&quot;. Also, &quot;Derivative &lt;em&gt;work&lt;&#x2F;em&gt;&quot; is not capitalized, and a &quot;the&quot; is missing before &quot;Corresponding Source Code&quot;.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you provide the Corresponding Source Code through a download link, you should place such link address prominently in the Derivative Work or its accompanying documents, and &lt;u&gt;be valid no less than three years&lt;&#x2F;u&gt; from your Distribution of the particular Derivative Work, and...&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;The whole parallel construction grammatically indicates that it is &lt;em&gt;you&lt;&#x2F;em&gt; rather than the link that should &quot;be valid&quot;. To keep the subject consistent while expressing the correct object, use a causative verb. Also, a preposition is needed there for &quot;no less than three years&quot; to follow. Taken together, this becomes &quot;keep it valid for no less than three years.&quot;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;(ii) accompanying the Derivative Work, provide recipients with a written offer indicating your willingness to provide the Corresponding Source Code of the Derivative Work &lt;u&gt;licensed&lt;&#x2F;u&gt; under this License.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I venture that the word &quot;licensed&quot; is redundant, though the Chinese version &lt;em&gt;does&lt;&#x2F;em&gt; make this part attributive rather than adverbial.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Such written offer shall be placed prominently in the Derivative Work or its accompanying documents. &lt;u&gt;Without reasonable excuse&lt;&#x2F;u&gt;, the recipient shall be able to acquire the &lt;u&gt;Corresponding Source code&lt;&#x2F;u&gt; of the Derivative work &lt;u&gt;for&lt;&#x2F;u&gt; no more than three months from your receipt of a valid request, and &lt;u&gt;be valid&lt;&#x2F;u&gt; no less than three years from your Distribution of the particular Derivative Work.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Apart from &quot;Corresponding Source &lt;em&gt;code&lt;&#x2F;em&gt;&quot; not fully capitalized, we&#x27;re again faced with confusing subjects. Since the one keeping the written offer valid is different from the subject (the recipient) here, making the verbs parallel doesn&#x27;t work anyway -- use a clause or a sentence instead (&quot;you must keep it valid for...&quot;).&lt;&#x2F;p&gt;
&lt;p&gt;For the adverbial part (&quot;without reasonable excuse&quot;), even if you believe in dangling participles (which are very dangerous in formal writing, not to mention this is not even a participle), saying &quot;unless with&quot; rather than &quot;without&quot; should make more sense. But since the subjects are indeed different, and there&#x27;s no even a thing called &quot;dangling preposition&quot;, use a clause (&quot;Unless you have a reasonable excuse&quot;).&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;ll finally argue that the preposition &quot;for&quot; should be replaced with &quot;within&quot;, the &quot;from&quot; after that thus replaced with &quot;of&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;For the rest of the license, Sections 5 to 8 plus the Appendix, each of them got us something to talk about. And for the sake of readability, Sections 7 and 8 have been transformed to lowercase.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;[Your license will not be terminated, provided that] it’s your first time &lt;u&gt;to receive&lt;&#x2F;u&gt; a notice of termination from such Contributor pursuant to this License, and you have cured all the breaches within 30 days of &lt;u&gt;receipt&lt;&#x2F;u&gt; of such notice.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&quot;Receiving&quot; instead of &quot;to receive&quot;. Also, add a &quot;your&quot; before that &quot;receipt&quot;.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you combine Contribution or your Derivative Work with a work licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (hereinafter referred to as “AGPLv3”) or its subsequent versions, and according to the AGPLv3 or its subsequent versions, you have an obligation to make the combined work to be licensed under the &lt;u&gt;corresponding license&lt;&#x2F;u&gt;, you can license such combined work under &lt;u&gt;the license&lt;&#x2F;u&gt;...&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&quot;Corresponding license&quot; is not defined, and if you take it literally, it may also be interpreted as something else other than the AGPLv3 or its subsequent versions. The same applies to the phrase &quot;the license&quot; that follows. In the Chinese version, however, &quot;AGPLv3 or its subsequent versions&quot; is explicitly used here.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Contribution &lt;u&gt;are&lt;&#x2F;u&gt; provided without warranties of any kind, either express or implied. In no event shall any Contributor or copyright holder be liable to you for any damages, including, but not limited to any direct, &lt;u&gt;or&lt;&#x2F;u&gt; indirect, special or consequential damages arising from your use or inability to use the Contribution...&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&quot;Contribution&quot; is not plural, as indicated elsewhere in the license as well. Also, &quot;or&quot; is redundant.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;u&gt;In the case of&lt;&#x2F;u&gt; divergence between the Chinese and English versions, the Chinese version shall prevail.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&quot;In case of&quot;, not &quot;in the case of&quot;, since this is not about a specific case.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Create a file named “LICENSE” which contains the whole &lt;u&gt;context&lt;&#x2F;u&gt; of this License in the first directory of your software package;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I doubt if what they mean is &quot;content&quot;, but &quot;a copy of this License&quot; just sounds much better.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Conclusion&quot;&gt;Conclusion
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Conclusion&quot; aria-label=&quot;Anchor link for: Conclusion&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;While I&#x27;ve certainly got a lot more to talk about, I&#x27;m already tired of writing at this point. The steward could have been more professional.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;This page is released into the public domain under &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>混合作品的版权归属与许可证兼容性</title>
        <published>2023-09-27T00:00:00+00:00</published>
        <updated>2023-09-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/copyright-licensing-faq-zh/"/>
        <id>https://haydenwu.org/posts/copyright-licensing-faq-zh/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/copyright-licensing-faq-zh/">&lt;h1 id=&quot;混合作品的版权归属与许可证兼容性&quot;&gt;混合作品的版权归属与许可证兼容性
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#混合作品的版权归属与许可证兼容性&quot; aria-label=&quot;Anchor link for: 混合作品的版权归属与许可证兼容性&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;blockquote&gt;
&lt;p&gt;本系列作品：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-intro-zh&#x2F;&quot;&gt;版权法入门&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;licensing-intro-zh&#x2F;&quot;&gt;软件许可证入门&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;混合作品的版权归属与许可证兼容性&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;请不要被这个标题吓到！我们会使用尽量简单的语言，解释一些在协作软件项目时，常常会遇到的版权与许可证问题。本文使用了问答的形式来组织，这样你就可以只阅读你需要了解的部分。&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#incorporate&quot;&gt;我能将软件 A 的源代码并入软件 B 吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#incompatibility&quot;&gt;软件 A 的许可证不兼容软件 B 的许可证，就代表着 A 的源代码不能并入 B 的源代码吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#responsibility&quot;&gt;将软件 A 的源代码并入软件 B 时，我需要做什么？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#relicensing&quot;&gt;我可以更换软件许可证吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#upgrade-license&quot;&gt;我可以升级到新版本的许可证吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#cla&quot;&gt;有些项目要求我在对其贡献之前签署一份 CLA。那是什么？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#revoke-license&quot;&gt;我可以收回我的许可吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#modify-license&quot;&gt;我可以修改一份许可证，或编写一份新的许可证吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#additional-permission&quot;&gt;我可以为一份许可证添加附加许可吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#further-restriction&quot;&gt;我可以为一份许可证添加附加限制吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#dual-licensing&quot;&gt;我可以为我的软件使用多份许可证吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#selling-exceptions&quot;&gt;我可以让他人付费来豁免某个许可证的要求吗？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#all-compatibility&quot;&gt;各种许可证相互兼容情况如何？&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#afterwords&quot;&gt;后记&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;incorporate&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#incorporate&quot;&gt;我能将软件 A 的源代码并入软件 B 吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#incorporate&quot; aria-label=&quot;Anchor link for: incorporate&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;这主要取决于 A 的许可证是否兼容 B 的许可证。一般来说，自由软件许可证的兼容性有如下的关系：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;宽松型许可证 ⇒ 中间型（弱 copyleft）许可证 ⇒ copyleft 许可证&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这里的箭头（⇒），代表前者的代码可以并入后者的代码，但反过来不成立。如果你还不理解这些类别的涵义，请阅读&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;licensing-intro-zh&#x2F;&quot;&gt;软件许可证入门&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;例如，LGPLv3 是一份中间型许可证；GPLv3 是一份 copyleft 许可证。所以，你可以把 LGPLv3 下的代码并入 GPLv3 下的代码之中。同理，宽松型许可证下的代码，也可以并入中间型许可证或 copyleft 许可证下的代码。例如，MIT 许可证或 Apache 许可证 2.0 下的代码，可以并入 LGPLv3 或 MPL 2.0 下的代码，也可以并入 GPLv3 或 AGPLv3 下的代码。&lt;&#x2F;p&gt;
&lt;p&gt;但是请注意，这只是通常的情况。有时候，一些许可证的老版本会导致不兼容。常见的例子如：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Apache 许可证 2.0 不兼容 GPLv2，但兼容 GPLv3；&lt;&#x2F;li&gt;
&lt;li&gt;MPL 1.1 不兼容 GPL，但 MPL 2.0 兼容它（但有一个例外，见下）。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;还有一些其他的原因也会导致不兼容。例如，MPL 2.0 允许分发者附加一份声明，以禁止将该许可证下的软件并入 GNU 许可证，这样的话它就与 GPL 不兼容。详见&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#all-compatibility&quot;&gt;完整的许可证兼容性表格&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;incompatibility&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#incompatibility&quot;&gt;软件 A 的许可证不兼容软件 B 的许可证，就代表着 A 的源代码不能并入 B 的源代码吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#incompatibility&quot; aria-label=&quot;Anchor link for: incompatibility&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;不一定。这只代表着在 B 的许可证不变的情况下，A 的源代码不能并入 B 的源代码。更换 B 的许可证之后，你就可能可以将 A 的源代码并入 B 的源代码。详见&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#all-compatibility&quot;&gt;完整的许可证兼容性表格&lt;&#x2F;a&gt;以及&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#relicensing&quot;&gt;如何更换软件许可证&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;responsibility&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#responsibility&quot;&gt;将软件 A 的源代码并入软件 B 时，我需要做什么？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#responsibility&quot; aria-label=&quot;Anchor link for: responsibility&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;这取决于软件 A 的许可证。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;如果软件 A 的许可证是宽松型许可证&lt;&#x2F;strong&gt;，那么一般要满足的条件是在软件 B 中保留软件 A 的署名信息。例如：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;当软件 A 使用 MIT 许可证或 BSD（2-Clause 或 3-Clause）许可证时，只需要在软件 B 的适当位置保留软件 A 的版权声明和许可证声明。&lt;&#x2F;li&gt;
&lt;li&gt;当软件 A 使用 Apache 许可证 2.0 时，则对软件 B 有以下的要求：（1）附带一份许可证的副本；（2）标注修改过的文件；（3）保留源代码中的版权、专利、商标、署名信息等声明；（4）在适当位置保留随软件分发的 NOTICE 文件中的归属声明（如果有）。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;如果软件 A 的许可证是 copyleft 许可证&lt;&#x2F;strong&gt;，则：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;以 GPL 为例，主要需满足的要求如下：（1）附带一份许可证的副本；（2）标注作品经过修改，并给出修改日期；（3）保留版权声明、免责声明等法律声明；（4）以同样的许可证提供软件 B 的源代码。&lt;&#x2F;li&gt;
&lt;li&gt;对 AGPL 而言，则是在 GPL 的基础上，向通过网络服务使用软件 B 的用户，也提供该软件的源代码。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;如果软件 A 的许可证是中间型许可证（即弱 copyleft 许可证）&lt;&#x2F;strong&gt;，典型的是 MPL 和 LGPL，那么 B 的分发条款可以自己任意选择。话虽如此，在分发作品 B 时也至少需要在 B 中满足这些条件：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;A 的许可证常见以下要求：（1）声明组合作品使用了软件 A；（2）保留 A 的版权和许可证声明；（3）提供 A 的许可证副本获取方法；（4）以同样的许可证提供 A 或其修改版的源代码。&lt;&#x2F;li&gt;
&lt;li&gt;此外，LGPL 还要求你允许接收者使用 A 的修改版来组合一份 B 的重组版本。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;以上是我们对一些常见许可证的义务进行的简单概括。如果你想要准确地了解某个许可证的具体内容，请阅读许可证原文。&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;atomgit.com&#x2F;translation&#x2F;license-translation&quot;&gt;这里&lt;&#x2F;a&gt;有一些资源，是一些自由软件许可证的（非官方）中文翻译。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;relicensing&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#relicensing&quot;&gt;我可以更换软件许可证吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#relicensing&quot; aria-label=&quot;Anchor link for: relicensing&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;可以。我们将这种行为称为再许可（relicensing）。&lt;&#x2F;p&gt;
&lt;p&gt;如果该软件完全由你编写，没有来自其他人的代码，那么你可以直接对软件进行再许可。&lt;&#x2F;p&gt;
&lt;p&gt;如果你的软件包含了并非由你写的代码，那么要进行再许可，则必须满足：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;这部分代码所使用的许可证&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#all-compatibility&quot;&gt;兼容&lt;&#x2F;a&gt;你想要将你的软件更换至的许可证；或&lt;&#x2F;li&gt;
&lt;li&gt;如果这部分代码的作者在向你贡献这部分代码时，已经提前签署了一份 &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#cla&quot;&gt;CLA 或类似的协议&lt;&#x2F;a&gt;，其中明确同意将再许可的权利授予给你，那么你可以直接这么做。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;如果以上都不是你的情况，那么你必须向这部分代码的原作者索取授权，才能进行再许可。&lt;&#x2F;p&gt;
&lt;p&gt;请注意，如果你对软件进行再许可，新的许可证只会应用于软件的后续版本。在旧的许可证下发布的软件版本，其旧许可仍然有效。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;upgrade-license&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#upgrade-license&quot;&gt;我可以升级到新版本的许可证吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#upgrade-license&quot; aria-label=&quot;Anchor link for: upgrade-license&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;同一许可证的两个不同版本实际上是两份不同的许可证，所以升级到新版本的许可证也相当于更换一份许可证，这是需要有权才能做的。请参看&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#relicensing&quot;&gt;上一个问题&lt;&#x2F;a&gt;，了解能这么做的前提。&lt;&#x2F;p&gt;
&lt;p&gt;然而，这里有两个特例：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;对于 GNU 家族的许可证（GPL、AGPL、LGPL）而言，
&lt;ol&gt;
&lt;li&gt;如果你在发布项目时，声明的是该项目是“以某许可证或其任何后续版本许可”，例如“以 GPLv2 或其任何后续版本许可”或“以 AGPLv3 或其任何后续版本许可”，则接收者可以在该版本的许可证，或其更新的版本下接收许可。&lt;&#x2F;li&gt;
&lt;li&gt;如果你在发布项目时，声明该项目指定了一个代理方，代为决定采用哪个后续版本的许可证，则接收者可以在当前的许可证版本或代理方公开接受的后续版本下接受许可。&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;invent.kde.org&#x2F;system&#x2F;dolphin&#x2F;-&#x2F;blob&#x2F;master&#x2F;LICENSES&#x2F;LicenseRef-KDE-Accepted-GPL.txt&quot;&gt;这里&lt;&#x2F;a&gt;有一个项目指定代理人的例子。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;对于 MPL 而言，如果你使用了 MPL 2.0（也就是目前最常用的版本）发布一个项目，那么接收者就可以在 MPL 的 2.0 版本或任何后续版本下使用该项目，无论你最初是否有允许在后续版本的 MPL 下使用该项目。也就是说，这个自动升级的机制是嵌在许可证中的，无需手动升级许可证，也不能避免这个机制。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;cla&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#cla&quot;&gt;有些项目要求我在对其贡献之前签署一份 CLA。那是什么？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#cla&quot; aria-label=&quot;Anchor link for: cla&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;CLA 即贡献者许可协议（Contributor License of Agreement）。部分项目要求贡献者签署一份 CLA 或者类似的文档，才能接受贡献者提交的贡献。&lt;&#x2F;p&gt;
&lt;p&gt;这类文档的的内容可能因项目的不同而不同。有些只是为了确保贡献者是这些贡献的原作者，或有权提交这些贡献（例如内核 Linux 的 DCO）。然而，有些却要求你授予再许可的权利，甚至转移版权给他们。这样的话，他们后续就有权不经过你的许可而更换你的贡献的许可证，甚至是将它并入专有软件。&lt;&#x2F;p&gt;
&lt;p&gt;如果你要贡献的项目要求你签署这类文档，那么一定要读一读它的内容。如果你认为它是不可接受的，那么你可以创建你自己的分支，而不必遵守该项目的 CLA 或类似文档，只需遵守其许可证。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;revoke-license&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#revoke-license&quot;&gt;我可以收回我的许可吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#revoke-license&quot; aria-label=&quot;Anchor link for: revoke-license&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;不能。自由软件的许可是不能撤销的。只要用户接收到了你分发的软件，那么他们就永久获得了在其许可证下使用该软件的权利，即使你停止分发该软件或删除该软件的公共仓库。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;modify-license&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#modify-license&quot;&gt;我可以修改一份许可证，或编写一份新的许可证吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#modify-license&quot; aria-label=&quot;Anchor link for: modify-license&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;修改一份许可证实则就是在编写一份新的许可证。我们强烈不建议这么做。如果你的目的是附加更多许可，那么请阅读&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#additional-permission&quot;&gt;这个问题&lt;&#x2F;a&gt;；如果你的目的是附加更多限制，那么请阅读&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#further-restriction&quot;&gt;这个问题&lt;&#x2F;a&gt;。如果你执意要编写一份新的许可证，那么要注意以下问题：&lt;&#x2F;p&gt;
&lt;p&gt;首先，编写一份新的许可证需要考虑诸多法律问题，如法律效力和许可证兼容性。法律问题可能会影响其他项目对该项目的复用欲望。&lt;&#x2F;p&gt;
&lt;p&gt;其次，你不能将你的许可证命名为诸如“GNU 禁止商业用途许可证”、“Apache 禁止修改许可证”或“Mozilla 仅个人使用许可证”。GNU、Apache 和 Mozilla 等名字是有商标的。如果你这么做，会造成商标侵权。&lt;&#x2F;p&gt;
&lt;p&gt;再者，如果你要在你编写的新许可证中，改编来自其他许可证的文本，那么你可能还要获得这些许可证文本的版权许可。就我们所知，&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#ModifyGPL&quot;&gt;GNU&lt;&#x2F;a&gt;、&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.mozilla.org&#x2F;en-US&#x2F;MPL&#x2F;2.0&#x2F;FAQ&#x2F;#making-my-own-license&quot;&gt;Mozilla&lt;&#x2F;a&gt; 和 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.apache.org&#x2F;foundation&#x2F;license-faq.html#mod-license&quot;&gt;Apache&lt;&#x2F;a&gt; 允许了其许可证文本的再使用，但如前所述，禁止了其商标的使用。此外，GNU 还禁止其序言和附录的再使用。&lt;&#x2F;p&gt;
&lt;p&gt;最后，如果要为一个已经在其他许可证下发布的软件，编写一份新的许可证，则需要确保是否有权对其进行再许可。请参看&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#relicensing&quot;&gt;这个问题&lt;&#x2F;a&gt;，了解能这么做的前提。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;additional-permission&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#additional-permission&quot;&gt;我可以为一份许可证添加附加许可吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#additional-permission&quot; aria-label=&quot;Anchor link for: additional-permission&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;可以。如果你希望某个许可证的限制条件不要生效或不要在某种情况下生效，那么你可以随软件的许可证声明再附带一段法律声明，说明你对这个许可证附加了怎样的例外情况。&lt;&#x2F;p&gt;
&lt;p&gt;附加许可通常发生在软件使用了 copyleft 许可证的情况，用来在豁免某些情况下 copyleft 的适用性。例如在&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#FontException&quot;&gt;这种情况&lt;&#x2F;a&gt;、&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#WMS&quot;&gt;这种情况&lt;&#x2F;a&gt;或（稍微复杂的）&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#GPLIncompatibleLibs&quot;&gt;这种情况&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;为许可证添加附加许可，也就是把软件的许可证条款变得宽松了一些；这就类似于更换许可证，也是需要有权才能做的。请参看&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#relicensing&quot;&gt;这个问题&lt;&#x2F;a&gt;，了解能这么做的前提。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;further-restriction&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#further-restriction&quot;&gt;我可以为一份许可证添加附加限制吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#further-restriction&quot; aria-label=&quot;Anchor link for: further-restriction&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;通常不能以你预期的方式。&lt;&#x2F;p&gt;
&lt;p&gt;许可证是有完整性（integrity）的。一般地，如果你对某个许可证添加了附加限制，那么你就不能再说你的软件“以 [原许可证的名字] 授权”了。&lt;&#x2F;p&gt;
&lt;p&gt;有时，说某软件“以 [原许可证的名字] 授权，并带有某些限制”也是不可行的。例如，如果你使用 (A)GPLv3 发布某软件，并声称禁止用于商业用途，那么 (A)GPLv3 的第 7 节就会直接使这条限制失效。&lt;&#x2F;p&gt;
&lt;p&gt;有些许可证确实允许存在一定的附加条款，但能添加的条款十分有限，并不能达到你想要的任意的限制条款。例如：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;MPL 2.0 允许作者禁止将软件并入 GNU 许可证下的软件中。&lt;&#x2F;li&gt;
&lt;li&gt;(A)GPL 允许软件附带一些条款来保护名誉权或添加附加的免责声明。实际上，(A)GPL 许可证允许这些限制，只是为了让一些现有的许可证与之相兼容。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;综上，为一份已有的许可证添加自己想要的任意限制，基本是不可行的。你需要&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#modify-license&quot;&gt;编写一份新的许可证&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dual-licensing&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#dual-licensing&quot;&gt;我可以为我的软件使用多份许可证吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#dual-licensing&quot; aria-label=&quot;Anchor link for: dual-licensing&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;可以。我们将这种行为称为双重许可（dual licensing）。&lt;&#x2F;p&gt;
&lt;p&gt;你可以在软件的许可证声明中，声明“该软件以 [许可证 A] 或 [许可证 B] 许可”，这样的话，接收者就可以要么在许可证 A 的条款下接收该软件，要么在许可证 B 的条款下接收该软件。&lt;&#x2F;p&gt;
&lt;p&gt;一些开发者有时会选择使用条款类似的多份许可证，来对软件进行双重许可。这么做通常是因为有些许可证条款类似，但兼容的许可证不同，而通过双重许可，可以扩大软件的许可证兼容范围。不过，这种行为已经很少见了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;selling-exceptions&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#selling-exceptions&quot;&gt;我可以让他人付费来豁免某个许可证的要求吗？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#selling-exceptions&quot; aria-label=&quot;Anchor link for: selling-exceptions&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;可以。我们将这种行为称为出售例外（selling exceptions）。&lt;&#x2F;p&gt;
&lt;p&gt;出售例外与&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#additional-permission&quot;&gt;附加许可&lt;&#x2F;a&gt;类似，只不过他方是付费购买了这样的许可。以及，这种许可一般是授予至独家，而不是授予至公众的。&lt;&#x2F;p&gt;
&lt;p&gt;这种许可模式并不少见。例如 Qt 框架是使用 GPL 许可的，这使得使用了 Qt 的程序必须同样使用 GPL 发布为自由软件。但开发者可以购买一份例外，从而有权将自己使用了 Qt 的程序发布为专有软件。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;all-compatibility&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#all-compatibility&quot;&gt;各种许可证相互兼容情况如何？&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#all-compatibility&quot; aria-label=&quot;Anchor link for: all-compatibility&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;针对一份 GNU 许可证与另一份 GNU 许可证的之间的兼容性，请参看 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#AllCompatibility&quot;&gt;GNU 许可证兼容性表格&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;针对涉及非 GNU 许可证的兼容性，请参看以下我们总结的表格：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#non-gnu-into-non-gnu&quot;&gt;&lt;strong&gt;非 GNU&lt;&#x2F;strong&gt; 许可证与&lt;strong&gt;非 GNU&lt;&#x2F;strong&gt; 许可证的兼容性&lt;&#x2F;a&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#gnu-into-non-gnu&quot;&gt;&lt;strong&gt;GNU&lt;&#x2F;strong&gt; 许可证与&lt;strong&gt;非 GNU&lt;&#x2F;strong&gt; 许可证的兼容性&lt;&#x2F;a&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#non-gnu-into-gnu&quot;&gt;&lt;strong&gt;非 GNU&lt;&#x2F;strong&gt; 许可证与 &lt;strong&gt;GNU&lt;&#x2F;strong&gt; 许可证的兼容性&lt;&#x2F;a&gt;。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;阅读下面的表格前，请先注意：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;“BSD”包括了 BSD 2-Clause 和 BSD 3-Clause 许可证。&lt;&#x2F;li&gt;
&lt;li&gt;“MPL 2.0 NCE”是我们临时创建的一个代号，它表示“以 MPL 2.0 许可，不兼容次级许可”。根据 MPL 2.0，如果软件分发者在其许可证声明中，附加了一份 MPL 2.0 附录 B 中的内容，那么该软件就不能和一些许可证相组合。&lt;&#x2F;li&gt;
&lt;li&gt;“某许可证+”表示分发者声明了接收者可以“在某许可证或其任何后续版本下”接受许可。&lt;&#x2F;li&gt;
&lt;li&gt;当我们说“可以：组合遵循某许可证”时，则表示当前项目必须要&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#relicensing&quot;&gt;更换&lt;&#x2F;a&gt;成那份许可证，组合才能进行。当我们只说了“可以”时，那么则无需更换许可证。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;non-gnu-into-non-gnu&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#non-gnu-into-non-gnu&quot;&gt;1. 非 GNU 许可证与非 GNU 许可证的兼容性&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#non-gnu-into-non-gnu&quot; aria-label=&quot;Anchor link for: non-gnu-into-non-gnu&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;纵列表示要并入的代码使用的许可证，横列表示当前项目的软件许可证。&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;↱&lt;&#x2F;th&gt;&lt;th&gt;MIT &#x2F; BSD 许可证&lt;&#x2F;th&gt;&lt;th&gt;Apache 许可证 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0 NCE&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;MIT &#x2F; BSD 许可证&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Apache 许可证 2.0&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 Apache 许可证 2.0&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;MPL 2.0&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 MPL 2.0&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 MPL 2.0&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;待研究&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;MPL 2.0 NCE&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 MPL 2.0 NCE&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 MPL 2.0 NCE&lt;&#x2F;td&gt;&lt;td&gt;待研究&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 MPL 2.0 NCE&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;gnu-into-non-gnu&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#gnu-into-non-gnu&quot;&gt;2. GNU 许可证与非 GNU 许可证的兼容性&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#gnu-into-non-gnu&quot; aria-label=&quot;Anchor link for: gnu-into-non-gnu&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;纵列表示要并入的代码使用的许可证，横列表示当前项目的软件许可证。&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;↱&lt;&#x2F;th&gt;&lt;th&gt;MIT &#x2F; BSD 许可证&lt;&#x2F;th&gt;&lt;th&gt;Apache 许可证 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0 NCE&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;LGPLv2.1&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv2.1&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv2.1&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv2.1+&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv2.1 或 LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv2.1+&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv2&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv2&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv2&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv2+&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv2 或 GPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv3&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv2+&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv3&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv3+&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv3+&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 AGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;non-gnu-into-gnu&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#non-gnu-into-gnu&quot;&gt;3. 非 GNU 许可证与 GNU 许可证的兼容性&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#non-gnu-into-gnu&quot; aria-label=&quot;Anchor link for: non-gnu-into-gnu&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;横列表示要并入的代码使用的许可证，纵列表示当前项目的软件许可证。&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;⬐&lt;&#x2F;th&gt;&lt;th&gt;MIT &#x2F; BSD 许可证&lt;&#x2F;th&gt;&lt;th&gt;Apache 许可证 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0 NCE&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;LGPLv2.1&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv2.1+&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv2&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv2+&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以：组合遵循 GPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv3+&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;可以&lt;&#x2F;td&gt;&lt;td&gt;不行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;script markdown=0&gt;
	let tmp_cells = document.querySelectorAll(&#x27;#non-gnu-into-non-gnu ~ table td&#x27;);
	let ok_text = tmp_cells[1].innerText;
	let ok_prefix = tmp_cells[6].innerText.substr(0, ok_text.length + 1);
	for (td of document.querySelectorAll(&#x27;td:not(:first-of-type)&#x27;)) {
		if (td.innerText == ok_text)
			td.setAttribute(&quot;style&quot;, &quot;background: #00ff0020&quot;);
		else if (td.innerText.indexOf(ok_prefix) == 0)
			td.setAttribute(&quot;style&quot;, &quot;background: #90ff0020&quot;);
		else
			td.setAttribute(&quot;style&quot;, &quot;background: #90000020&quot;);
	}
&lt;&#x2F;script&gt;
&lt;h2 id=&quot;afterwords&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;#afterwords&quot;&gt;后记&lt;&#x2F;a&gt;
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#afterwords&quot; aria-label=&quot;Anchor link for: afterwords&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;尽管本文已经足够冗长，我们还有一些事情尚未解释清楚。&lt;&#x2F;p&gt;
&lt;p&gt;这其中最重要的一点是，许可情况的分别不完全等同于许可证的分别，同一份许可证也可以产生不同的许可情况用 SPDX 标识符来解释就是，举例来说，&lt;code&gt;MPL-2.0&lt;&#x2F;code&gt; != &lt;code&gt;MPL-2.0-no-copyleft-exception&lt;&#x2F;code&gt; 或 &lt;code&gt;GPL-3.0-only&lt;&#x2F;code&gt; != &lt;code&gt;GPL-3.0-or-later&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;可能你目前不理解这一点，但我们希望在后续的修订中将它解释清楚。&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;本页面以 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt; 发布至公有领域。&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Copyright Management and License Compatibility in a Remixed Work</title>
        <published>2023-09-27T00:00:00+00:00</published>
        <updated>2023-09-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/copyright-licensing-faq/"/>
        <id>https://haydenwu.org/posts/copyright-licensing-faq/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/copyright-licensing-faq/">&lt;h1 id=&quot;Copyright_Management_and_License_Compatibility_in_a_Remixed_Work&quot;&gt;Copyright Management and License Compatibility in a Remixed Work
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Copyright_Management_and_License_Compatibility_in_a_Remixed_Work&quot; aria-label=&quot;Anchor link for: Copyright_Management_and_License_Compatibility_in_a_Remixed_Work&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Works in this series:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-intro&#x2F;&quot;&gt;An Introduction to Copyright&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;licensing-intro&#x2F;&quot;&gt;An Introduction to Software Licensing&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Copyright Management and License Compatibility in a Remixed Work&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Don&#x27;t get scared by the title! We wish to use our simplest language to explain some common scenarios that you may encounter when collaborating on software projects. This article is structured in a Q&amp;amp;A way so that you can read only the parts of your concern.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#incorporate&quot;&gt;Can I incorporate the source code of project A into project B?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#incompatibility&quot;&gt;If the project A is under an incompatible license with project B, is it impossible to incorporate the source code of A into B?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#responsibility&quot;&gt;What should I do when incorporating project A&#x27;s source code into project B?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#relicensing&quot;&gt;Can I change the license of my project?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#upgrade-license&quot;&gt;Can I upgrade the license version of my project?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#cla&quot;&gt;I&#x27;m asked to sign a CLA before contributing to a project. What is it?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#revoke-license&quot;&gt;Can I revoke my license?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#modify-license&quot;&gt;Can I modify an existing license or draft a new license?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#additional-permission&quot;&gt;Can I grant additional permission to an existing license?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#further-restriction&quot;&gt;Can I add further restrictions to an existing license?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#dual-licensing&quot;&gt;Can I use multiple licenses for my project?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#selling-exceptions&quot;&gt;Can I allow others to pay me for an exemption from a requirement of the license?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#all-compatibility&quot;&gt;How are various licenses compatible with each other?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#afterwords&quot;&gt;Afterwords&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;incorporate&quot;&gt;Can I incorporate the source code of project A into project B?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#incorporate&quot; aria-label=&quot;Anchor link for: incorporate&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;It primarily depends on whether the license of project A is compatible with the license of project B. Generally, compatibility among free software licenses can be explained as follows:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Permissive licenses ⇒ Intermediate (weak copyleft) licenses ⇒ copyleft licenses&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Whereof code under a license on the left side of the arrow (⇒) may be incorporated into code under a license on the right side. If you are still confused about what these categories mean, read &lt;em&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;licensing-intro&#x2F;&quot;&gt;An Introduction to Software Licensing&lt;&#x2F;a&gt;&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;For example, since LGPLv3 is an intermediate license, and GPLv3 is a copyleft license, you may incorporate LGPLv3-licensed code into GPLv3-licensed code.&lt;&#x2F;p&gt;
&lt;p&gt;Similarly, permissive-licensed code may also be incorporated into intermediate-licensed code, or into copylefted code. For example, code under the MIT License or the Apache License 2.0 maybe incorporated into code under the LGPLv3 or MPL 2.0, or into code under the GPLv3 or AGPLv3.&lt;&#x2F;p&gt;
&lt;p&gt;Do note that these are usually, but not always the case. Sometimes, older versions of licenses may cause incompatibility. Some common examples are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The Apache License 2.0 is not compatible with GPLv2, but is compatible with GPLv3.&lt;&#x2F;li&gt;
&lt;li&gt;MPL 1.1 is not compatible with GPL, but MPL 2.0 is compatible with it. (But there is an exception; see below.)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Some other factors may also lead to incompatibility. For example, MPL 2.0 allows the distributor to attach a notice prohibiting the software to be incorporated into a project under a GNU license. This way, it is not compatible with GPL.&lt;&#x2F;p&gt;
&lt;p&gt;See also our &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#all-compatibility&quot;&gt;compatibility matrix&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;incompatibility&quot;&gt;If the project A is under an incompatible license with project B, is it impossible to incorporate the source code of A into B?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#incompatibility&quot; aria-label=&quot;Anchor link for: incompatibility&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Not really. It&#x27;s impossible only when their license remains unchanged. By changing the license of project A or B, you may be able to incorporate the source code of A into B. See our &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#all-compatibility&quot;&gt;compatibility matrix&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#relicensing&quot;&gt;how to change the license&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;responsibility&quot;&gt;What should I do when incorporating project A&#x27;s source code into project B?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#responsibility&quot; aria-label=&quot;Anchor link for: responsibility&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;It depends on the license of project A.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;If project A is under a permissive license&lt;&#x2F;strong&gt;, then the usual condition is to attribute project A in project B. For example:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;If project A is under the MIT license or BSD (2-Clause or 3-Clause) license, you only need to retain project A&#x27;s copyright and license notice where appropriate in project B.&lt;&#x2F;li&gt;
&lt;li&gt;If project A is under the Apache License 2.0, the following things need to be done in project B: (1) accompany a copy of the license; (2) mark changed files; (3) retain all notices of copyright, patent, trademark attribution; (4) retain the NOTICE file distributed with project A (if any).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;If project A is under a copyleft license&lt;&#x2F;strong&gt;, then:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;For GPL, these are the main obligations: (1) accompany a copy of the license; (2) mark changes of the work; (3) retain all notices of copyright, disclaimer of warranty, etc.; (4) provide the source code of project B under the same license.&lt;&#x2F;li&gt;
&lt;li&gt;For AGPL, in addition to the obligations from GPL, for users who use project B as a service over the internet, you have to provide them with the source code of project B as well.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;If project A is under an intermediate (weak copyleft) license&lt;&#x2F;strong&gt;, typically MPL or LGPL, the license of project B is of your choice. Despite that, when distributing project B, you&#x27;ll have to at least meet some minimum conditions:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Some common conditions from license A are: (1) claim the usage of project A; (2) retain the copyright and license notice of project A; (3) provide a way to obtain a copy of project A&#x27;s license; (4) provide the source code of project A or its modified version under the same license.&lt;&#x2F;li&gt;
&lt;li&gt;Additionally, LGPL requires that you must allow the recipients to recombine project B using a modified version of A.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Above is our summary of obligations concerning some common licenses. If you want to learn the details of a license, please read its license text.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;relicensing&quot;&gt;Can I change the license of my project?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#relicensing&quot; aria-label=&quot;Anchor link for: relicensing&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Yes. We call this &quot;relicensing.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;If the project is fully written by you, without anyone else&#x27;s code, you may relicense your project directly.&lt;&#x2F;p&gt;
&lt;p&gt;If your project contains code not written by you, then relicensing is only allowed when:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;The license of that code is &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#all-compatibility&quot;&gt;compatible&lt;&#x2F;a&gt; with the license you wish to switch to; or&lt;&#x2F;li&gt;
&lt;li&gt;The author of that code signed a &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#cla&quot;&gt;CLA or similar document&lt;&#x2F;a&gt; when contributing, explicitly granting you the permission to relicense it.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;If none of the above is your case, you have to ask the author of that code for permission before you can relicense it.&lt;&#x2F;p&gt;
&lt;p&gt;Note that by relicensing your project, the new license only applies to newer versions of the project. Previous license still remains in effect for older releases of your project.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;upgrade-license&quot;&gt;Can I upgrade the license version of my project?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#upgrade-license&quot; aria-label=&quot;Anchor link for: upgrade-license&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Two different versions of a license are in practice two different licenses. Therefore, upgrading the license of a project is equivalent to relicensing it. Please read the &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#relicensing&quot;&gt;previous question&lt;&#x2F;a&gt; to learn the requisites of doing so.&lt;&#x2F;p&gt;
&lt;p&gt;Despite that, there are two exceptional cases:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;For GNU licenses (GPL, AGPL, LGPL):
&lt;ol&gt;
&lt;li&gt;If, when publishing your project, you stated that the project was &quot;licensed under XYZ or any later version of the license&quot;, for example &quot;licensed under GPLv2 or any later version of it&quot; or &quot;licensed under AGPLv3 or any later version of it,&quot; then recipients may choose to accept that version of the license, or any later version of their choice.&lt;&#x2F;li&gt;
&lt;li&gt;If, when publishing your project, you stated that the project specified a proxy that could decide which future versions of the license could be used, then recipients may choose to accept the current version of the project&#x27;s license, or any later version of it that the proxy had publicly accepted. &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;invent.kde.org&#x2F;system&#x2F;dolphin&#x2F;-&#x2F;blob&#x2F;master&#x2F;LICENSES&#x2F;LicenseRef-KDE-Accepted-GPL.txt&quot;&gt;Here&lt;&#x2F;a&gt; is an example where a project specifies a proxy.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;For MPL, if you published your project under MPL 2.0 (the most commonly used version), then recipients may use your project under MPL 2.0 or any later version of their choice, regardless of whether you permitted usage under any later versions beforehand. In other words, the auto upgrading mechanism is built-in. You don&#x27;t need to upgrade the license manually, and you can&#x27;t stop the mechanism.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;cla&quot;&gt;I&#x27;m asked to sign a CLA before contributing to a project. What is it?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#cla&quot; aria-label=&quot;Anchor link for: cla&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;CLA stands for Contributor License Agreement. Some projects require contributors to sign a CLA or a similar document before they can contribute.&lt;&#x2F;p&gt;
&lt;p&gt;Contents of these documents differ from project to project. Some of them are for the mere purpose of ensuring authorship of the contributor over the contribution, or that they are authorized to submit it (for example, the DCO of Linux). However, some other documents require that you grant them the permission to relicense your contribution, or even transfer your copyright to them. In that case, they may change the license of your contribution later without your consent, or even incorporate it into proprietary software.&lt;&#x2F;p&gt;
&lt;p&gt;If the project you are contributing to requires that you sign a document as such, make sure you read its content. If you find it unacceptable, you may create your own fork under the same license without having to follow its CLA or any documents alike.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;revoke-license&quot;&gt;Can I revoke my license?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#revoke-license&quot; aria-label=&quot;Anchor link for: revoke-license&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;No. Free software licenses are irrevocable. Once users receive your software, they have perpetual permission to practice their rights under the license, even if you cease distribution of your project or take down its public repository.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;modify-license&quot;&gt;Can I modify an existing license or draft a new license?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#modify-license&quot; aria-label=&quot;Anchor link for: modify-license&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Modifying a license is in practice drafting a new license. We strongly discourage doing so. If your purpose is to grant additional permission, refer to &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#additional-permission&quot;&gt;this question&lt;&#x2F;a&gt;; if your purpose is to add further restrictions, refer to &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#further-restriction&quot;&gt;this question&lt;&#x2F;a&gt;. If you wish to draft a new license anyway, do bear the following in mind:&lt;&#x2F;p&gt;
&lt;p&gt;Firstly, when drafting a new license, you need to consider various legal matters such as legal effect and license compatibility. Legal issues can affect how others are willing to reuse your project in their own projects.&lt;&#x2F;p&gt;
&lt;p&gt;Secondly, you can&#x27;t give your license a name like &quot;GNU Non-commercial License,&quot; &quot;Apache No-derivative License&quot; or &quot;Mozilla Personal-use License.&quot; Names like &lt;em&gt;GNU&lt;&#x2F;em&gt;, &lt;em&gt;Apache&lt;&#x2F;em&gt; and &lt;em&gt;Mozilla&lt;&#x2F;em&gt; are trademarked: doing this will lead to trademark infringement.&lt;&#x2F;p&gt;
&lt;p&gt;Thirdly, if you wish to adopt text from other licenses into your new license, you may need a copyright license over the text. As far as we are concerned, &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#ModifyGPL&quot;&gt;GNU&lt;&#x2F;a&gt;, &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.mozilla.org&#x2F;en-US&#x2F;MPL&#x2F;2.0&#x2F;FAQ&#x2F;#making-my-own-license&quot;&gt;Mozilla&lt;&#x2F;a&gt; and &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.apache.org&#x2F;foundation&#x2F;license-faq.html#mod-license&quot;&gt;Apache&lt;&#x2F;a&gt; permits reuse of their license texts, but prohibits usage of their trademark as we mentioned above. Additionally, GNU forbids reusing the preamble and appendix of their licenses.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, if you are drafting a new license for a project already published under another license, you need to make sure you have the right to relicense it. Refer to &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#relicensing&quot;&gt;this question&lt;&#x2F;a&gt; to learn the requisites of doing so.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;additional-permission&quot;&gt;Can I grant additional permission to an existing license?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#additional-permission&quot; aria-label=&quot;Anchor link for: additional-permission&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Yes. If you wish to void certain restrictions of a license or void them under certain circumstances, you may attach to the license notice of your project a legal statement stating which exceptions are added to the license.&lt;&#x2F;p&gt;
&lt;p&gt;Additional permission is usually granted in the context of a copyleft license to exempt the effect of copyleft in some circumstances. Some example cases are: &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#FontException&quot;&gt;1&lt;&#x2F;a&gt;, &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#WMS&quot;&gt;2&lt;&#x2F;a&gt; and (a bit more complex) &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#GPLIncompatibleLibs&quot;&gt;3&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Granting additional permission to a license turns its terms more permissive, which is similar to changing the license of your project. Therefore, you have to ensure that you have the right to do so. Refer to &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#relicensing&quot;&gt;this question&lt;&#x2F;a&gt; to learn the requisites of doing so.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;further-restriction&quot;&gt;Can I add further restrictions to an existing license?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#further-restriction&quot; aria-label=&quot;Anchor link for: further-restriction&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Usually not in a way you expected.&lt;&#x2F;p&gt;
&lt;p&gt;A license is of integrity. Generally, when you add a restriction to a license, you can no longer state that your project is &quot;licensed under [name of the original license].&quot;&lt;&#x2F;p&gt;
&lt;p&gt;Sometimes, it&#x27;s also not allowed to state that a project is &quot;licensed under [name of the original license], but with XYZ restrictions.&quot; For example, if you publish your project under (A)GPLv3, and claim that it may not be used for commercial purposes, then Section 7 of (A)GPLv3 voids that restrictions.&lt;&#x2F;p&gt;
&lt;p&gt;Some licenses do allow some restrictions to be added along, but the restrictions you can add are very limited, and won&#x27;t meet your wish to add any restrictions of your choice. For example:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;MPL 2.0 allows the author to prohibit the software from being incorporated into a project under a GNU license.&lt;&#x2F;li&gt;
&lt;li&gt;(A)GPL allows the software to be under some additional terms that protect reputation or add extra disclaimers. In fact, the purpose of allowing these restrictions to be added to (A)GPL is to make some existing licenses compatible with it.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;In summary, it is merely possible to add whatever restrictions you like to an existing license. You need to &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#modify-license&quot;&gt;draft a new license&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dual-licensing&quot;&gt;Can I use multiple licenses for my project?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#dual-licensing&quot; aria-label=&quot;Anchor link for: dual-licensing&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Yes. We call this &quot;dual licensing.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;You may state in the license notice of your project that &quot;this project is licensed under [license A] or [license B].&quot; That way, recipients may choose to receive it under the terms of either license A or license B.&lt;&#x2F;p&gt;
&lt;p&gt;Sometimes, developers choose to license their project under multiple licenses with similar terms. This is because despite their terms being similar, they are compatible with different licenses; and by dual-licensing their project, they make it compatible with more licenses. However, such practice is very uncommon now.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;selling-exceptions&quot;&gt;Can I allow others to pay me for an exemption from a requirement of the license?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#selling-exceptions&quot; aria-label=&quot;Anchor link for: selling-exceptions&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Yes. We call this &quot;selling exceptions.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;Selling exceptions is similar to &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#additional-permission&quot;&gt;granting additional permission&lt;&#x2F;a&gt;, except other parties are purchasing such permission. Also, such permission is usually granted exclusively, rather than publicly.&lt;&#x2F;p&gt;
&lt;p&gt;Selling exceptions is not an uncommon practice. For instance, the Qt framework is licensed under the GPL, requiring projects depending on it to be licensed under GPL consequently. However, developers may purchase an exception that allows them to publish their Qt programs as proprietary software.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;all-compatibility&quot;&gt;How are various licenses compatible with each other?
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#all-compatibility&quot; aria-label=&quot;Anchor link for: all-compatibility&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;For compatibility between two GNU licenses, refer to the &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl-faq.html#AllCompatibility&quot;&gt;GNU license compatibility matrix&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;For compatibility concerning a non-GNU license, refer to our matrices below:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#non-gnu-into-non-gnu&quot;&gt;Compatibility between a &lt;strong&gt;non-GNU&lt;&#x2F;strong&gt; license and a &lt;strong&gt;non-GNU&lt;&#x2F;strong&gt; license&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#gnu-into-non-gnu&quot;&gt;Compatibility between a &lt;strong&gt;GNU&lt;&#x2F;strong&gt; license and a &lt;strong&gt;non-GNU&lt;&#x2F;strong&gt; license&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#non-gnu-into-gnu&quot;&gt;Compatibility between a &lt;strong&gt;non-GNU&lt;&#x2F;strong&gt; license and a &lt;strong&gt;GNU&lt;&#x2F;strong&gt; license&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Before reading the following matrices, note that:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&quot;BSD&quot; includes both the BSD 2-Clause License and the BSD 3-Clause License.&lt;&#x2F;li&gt;
&lt;li&gt;&quot;MPL 2.0 NCE&quot; is a temporary code we&#x27;ve created meaning &quot;licensed under MPL 2.0, incompatible with secondary licenses.&quot; According to MPL 2.0, when the software is distributed along with a notice containing the Exhibit B of MPL 2.0, then it can not be incorporated to some licenses.&lt;&#x2F;li&gt;
&lt;li&gt;&quot;XYZ+&quot; means the distributor allows recipients to use the software under &quot;license XYZ or any later version of it.&quot;&lt;&#x2F;li&gt;
&lt;li&gt;When we say &quot;OK: Combination is under XYZ,&quot; your project must be &lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;#relicensing&quot;&gt;relicensed&lt;&#x2F;a&gt; under that license before the combination can happen. When we say just &quot;OK,&quot; no relicensing is needed.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;non-gnu-into-non-gnu&quot;&gt;1. Compatibility between a non-GNU license and a non-GNU license
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#non-gnu-into-non-gnu&quot; aria-label=&quot;Anchor link for: non-gnu-into-non-gnu&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;In this case, you want to incorporate code under a license in the first column, into your own project under a license in the first row.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;↱&lt;&#x2F;th&gt;&lt;th&gt;MIT &#x2F; BSD License&lt;&#x2F;th&gt;&lt;th&gt;Apache License 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0 NCE&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;MIT &#x2F; BSD License&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Apache License 2.0&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under Apache License 2.0&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;MPL 2.0&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under MPL 2.0&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under MPL 2.0&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;TBD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;MPL 2.0 NCE&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under MPL 2.0 NCE&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under MPL 2.0 NCE&lt;&#x2F;td&gt;&lt;td&gt;TBD&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under MPL 2.0 NCE&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;gnu-into-non-gnu&quot;&gt;2. Compatibility between a GNU license and a non-GNU license
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#gnu-into-non-gnu&quot; aria-label=&quot;Anchor link for: gnu-into-non-gnu&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;In this case, you want to incorporate code under a license in the first column, into your own project under a license in the first row.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;↱&lt;&#x2F;th&gt;&lt;th&gt;MIT &#x2F; BSD License&lt;&#x2F;th&gt;&lt;th&gt;Apache License 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0 NCE&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;LGPLv2.1&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv2.1&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv2.1&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv2.1+&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv2.1 or LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv2.1+&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv2&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv2&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv2&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv2+&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv2 or GPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv3&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv2+&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv3&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv3+&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv3+&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under AGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;non-gnu-into-gnu&quot;&gt;3. Compatibility between a non-GNU license and a GNU license
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#non-gnu-into-gnu&quot; aria-label=&quot;Anchor link for: non-gnu-into-gnu&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;In this case, you want to incorporate code under a license in the first row, into your own project under a license in the first column.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;⬐&lt;&#x2F;th&gt;&lt;th&gt;MIT &#x2F; BSD License&lt;&#x2F;th&gt;&lt;th&gt;Apache License 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0&lt;&#x2F;th&gt;&lt;th&gt;MPL 2.0 NCE&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;LGPLv2.1&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;!-- ？--&gt;&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv2.1+&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv2&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv2+&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK: Combination is under GPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPLv3+&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AGPLv3&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AGPLv3+&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;NO&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;script markdown=0&gt;
	let tmp_cells = document.querySelectorAll(&#x27;#non-gnu-into-non-gnu ~ table td&#x27;);
	let ok_text = tmp_cells[1].innerText;
	let ok_prefix = tmp_cells[6].innerText.substr(0, ok_text.length + 1);
	for (td of document.querySelectorAll(&#x27;td:not(:first-of-type)&#x27;)) {
		if (td.innerText == ok_text)
			td.setAttribute(&quot;style&quot;, &quot;background: #00ff0020&quot;);
		else if (td.innerText.indexOf(ok_prefix) == 0)
			td.setAttribute(&quot;style&quot;, &quot;background: #90ff0020&quot;);
		else
			td.setAttribute(&quot;style&quot;, &quot;background: #90000020&quot;);
	}
&lt;&#x2F;script&gt;
&lt;h2 id=&quot;afterwords&quot;&gt;Afterwords
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#afterwords&quot; aria-label=&quot;Anchor link for: afterwords&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;So lengthy though the article is, there are still matters which we are yet to explain clearly.&lt;&#x2F;p&gt;
&lt;p&gt;Out of them is the most important fact that difference in licensing doesn&#x27;t equate difference in choice of license. One license may result in different situations of licensing. Some examples, in SPDX identifiers, are: &lt;code&gt;MPL-2.0&lt;&#x2F;code&gt; != &lt;code&gt;MPL-2.0-no-copyleft-exception&lt;&#x2F;code&gt; or &lt;code&gt;GPL-3.0-only&lt;&#x2F;code&gt; != &lt;code&gt;GPL-3.0-or-later&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;While you may not be clear about it for now, we wish to explain it clearly in future revisions.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;This page is released into the public domain under &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>版权法入门</title>
        <published>2023-09-09T00:00:00+00:00</published>
        <updated>2023-09-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/copyright-intro-zh/"/>
        <id>https://haydenwu.org/posts/copyright-intro-zh/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/copyright-intro-zh/">&lt;h1 id=&quot;版权法入门&quot;&gt;版权法入门
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#版权法入门&quot; aria-label=&quot;Anchor link for: 版权法入门&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;blockquote&gt;
&lt;p&gt;本系列作品：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;版权法入门&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;licensing-intro-zh&#x2F;&quot;&gt;软件许可证入门&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;&quot;&gt;混合作品的版权归属与许可证兼容性&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;版权法授予了作者专有的法定权利，令其能够控制谁能复制、分发和修改其作品，同时禁止其他人这么做。这种权利即&lt;strong&gt;版权&lt;&#x2F;strong&gt;，在中国法律下又称&lt;strong&gt;著作权&lt;&#x2F;strong&gt;，同时也常常被称为&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;philosophy&#x2F;not-ipr.zh-cn.html&quot;&gt;“知识产权”&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;版权适用于文学、艺术和科学领域中具有独创性的有形作品，这也包括了计算机软件及文档。但是，版权通常不适用于作品的名称，因为其并不足以体现独创性——这更多涉及商标法。版权也无关乎某种代码实现所涉及的内在思想，因为版权法只适用于思想的表达形式，而不适用于思想本身——这更多涉及专利法。&lt;&#x2F;p&gt;
&lt;p&gt;根据《伯尔尼公约》（中国等近 200 个国家已签署），作品只要一经写下，就会自动产生版权。因此，当开发者发布自己的软件或文档时，如果没有特别的许可，那么它默认是有严格的版权限制的，而不是处于许多人所认为的公有领域。此外，作者还能对其作品进行版权登记，但这类登记不是为了取得权利（因为权利已经自动获得），而是为了公示版权关系的法律事实，以便于提起侵权诉讼或确保版权转让时的交易安全。&lt;&#x2F;p&gt;
&lt;p&gt;你一定见过“保留所有权利”（All Rights Reserved）这句话。所谓严格的版权限制，真的就是它的字面意思：所有权利都归作者所有，未经许可的事都不能做，包括但不限于未经许可复制、分发或改编作品。尽管这种严格的版权限制有少量的例外（称为“合理使用”），但这远不足以令软件或文档拥有四大自由。通常，这类合理使用的限度仅限于少量文字的引用，以及小范围分发通常具有数字限制管理（DRM）的作品。&lt;&#x2F;p&gt;
&lt;p&gt;《伯尔尼公约》规定，成员国的版权法中，作品版权的有效期为作者终生加上其死亡后的 50 年。也就是说，一份作品至少要在其作者死亡 50 年后，才会自动进入公有领域。实际上，在许多国家（包括美国、日本、欧盟国家和英国），自然人的版权过期时间久至作者死亡后 70 年。&lt;&#x2F;p&gt;
&lt;p&gt;如上所述，版权法默认是对软件施加了限制，令其不能自由修改和分发的。而为了将这些未被赋予的权利赋予至用户，开发者就需要使用一份许可证来授权其软件。在中国，软件许可证被解释为基于《合同法》，也就是说，软件许可证就是一份合同。如果你想继续了解软件许可证，请阅读&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;licensing-intro-zh&#x2F;&quot;&gt;软件许可证入门&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;需要注意的是，刚刚提到的“授权”或“许可”，与转移版权并不是一回事。对软件进行授权，仅仅是将权利许可了出去，许可方并没有失去软件的版权。如果将软件的版权转移至他方，那么软件版权的持有者就不再是许可方，而是他方了。如果你想继续了解版权管理，请阅读&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;&quot;&gt;混合作品的版权归属与许可证兼容性&lt;&#x2F;a&gt;，但在这之前，请先阅读软件许可证的基础知识。&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;本页面以 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt; 发布至公有领域。&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>An Introduction to Copyright</title>
        <published>2023-09-09T00:00:00+00:00</published>
        <updated>2023-09-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/copyright-intro/"/>
        <id>https://haydenwu.org/posts/copyright-intro/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/copyright-intro/">&lt;h1 id=&quot;An_Introduction_to_Copyright&quot;&gt;An Introduction to Copyright
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#An_Introduction_to_Copyright&quot; aria-label=&quot;Anchor link for: An_Introduction_to_Copyright&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Works in this series:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;An Introduction to Copyright&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;licensing-intro&#x2F;&quot;&gt;An Introduction to Software Licensing&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;&quot;&gt;Copyright Management and License Compatibility in a Remixed Work&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Copyright law grants the author exclusive legal rights to control who may copy, distribute, and modify their work, while prohibiting others from doing so. This right is known as &lt;strong&gt;copyright&lt;&#x2F;strong&gt; and is also frequently referred to as &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;philosophy&#x2F;not-ipr.html&quot;&gt;&quot;intellectual property.&quot;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Copyright applies to tangible, original works in the fields of literature, art and science, which also include computer software and documents. However, it typically does not apply to the name of a work, since names do not embody sufficient originality – this falls under trademark law. Furthermore, it has nothing to do with the underlying ideas embodied in a piece of code, since copyright applies only to the expression of ideas, not to ideas themselves – this is more related to patent law.&lt;&#x2F;p&gt;
&lt;p&gt;According to the Berne Convention (of which nearly 200 states are signatories), a work automatically gains copyright the moment it is fixed in a tangible form. Thus, when a developer publishes their software or documents without a specific license, these works are under strict copyright restrictions by default, and are not assumedly in the public domain. Additionally, authors may register copyright for their work, but such registration is not for the purpose of obtaining rights (as they are automatically acquired), but rather to publicly record the copyright ownership for legal purposes, such as ensuring smooth enforcement or transfers.&lt;&#x2F;p&gt;
&lt;p&gt;You must have seen the phrase &quot;All Rights Reserved.&quot; By strict copyright restrictions, it means literally what the phrase means: all rights are vested in the author, and without permission, nothing can be done with their work, including but not limited to unauthorized copying, redistributing, or modifying. While there are a few exceptions to those restrictions (referred to as &quot;fair use&quot;), they do not come close to granting you the &quot;four freedoms&quot; associated with software or documents. Typically, the limits of fair use are confined to limited quoting of text and distribution of works often under Digital Restrictions Management (DRM) on a small-scale basis.&lt;&#x2F;p&gt;
&lt;p&gt;According to the Berne Convention, the copyright laws of its member states must ensure that the term of a work&#x27;s copyright covers the author&#x27;s lifetime plus an additional 50 years. This means that a work enters the public domain at least 50 years after the author&#x27;s death. In fact, in many countries (including US, Japan, EU and UK), the copyright of a natural person expires 70 years after their death.&lt;&#x2F;p&gt;
&lt;p&gt;As mentioned earlier, copyright law imposes restrictions on software by default, preventing its free modification and redistribution. Thus, in order to grant users the rights to do so, developers need to license their software. If you want to learn more about it, proceed to study &lt;em&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;licensing-intro&#x2F;&quot;&gt;An Introduction to Software Licensing&lt;&#x2F;a&gt;&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;It is worth of note that &quot;licensing,&quot; as we mentioned earlier, is not the same thing as transfer of copyright. Licensing a piece of software simply means that the rights have been granted to another party, and the licensor has not lost the software&#x27;s copyright. If the copyright of the software is transferred to another party, then the copyright holder of the software shifts from the licensor to that party. If you want to learn more about copyright management, read &lt;em&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq&#x2F;&quot;&gt;Copyright Management and License Compatibility in a Remixed Work&lt;&#x2F;a&gt;&lt;&#x2F;em&gt;; but before doing so, you may want to study the basis of software licensing first.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;This page is released into the public domain under &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>软件许可证入门</title>
        <published>2023-09-09T00:00:00+00:00</published>
        <updated>2023-09-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Hayden Wu
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://haydenwu.org/posts/licensing-intro-zh/"/>
        <id>https://haydenwu.org/posts/licensing-intro-zh/</id>
        
        <content type="html" xml:base="https://haydenwu.org/posts/licensing-intro-zh/">&lt;h1 id=&quot;软件许可证入门&quot;&gt;软件许可证入门
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#软件许可证入门&quot; aria-label=&quot;Anchor link for: 软件许可证入门&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;blockquote&gt;
&lt;p&gt;本系列作品：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-intro-zh&#x2F;&quot;&gt;版权法入门&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;软件许可证入门&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;haydenwu.org&#x2F;posts&#x2F;copyright-licensing-faq-zh&#x2F;&quot;&gt;混合作品的版权归属与许可证兼容性&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;软件许可证是一份法律文档，规定了用户对某个软件可以做的事和不能做的事。它主要围绕版权法，对用户的权利和义务进行规定。&lt;&#x2F;p&gt;
&lt;p&gt;版权法默认是禁止计算机软件的自由使用、修改和分享的。而要将这些权利赋予出去，作者就需要使用软件许可证对软件进行授权，从而令用户拥有这些权利。这种权利的授予通常伴随着来自许可证条款的限制，而不同的条款就产生了不同的许可证。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;常用许可证及其分类&quot;&gt;常用许可证及其分类
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#常用许可证及其分类&quot; aria-label=&quot;Anchor link for: 常用许可证及其分类&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;软件开发者可以自己编写一份许可证，来规定软件的使用条款。但通常情况下，开发者都会选用一份现有的许可证来发布其软件。自由软件许可证大体来说分为三类：&lt;strong&gt;宽松型&lt;&#x2F;strong&gt;许可证、&lt;strong&gt;中间型&lt;&#x2F;strong&gt;许可证和 &lt;strong&gt;copyleft&lt;&#x2F;strong&gt; 许可证。&lt;&#x2F;p&gt;
&lt;p&gt;需要注意的是，如果你只是普通的软件用户，没有修改软件的需求，那么无论软件使用哪一种许可证，只要它属于自由软件许可证，那对你而言都是没有什么区别的——它都为你赋予了使用和分享软件副本的自由。自由软件许可证分为这三大类，依据的是开发者在对软件做出&lt;strong&gt;修改&lt;&#x2F;strong&gt;时，应遵守义务的多少。&lt;&#x2F;p&gt;
&lt;p&gt;下文将介绍这三大自由软件许可证的类别。普通用户可以就此止步。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;宽松型许可证&quot;&gt;宽松型许可证
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#宽松型许可证&quot; aria-label=&quot;Anchor link for: 宽松型许可证&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;这类许可证对源代码的再利用十分纵容，除了署名要求以外，没有其他任何条件限制。如果某个软件使用一个宽松许可证发布，那么其他人就可以不受限制地任意使用这个软件，包括将其源代码纳入自己的专有软件。&lt;&#x2F;p&gt;
&lt;p&gt;以下是一些常用的宽松型许可证（越靠前者越推荐）：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;directory.fsf.org&#x2F;wiki&#x2F;License:Apache2.0&quot;&gt;Apache 许可证&lt;&#x2F;a&gt;，一份相当完整且成熟的宽松型许可证；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;directory.fsf.org&#x2F;wiki&#x2F;License:Expat&quot;&gt;Expat 许可证&lt;&#x2F;a&gt;，又称“MIT 许可证”。这是一份简短且经典的宽松型许可证；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;directory.fsf.org&#x2F;wiki&#x2F;License:BSD-2-Clause&quot;&gt;BSD 2-Clause 许可证&lt;&#x2F;a&gt;和 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;directory.fsf.org&#x2F;wiki&#x2F;License:BSD-3-Clause&quot;&gt;BSD 3-Clause 许可证&lt;&#x2F;a&gt;。这两份 BSD 许可证，与 Expat 许可证的效果基本相同，但措辞不同。3-Clause 版与 2-Clause 版的区别在于，前者多了一条限制，禁止将软件作者的名字用于为衍生作品背书；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;directory.fsf.org&#x2F;wiki&#x2F;License:ISC&quot;&gt;ISC 许可证&lt;&#x2F;a&gt;，和 Expat 许可证效果基本相同，但条款更加精简。ISC 许可证相对于前几者要少见得多。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;我们之所以最推荐 Apache 许可证，是因为它的条款与条件十分完整周全，但仍然保持着宽松性。在上面的列表中，除了 Apache 许可证，其他所有许可证都相当简短。不过，我们认为使用 Expat 许可证（MIT 许可证）也不是一个坏主意。&lt;&#x2F;p&gt;
&lt;p&gt;宽松性许可证虽然能让软件得到更广泛的采用，但它也使其他人能够直接将源代码纳入其自己的项目，然后拒绝发布自己项目的源代码。解决这一问题的方法就是采用 copyleft 许可证。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Copyleft_许可证&quot;&gt;Copyleft 许可证
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#Copyleft_许可证&quot; aria-label=&quot;Anchor link for: Copyleft_许可证&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Copyleft 的基本内涵是：如果你获得了自由，那么你也要给予他人同样的自由。如果一个软件使用了一份 copyleft 许可证发布，那么其他人在将其源代码纳入自己的项目时，也需要将自己项目的源代码使用相同的许可证发布出来。&lt;&#x2F;p&gt;
&lt;p&gt;这类许可证的代表是 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;gpl.html&quot;&gt;GNU 通用公共许可证（GNU General Public License）&lt;&#x2F;a&gt;，简称 GNU GPL 或 GPL。GPL 在赋予用户使用、修改和分发软件的自由的同时，增加了这样的条件：在分发衍生作品时，必须同样使用 GPL 向衍生作品的接收者提供源代码。&lt;&#x2F;p&gt;
&lt;p&gt;除了 GPL，另一个常见的 copyleft 许可证是 AGPL，即 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;agpl.html&quot;&gt;GNU Affero 通用公共许可证（GNU Affero General Public License）&lt;&#x2F;a&gt;。相比 GPL，AGPL 更加适合通常是以网络服务的方式运行的软件。它把通过网络来使用某一软件，也视作软件的分发。这么一来，如果某人基于一个 AGPL 软件，开发了一个衍生作品，并通过网络来向他人提供服务，那么他人也有权根据 AGPL 索取这个衍生作品的源代码。&lt;&#x2F;p&gt;
&lt;p&gt;使用 GPL 和 AGPL 这样的 copyleft 许可证来发布自己的软件，可以避免软件源代码被纳入其他人的专有软件之中，并促进自由软件的增长。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;中间型许可证&quot;&gt;中间型许可证
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#中间型许可证&quot; aria-label=&quot;Anchor link for: 中间型许可证&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;这类许可证又称“弱 copyleft”许可证，目的是在宽松型许可证和 copyleft 许可证之间寻求一个折中方案。中间型许可证只会将 copyleft 涵盖于本软件，而不会将 copyleft 扩散到链接或依赖本软件的其他软件。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;directory.fsf.org&#x2F;wiki&#x2F;License:MPL-2.0&quot;&gt;Mozilla 公共许可证（Mozilla Public License，MPL）&lt;&#x2F;a&gt;是一份常用的中间型许可证。MPL 的 copyleft 是以文件为单位的。也就是说，如果项目 A 使用了 MPL 许可，那么项目 B 使用项目 A 时，就必须把在项目 A 中修改过的所有源代码文件发布出来，但不会影响到项目 B 的许可证选择。&lt;&#x2F;p&gt;
&lt;p&gt;除了 MPL 以外，&lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;licenses&#x2F;lgpl.html&quot;&gt;GNU 宽通用公共许可证（GNU Lesser General Public License，LGPL）&lt;&#x2F;a&gt;也是一份流行的中间型许可证。它主要用于函数库，有时也用于其它软件。如果某个库使用 LGPL 许可，那么其它软件在使用这个库（或其修改版）时，就需要向用户提供这个库的源代码。&lt;&#x2F;p&gt;
&lt;p&gt;为软件使用中间型许可证，虽然能保证本软件的自由得到保障，但不能防止包含了本软件的组合作品专有化。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;公有领域&quot;&gt;公有领域
 &lt;a class=&quot;heading-anchor&quot; href=&quot;#公有领域&quot; aria-label=&quot;Anchor link for: 公有领域&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;除了使用以上三类许可证将代码许可出去，开发者还可以将其代码直接发布到公有领域。公有领域比宽松型许可更为宽松，它比宽松型许可证还少了署名的需求。也就是说，公有领域作品的使用不受任何条件约束。&lt;&#x2F;p&gt;
&lt;p&gt;公有领域并不是一种许可证，而是一种放弃所有版权的声明。常用的公有领域声明有 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;share-your-work&#x2F;public-domain&#x2F;cc0&#x2F;&quot;&gt;CC0&lt;&#x2F;a&gt; 和 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;directory.fsf.org&#x2F;wiki&#x2F;License:Unlicense&quot;&gt;The Unlicense&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;本页面以 &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;publicdomain&#x2F;zero&#x2F;1.0&#x2F;&quot;&gt;CC0 1.0&lt;&#x2F;a&gt; 发布至公有领域。&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
