自由硬體與自由硬體設計

自由軟體的理念在多大程度上延伸到硬體?如同讓我們的軟體自由一樣,讓我們的硬體設計自由是否也是一種道德義務?為了維護我們的自由,是否需要拒絕使用非自由設計製造的硬體?

定義

自由軟體 關乎自由,而非價格;廣義來說,它意味著使用者可以自由地使用軟體,以及複製和重新發布軟體,無論是否經過修改。更精確地說,這個定義是以 四項基本自由 來闡述的。為了強調「自由」指的是自由,而不是價格,我們經常搭配法語或西班牙語單詞「libre」與「free」一起使用。

將相同的概念直接應用於硬體,自由硬體 意味著使用者可以自由地使用硬體,以及複製和重新發布硬體,無論是否經過修改。然而,除了鑰匙、DNA 和塑膠物體的外形之外,沒有硬體的複印機。大多數硬體是透過某種設計製造出來的。設計先於硬體。

因此,我們真正需要的概念是 自由硬體設計。這很簡單:它意味著一種設計,允許使用者使用該設計(即,從中製造硬體)並複製和重新發布它,無論是否經過修改。該設計必須提供定義自由軟體的四項相同的自由。

然後我們可以將由自由設計製成的硬體稱為「自由硬體」,但「自由設計硬體」是一個更清晰的術語,因為它可以避免可能的誤解。

首次接觸自由軟體概念的人們常常認為它意味著您可以免費獲得副本。許多自由程式都是免費提供的,因為下載您自己的副本不花費任何費用,但這不是這裡「自由」的含義。(事實上,一些間諜軟體程式,例如 Flash Player 和 Angry Birds,雖然不是自由軟體,但它們是免費的。)將「libre」與「free」一起使用有助於釐清這一點。

對於硬體來說,這種混淆往往朝著另一個方向發展;硬體生產需要成本,因此商業製造的硬體不會是免費的(除非它是虧損產品或搭售產品),但這並不妨礙其設計是自由/libre 的。您在自己的 3D 印表機中製作的東西可能非常便宜,但並不完全免費,因為原材料通常會花費一些錢。在道德層面上,自由問題完全勝過價格問題,因為剝奪使用者自由的設備價值不如無物。

我們可以將術語「libre 硬體」作為「由自由(libre)設計製成的硬體」的簡潔等價詞。

「開放硬體」和「開放原始碼硬體」等術語被某些人使用,其具體含義與「自由設計硬體」相同,但這些術語淡化了自由問題。它們源自術語「開放原始碼軟體」,後者或多或少指的是自由軟體,但 沒有談論自由或將問題呈現為對錯問題。為了強調自由的重要性,我們在適用的時候都會強調自由;由於「開放」未能做到這一點,因此我們不要用它來代替「自由」。

硬體與軟體

硬體和軟體在根本上是不同的。程式,即使是以編譯的可執行形式,也是一組可以被解釋為電腦指令的資料。像任何其他數位作品一樣,它可以使用電腦複製和更改。程式的副本沒有固有的首選物理形式或實體。

相比之下,硬體是一種物理結構,其物理性至關重要。雖然硬體的設計可以用資料表示,在某些情況下甚至可以用程式表示,但設計不是硬體。CPU 的設計無法執行程式。您在鍵盤設計上打字或在螢幕設計上顯示像素不會有任何進展。

此外,雖然您可以使用電腦修改或複製硬體設計,但電腦無法將設計轉換為其描述的物理結構。這需要製造設備。

硬體和軟體之間的界線

在數位設備中,硬體和軟體之間的界線是什麼?這可以從定義中得出。軟體是設備的可操作部分,可以使用電腦複製和修改;硬體是無法複製和修改的可操作部分。這是區分它們的正確方法,因為它與實際後果有關。

硬體和軟體之間存在一個灰色地帶,其中包含 可以 升級或更換的韌體,但產品售出後就永遠不打算升級或更換。或者,也許可以升級或更換,但很不常見,或者製造商可以發布更換品,但您不能。在概念上,灰色地帶相當狹窄。在實踐中,它很重要,因為許多產品都屬於這個範圍。實際上,如今的鍵盤、相機、磁碟機和 USB 記憶體通常包含一個嵌入式的非自由程式,製造商可以更換它。

我們可以將內建韌體和等效硬體之間的差異視為次要的實作細節,前提是我們確定無論在哪種情況下都不會更改它。硬體電路無法更改;這是它的本質。如果設備可以使用任何人都無法更改的內部電路來實作是可以接受的,那麼任何人都無法更改的內部程式也不會更糟。當它們在操作上難以區分時,拒絕等效的內部軟體實作是不明智的。

