Perché chiamiamo Java open source, quando lo sviluppo o i contributi non sono decentralizzati

2

Il software open source dovrebbe essere sviluppato da diversi contributori in modo decentralizzato. Comprendo che Open JDK è un'implementazione di riferimento di Java che è open source e consente contributi per la sicurezza e la risoluzione dei bug. Credo che Oracle apporti la maggior parte dei contributi a Open JDK. Java si qualifica come Open source?

    
posta sumit sachdeva 17.06.2016 - 12:20
fonte

3 risposte

14

Why do we call Java open source, when development or contributions are not decentralized?

La definizione di "Open Source" fornita da Open Source Initiative non fa cenno all'accettazione di contributi o al modo in cui il software dovrebbe essere sviluppato.

Puoi leggerlo qui:

Il termine "open source" non ha una definizione fissa. Significa cose diverse per persone diverse.

L'altro punto da sottolineare è che la parola "Java" significa molte cose:

  • È un linguaggio di programmazione
  • È una specifica di quel linguaggio di programmazione
  • È un'implementazione di quel linguaggio (compilatori, core JVM, ecc.)
  • È un'implementazione di una lingua più una grande "libreria standard"
  • È una famiglia di implementazioni di librerie + linguistiche (SE, ME ... EE)
  • C'è OpenJDK Java contro Oracle Java ... che hanno diverse licenze.
  • Esistono diverse implementazioni Java del fornitore basate sulla base di codice Oracle / Sun.
  • Ce ne sono altri, come GNU Classpath Java, Apache Harmony Java (storico) Android Java, vari compilatori Java di terze parti (Jikes , il compilatore di Eclipse, ecc.)
  • etcetera

Quindi, quando dici "noi chiamiamo Java open source", si tratta di un'eccessiva generalizzazione ... e in molti casi sbagliata.

Does (OpenJDK) Java qualify as Open Source ?

Sì. Secondo la definizione sopra citata.

Secondo la tua personale definizione di open source, forse no. Ma dubito che la tua definizione personale ottenga molto sostegno. Anche nella comunità del software libero.

Potresti confondere Open Source (o open source) con "The Open Source Way" . Quest'ultimo è descritto come:

"a way of thinking about how people collaborate within a community to achieve common goals and interests."

... ma non esiste alcun "requisito definitivo" che il software Open Source sia sviluppato in questo modo. O anche software open source.

    
risposta data 17.06.2016 - 13:39
fonte
4

Ci sono diverse domande e incomprensioni nella tua domanda. Affrontiamoli uno per uno:

Why do we call Java open source

Non ne ho idea. Java è un linguaggio di programmazione. Un linguaggio di programmazione è un insieme di regole matematiche astratte e restrizioni. Non ha senso applicare le idee di "open source" a una lingua, perché non esiste una "fonte".

È avrebbe avrebbe senso chiamare una lingua "open source" se la specifica della lingua potesse essere liberamente biforcuta e modificata. Ma questo è semplicemente non sensato. L'intero point di uno standard di infrastruttura (e, sì, una lingua è sia infrastruttura che uno standard) è che puoi fare affidamento su di esso non cambiando.

Open source software should be developed by different contributors in decentralized fashion.

Questo non fa parte di ciò che significa essere "open source". L'open source è puramente sui termini di licenza del software. Nient'altro. OpenJDK è concesso in licenza sotto licenza GPL, e ci sono anche altre implementazioni Java, alcune delle quali forchette o derivati di OpenJDK, alcuni sviluppi indipendenti delle camere bianche rilasciati con una licenza open source. Chiaramente, esistono implementazioni di Java che sono open-source (sebbene le restrizioni di licenza sul marchio " Java") possano rendere impossibile per alcune di queste implementazioni Java chiamarsi "Java").

Chiamo ciò che stai descrivendo un "progetto aperto", il che significa che non solo il software è rilasciato sotto una licenza open source, ma anche il progetto è sviluppato in modo aperto, cioè i bug report possono essere archiviati da chiunque e sono resi disponibili al pubblico, le discussioni sul design sono tenute allo scoperto e con un modo per il pubblico di partecipare, i contributi sono benvenuti e così via. Questo, tuttavia, non fa parte della definizione di open source.

Qualcosa su cui riflettere: esiste uno standard ISO che copre alcune parti fondamentali di .NET e C♯. Esistono diverse implementazioni open-source di .NET (Mono, CoreCLR) e C♯ (Mono, Roslyn). Le discussioni sul design sono tenute allo scoperto, nei problemi di GitHub. I bug sono tracciati apertamente e pubblicamente su GitHub. In realtà, questo è praticamente esattamente come Java, ancora di più, perché la specifica del linguaggio Java è di proprietà di Oracle, mentre c'è almeno un sottoinsieme di C♯ specificato come standard ISO. Tuttavia, C♯ è tipicamente caratterizzato come closed-source mentre Java è tipicamente caratterizzato come open-source. IMO, questo ha molto più a che fare con l'immagine di Sun e Microsoft nei primi anni '90 rispetto a fatti reali.

    
risposta data 17.06.2016 - 13:59
fonte
0

Open source software should be developed by different contributors in decentralized fashion.

Portato all'estremo, questa è una ricetta per il caos. L'open source che è stato biforcuto, re-fork e re-re-forked raramente ha lo stesso successo dell'open source che ha un'organizzazione centrale che lo guida e lo mantiene sano di mente.

Vedrò quello che è probabilmente il pacchetto open source di maggior successo di sempre, il kernel di Linux. Mentre ci sono molte e molte distribuzioni Linux, c'è una sola fonte per il kernel Linux stesso è la Linux Kernel Organization, Inc., dal kernel . org . Più vicino alla domanda, il linguaggio Python è open source. Ma l'unico e unico posto per ottenere Python, ufficialmente, è dalla Python Software Foundation all'indirizzo python.org . Una delle ragioni del successo di Linux e Python è che entrambi hanno una strong organizzazione centralizzata guidata da un dittatore benefico per la vita che regna nel caos.

Mentre Linux e Python sono iniziative open source senza scopo di lucro, c'è un sacco di open source che viene mantenuto e coordinato da organizzazioni for-profit. Java rientra in questa categoria. Così fanno ParaView, VTK e CMake (tutti da Kitware, Inc. a kitware.com ), OpenVDB (da DreamWorks Animation tramite openvdb.org ), RenderMan (da Pixar Animation Studios tramite renderman .pixar.com ) e molti, molti altri. Ci sono anche numerosi pacchetti open source da NASA e da altre organizzazioni governative. Rilasciare alcuni dei gioielli della corona di un'organizzazione per il mondo in generale, gratuitamente, è arrivato ad avere un senso da una prospettiva di business.

Why do we call Java open source?

Il termine "open source" significa cose diverse per persone diverse. Per alcuni, semplicemente rendere un eseguibile binario gratuito per il pubblico si qualifica come "open source". Liberare liberamente i binari in genere non è sufficiente per qualificarsi come "open source" da molti. Anche il codice sorgente deve essere rilasciato. Per gli altri, "Open Source" significa anche più di quello.

Il codice sorgente per le librerie Java standard, i compilatori Java e le macchine virtuali Java sono apertamente disponibili nei repository Mercurial all'indirizzo openjdk.java.net . In questo senso, Java di Oracle è sicuramente "open source". Se questo si qualifica come Open Source (nota l'uso di Initial Caps) è una questione diversa ed è soggetta all'opinione.

    
risposta data 17.06.2016 - 14:56
fonte

Leggi altre domande sui tag