然而,當軟體實作不是完全內部化,並且某些公司可以修改該程式碼時,這種等效性就會瓦解。例如,當韌體需要複製到設備中才能使設備運作,或包含在您安裝的系統發行版中時,這就不是 內部 軟體實作;相反,它是一段已安裝的非自由軟體。這是不公正的,因為某些製造商可以更改它,但您不能。

為了使韌體程式在道德上等同於硬體,它必須是不可修改的。如果設備沒有某些韌體就無法運作,並且它提供了一種修改韌體的方法,那又如何呢?我們可以透過小心謹慎,永遠不要讓更換發生,來使該韌體在實踐中不可修改。這個解決方案並非完全乾淨俐落,但沒有人提出完全乾淨俐落的解決方案;這是我們所知的唯一一種在拒絕非自由軟體的同時使用該設備的方法。這比直接放棄要好得多。

但我們不能兩全其美。為了透過不讓任何人調用更改方法來使預先安裝的韌體有效地不可修改,我們必須毫不例外地執行此操作,即使有我們希望安裝的更改。這意味著拒絕該韌體的所有升級或修補程式。

有些人說預先安裝的韌體程式和現場可程式化閘陣列晶片 (FPGA)「模糊了硬體和軟體之間的界線」,但我認為這是一種對事實的誤解。使用期間安裝的韌體是軟體;交付在設備內部且無法更改的韌體本質上是軟體,但我們可以將其視為電路。至於 FPGA,FPGA 本身是硬體,但載入 FPGA 的閘極模式是一種韌體。

在 FPGA 上執行自由閘極模式可能是製作電路層級自由的數位設備的一種有用方法。然而,為了使 FPGA 在自由世界中可用,我們需要用於它們的自由開發工具。障礙在於載入 FPGA 的閘極模式檔案的格式是秘密的。多年來,沒有任何 FPGA 型號可以在沒有非自由(專有)工具的情況下產生這些檔案。

截至 2015 年,自由軟體工具可用於 程式設計 Lattice iCE40,這是一種常見的 FPGA 型號,從以硬體描述語言 (HDL) 寫成的輸入開始。也可以使用 自由工具 在 Xilinx Spartan 6 LX9 FPGA 上編譯 C 程式並執行它們,但這些工具不支援 HDL 輸入。我們建議您拒絕其他 FPGA 型號,直到它們也獲得自由工具的支援。

至於 HDL 程式碼本身,它可以充當軟體(當它在模擬器上執行或載入 FPGA 時)或硬體設計(當它在不可變的矽或電路板中實現時)。

3D 印表機的倫理問題

從倫理上講,軟體必須是自由的;非自由程式是不公正的。我們是否應該對硬體設計採取相同的看法?

在 3D 列印(或更廣泛地說,任何類型的個人製造)可以處理的領域中,我們當然應該這樣做。用於製作有用、實用物品(即,功能性而非裝飾性)的印表機模式 必須 是自由的,因為它們是為實際用途而製作的作品。使用者應該像應得對他們使用的軟體的控制權一樣,應得對這些作品的控制權。發布非自由的功能性物體設計與發布非自由程式一樣是錯誤的。

因此,請務必選擇與完全自由的軟體配合使用的 3D 印表機;自由軟體基金會 認可此類印表機

我們是否必須拒絕非自由數位硬體?

非自由數位 [1] 硬體設計是否是不公正的?為了我們的自由,我們是否必須像拒絕非自由軟體一樣,拒絕所有由非自由設計製成的數位硬體?

由於硬體設計和軟體原始碼在概念上是平行的,因此許多硬體駭客很快就像譴責非自由軟體一樣譴責非自由硬體設計。我不同意,因為硬體和軟體的情況不同。

目前的晶片和電路板製造技術類似於印刷機:它適用於工廠的大規模生產。它更像是 1950 年複製書籍,而不是今天複製軟體。

複製和更改軟體的自由是一項道德上的迫切需要,因為這些活動對於使用軟體的人來說是可行的:使您能夠使用軟體的設備(電腦)也足以複製和更改它。今天的行動電腦太弱,不適合用於此目的,但任何人都可以找到一台功能足夠強大的電腦。

此外,即使您不是程式設計師,電腦也足以下載和執行由其他懂得如何操作的人更改的版本。實際上,非程式設計師每天都在下載軟體並執行它。這就是為什麼自由軟體對非程式設計師來說產生了真正的影響。

其中有多少適用於硬體?並非每個會使用數位硬體的人都知道如何更改電路設計或晶片設計,但任何擁有 PC 的人都有執行此操作所需的設備。到目前為止,硬體與軟體是平行的,但接下來是巨大的差異。

您無法在電腦中建構和執行電路設計或晶片設計。建構大型電路需要大量繁瑣的工作,而且那是在您擁有電路板之後。對於個人來說,製造晶片在今天是不可行的;只有大規模生產才能使它們足夠便宜。憑藉今天的硬體技術,使用者無法像執行修改後的常用程式一樣,下載和執行修改後的常用數位硬體設計版本。因此,四項自由並未像賦予使用者對程式的集體控制權一樣,賦予今天的使用者對硬體設計的集體控制權。這就是證明所有軟體都必須是自由的推理無法應用於當今硬體技術的地方。

在 1983 年,沒有自由作業系統,但很明顯,如果我們有一個,我們可以立即使用它並獲得軟體自由。所有缺少的只是一個程式碼。

在 2014 年,如果我們有一個適用於 PC 的 CPU 晶片的自由設計,那麼由該設計大規模生產的晶片不會在硬體領域給我們帶來相同的自由。如果我們要購買工廠大規模生產的產品,那麼對工廠的這種依賴會造成與非自由設計幾乎相同的問題。為了使自由設計給我們帶來硬體自由,我們需要未來的製造技術。

我們可以預見一個未來,在那個未來,我們的個人製造機可以製造晶片,而我們的機器人可以將它們與變壓器、開關、按鍵、顯示器、風扇等組裝和焊接在一起。在那個未來,我們都將製造自己的電腦(以及製造機和機器人),我們都將能夠利用那些懂硬體的人所做的修改設計。拒絕非自由軟體的論點屆時也將適用於非自由硬體設計。

那個未來至少還需要很多年。在此期間,原則上沒有必要拒絕具有非自由設計的硬體。

我們需要自由數位硬體設計

儘管在今天的情況下,我們不必拒絕由非自由設計製成的數位硬體,但我們需要開發自由設計,並在可行時使用它們。它們在今天提供了優勢,並且在未來它們可能是使用自由軟體的唯一途徑。

自由硬體設計提供了實際優勢。多家公司可以製造一種,這減少了對單一供應商的依賴。團體可以安排批量製造它們。擁有電路圖或 HDL 程式碼可以研究設計,以尋找錯誤或惡意功能(眾所周知,美國國家安全局 (NSA) 在某些運算硬體中採購了惡意弱點)。此外,自由設計可以作為設計電腦和其他複雜設備的構建模組,這些設備的規格將會公開,並且將減少可能被用來對付我們的零件。

在我們能夠以這種方式製造整個電腦之前,自由硬體設計可能會在我們電腦和網路的某些部分以及嵌入式系統中變得可用。

如果自由硬體設計成為避免非自由軟體的唯一途徑,那麼即使在我們能夠親自製造硬體之前,它們也可能變得至關重要。隨著常見的商業硬體越來越多地被設計為征服使用者,它變得越來越與自由軟體不相容,因為存在秘密規格以及對程式碼的要求,即程式碼必須由您以外的某人簽署。手機數據機晶片甚至一些圖形加速器已經需要由製造商簽署的韌體。您電腦中的任何程式,如果其他人可以更改但您不能更改,那麼它就是對您行使不公正權力的工具;施加該要求的硬體是惡意硬體。在手機數據機晶片的情況下,目前所有可用的型號都是惡意的。

總有一天,自由設計數位硬體可能成為允許完全執行自由系統的唯一平台。讓我們以在那之前擁有必要的自由數位設計為目標,並希望我們擁有以足夠低的價格為所有使用者製造它們的方法。

如果您設計硬體,請讓您的設計自由。如果您使用硬體,請加入呼籲和向公司施壓,要求他們讓硬體設計自由。

設計層級

軟體具有實作層級;例如,套件可能包含函式庫、命令和腳本。但這些層級對於軟體自由來說沒有顯著差異,因為使所有層級都自由是可行的。設計程式的組件與設計將它們組合在一起的程式碼是同一種類型的工作;同樣,從原始碼建構組件與從原始碼建構組合程式是相同的操作。為了使整個東西自由,只需繼續工作,直到我們完成整個工作即可。

因此,我們堅持認為程式在所有層級都必須是自由的。為了使程式符合自由軟體的資格,組成它的原始碼的每一行都必須是自由的,以便您可以僅從自由原始碼重建程式。

相比之下,實體物件通常由在不同類型工廠設計和建構的組件製成。例如,電腦是由晶片製成的,但設計(或製造)晶片與從晶片設計(或製造)電腦非常不同。

因此,我們需要區分數位產品(以及可能其他類型的產品)設計中的 層級。連接晶片的電路是一個層級;每個晶片的設計是另一個層級。在 FPGA 中,原始單元的互連是一個層級,而原始單元本身是另一個層級。在理想的未來,我們希望設計在所有層級都是自由的。在目前的情況下,僅使一個層級自由就是一個重大進展。

但是,如果一個層級的設計結合了自由和非自由部分——例如,結合了專有的「軟核心」的「自由」HDL 電路——我們必須得出結論,該設計作為一個整體在該層級是非自由的。非自由的「精靈」或「巨集」也是如此,如果它們指定了晶片互連或可程式化連接的晶片部分。自由部分可能是朝著自由設計的未來目標邁出的一步,但實現該目標需要替換非自由部分。它們永遠不能在自由世界中被接受。

自由硬體設計的授權條款和著作權

您可以透過在自由授權條款下發布硬體設計來使其自由。我們建議使用 GNU 通用公共授權條款第 3 版或更高版本。我們在設計 GPL 第 3 版時考慮到了這種用途。

對電路和非裝飾性物體形狀的著作權保護並不像人們可能認為的那樣適用廣泛。這些設計的著作權僅適用於設計的繪製或書寫方式。著作權保護是一種使用著作權法的方式,因此其效力僅延伸到著作權法所及的範圍。

例如,電路作為一種拓撲結構,不能受到著作權保護(因此也不能受到著作權保護)。以 HDL 撰寫的電路定義可以受到著作權保護(因此可以受到著作權保護),但著作權保護僅涵蓋 HDL 程式碼的表達細節,而不涵蓋它產生的電路拓撲結構。同樣,電路的繪圖或佈局可以受到著作權保護,因此可以受到著作權保護,但這僅涵蓋繪圖或佈局,而不涵蓋電路拓撲結構。任何人都可以合法地以不同的外觀方式繪製相同的電路拓撲結構,或撰寫產生相同電路的不同的 HDL 定義。

著作權不涵蓋實體電路,因此當人們建構電路的實例時,設計的授權條款對他們如何處理他們建構的設備沒有法律效力。

對於物件的繪圖和 3D 印表機模型,著作權不涵蓋對同一純功能性物體形狀進行不同的繪圖。它也不涵蓋從繪圖製作的功能性實體物件。就著作權而言,每個人都可以自由地製作和使用它們(而這正是我們非常需要的自由)。在美國,著作權不涵蓋設計描述的功能性方面,但 涵蓋裝飾性方面。當一個物體同時具有裝飾性方面和功能性方面時,您就會進入棘手的領域 [2]

所有這些在您的國家/地區也可能是正確的,也可能不是。在商業或批量生產物件之前,您應該諮詢當地的律師。著作權不是您需要擔心的唯一問題。您可能會受到專利的攻擊,最有可能由與您使用的設計無關的實體持有,並且可能還存在其他法律問題。

請記住,著作權法和專利法是完全不同的。認為它們有任何共同之處是錯誤的。這就是為什麼術語「智慧財產權」是純粹的混亂,應該完全拒絕。

透過儲存庫推廣自由硬體設計

推動已發布的硬體設計成為自由的最有效方法是透過它們發布的儲存庫中的規則。儲存庫營運商應將將使用設計的人們的自由置於設計製作者的偏好之上。這意味著要求有用的物件的設計必須是自由的,作為發布它們的條件。

對於裝飾性物件,該論點不適用,因此我們不必堅持它們必須是自由的。但是,我們應該堅持它們是可共享的。因此,處理裝飾性物件模型和功能性物件模型的儲存庫應為每個類別制定適當的授權條款政策。

對於數位設計,我建議儲存庫堅持使用 GNU GPL v3 或更高版本、Apache 2.0 或 CC0。對於功能性 3D 設計,儲存庫應要求設計作者選擇四種授權條款之一:GNU GPL v3 或更高版本、Apache 2.0、CC BY-SA、CC BY 或 CC0。對於裝飾性設計,它應建議 GNU GPL v3 或更高版本、Apache 2.0、CC0 或任何 CC 授權條款。

儲存庫應要求所有設計都以原始碼形式發布,而僅專有設計程式才能使用的秘密格式的原始碼並不是真正足夠的。對於 3D 模型,STL 格式 不是更改設計的首選格式,因此不是原始碼,因此儲存庫不應接受它,除非可能伴隨真正的原始碼。

沒有理由為硬體設計的原始碼選擇單一格式,但最好勉強接受尚無法使用自由軟體處理的原始碼格式。

自由硬體設計和保固

一般來說,自由硬體設計的作者沒有道義上的義務向製造該設計的人提供保固。這與實體硬體的銷售是不同的問題,實體硬體的銷售應該附帶銷售商和/或製造商的保固。

結論

我們已經擁有合適的授權條款來使我們的硬體設計自由。我們需要的是作為一個社群認識到這才是我們應該做的,並在我們自己製造物件時堅持使用自由設計。

腳註

  1. 此處使用的「數位硬體」包括除了數位電路和組件外,還包含一些類比電路和組件的硬體。
  2. Public Knowledge 的一篇文章提供了關於美國 複雜性 的有用資訊,儘管它也犯了使用虛假的「智慧財產權」概念和宣傳術語「保護」的常見錯誤。