Come possono avere successo i progetti open source senza documentazione sulla loro progettazione o architettura?


11

Voglio migliorare le mie capacità di programmazione studiando famosi progetti open source, ma trovo che sia facile perdersi semplicemente saltando nel loro codice sorgente.

Così ho deciso di leggere la loro documentazione sulla loro progettazione o architettura (come i diagrammi UML) per avere prima un'idea generale sull'organizzazione del loro codice. Con mia sorpresa, tuttavia, non riesco a trovare alcuna documentazione architettonica per grandi progetti open source come Hibernate, Spring, ASP.NET MVC, Rails, ecc.

Quindi ho iniziato a chiedermi: come può un progetto open source avere successo se gli sviluppatori di nuovi arrivati ​​non hanno documentazione architetturale / di progettazione da leggere o se il project manager ha appena aperto il codice sorgente ma ne ha chiuso la documentazione?


3
"maggior parte"? Puoi supportarlo con statistiche concrete? Quanti hai letto? Quanti sono lì? Quanti mancavano di documentazione adeguata? Se non hai numeri, rimuovi parole come "più" e sostituiscile con fatti reali basati su ciò che hai davvero trovato. Inoltre, ti preghiamo di capitalizzare "I" quando ti riferisci a te stesso.
S.Lott

@ S.Lott Ci scusiamo per il soggettivo "most". Sono un principiante nel settore del software. Sto cercando di cercare documenti di cui avevo sentito parlare durante la scuola universitaria (come diagramma UML, diagramma di flusso, documento di progettazione breve, documento di progettazione detalizzata, ecc.) Per i progetti citati sia sul sito Web del progetto o sul repository di codici, ma senza fortuna, solo per trovare alcuni documenti guida dell'utente. Potete per favore insegnarmi un modo comune per cercare i loro documenti di progettazione / architettura?
TomCaps

1
Rimuovi "Molti". È errato quanto la maggior parte. si prega di aggiornare la domanda per elencare specificamente i progetti open source specifici che mancano specificamente della documentazione specifica che si desidera vedere. Si prega di essere precisi e specifici. Per favore, non essere soggettivo e vago.
S.Lott

Sospetto che il motivo per cui ASP.NET MVC non include i diagrammi UML è perché Visual Studio può crearli dal codice sorgente.
user16764

5
Stai operando con il falso presupposto che "enterprisy" sia una buona cosa. Ciò che hai imparato al college sul design sono tutte bugie: UML non ha assolutamente alcun valore. Quando si crea un progetto, tutto ciò che serve è un'idea generale di cosa dovrebbe fare e la volontà di buttarlo via se lo si fa per la prima volta. Per un progetto esistente, è sufficiente scremare l'intestazione principale per avere una buona idea del layout del progetto.
o11c,

Risposte:


10

perché un progetto open source può avere successo se uno sviluppatore nuovo arrivato non ha documenti di architettura / design da leggere?

Si presuppone invariabilmente che tu sappia cosa stai facendo e abbia una comprensione ragionevolmente intima di ciò che stai (e ti aspetti) di vedere.

Se osservi il codice PHP del framework Symfony, ad esempio, dovresti già sapere dell'iniezione di dipendenza, degli eventi, del modello / vista / modello del controller e così via.

Allo stesso modo, se ti immergi nel codice C del kernel Linux, il presupposto è che sarai realisticamente competente in modularità, segnali, processi, thread e cosa no. Dovresti anche avere un talento per mangiare esadecimale tutto il giorno e scavare attraverso le discariche centrali con una pala gigante.

I manutentori non dovranno affrontare il problema di documentare l'architettura perché è roba di fatto. A volte, troverai uno schema di ciò che si trova nella struttura ad albero sorgente. Più in genere, tuttavia, il modo in cui è organizzato l'albero dei sorgenti rende le cose autoesplicative.

In breve, se ti manca qualcuna delle competenze che i manutentori si aspettano che tu sappia nel momento in cui dai un'occhiata al loro codice, probabilmente stai scavando in cose che sono ampiamente al di sopra del tuo grado di remunerazione. Familiarizzare con i concetti prima di tutto - Cos'è il modello MVC? Che cos'è l'iniezione di dipendenza? Ecc. Quindi immergersi.


1
Tuttavia, se si guardano le mailing list, il kernel di Linux ha ampie discussioni sull'architettura ogni volta che qualcuno ha un problema o desidera cambiare qualcosa. Ci sono anche alcuni documenti scritti al riguardo - sebbene non nello stesso albero dei sorgenti del kernel.
edA-qa mort-ora-y

17

La maggior parte dei progetti open source di successo ha avuto successo perché innanzitutto il programma era impressionante o faceva qualcosa che nessun altro programma poteva fare in quel momento. Ciò non significa necessariamente che la fonte sia ben documentata, poiché i programmatori che hanno iniziato il progetto iniziano a conoscere il codice abbastanza bene da non averne bisogno. È una sfortunata realtà che i progetti open source non debbano essere ben documentati. O deve essere un buon programma o essere un programma mediocre ma ben documentato per i programmatori per esprimere interesse in esso.


Nella mia azienda, è una procedura obbligatoria che gli sviluppatori devono fornire un documento di progettazione dettagliata prima di essere approvato scrivere qualsiasi codice su un progetto. Questa procedura è anormale per il progetto open source?
TomCaps

5
@TomCaps Penso che la ragione principale per cui così pochi progetti FOSS abbiano una vasta documentazione è abbastanza semplice: se stai scrivendo un piccolo programma per risolvere un bisogno che hai , è probabile che dal tuo sviluppatore che non hai bisogno anche di documentazione, tu vorrete passare il vostro tempo a migliorare il programma piuttosto che a scrivere documentazione che non è garantita per essere utile a nessuno (e se il progetto non fosse mai usato da nessuno tranne lo sviluppatore?). Non è una buona pratica, ma molti progetti FOSS sono a corto di tempo per gli sviluppatori.
Jeff Welling,

5
@ TomCaps: questa procedura è anormale per la maggior parte delle aziende che conosco ...
Treb,

1
La maggior parte dei progetti open source non sono aziende. Stai pensando a cosa succede quando c'è un progetto che mi viene pagato per costruire, con una scadenza e un budget. Se hai un sacco di persone che codificano per soddisfare un'esigenza che hanno o per divertimento e non c'è budget o client non hai quel tipo di cose.
Elin,

1
@TomCaps - chiunque scriva software Open Source può fare esattamente quello che gli piace. Alcuni progetti (ad es. La famiglia Apache) hanno regole e linee guida per chiunque commetta codice e talvolta questo include standard di documentazione ecc. Inoltre, metterei in dubbio il valore di un "documento di progettazione di dettaglio" in quanto ciò invariabilmente ti bloccherà in un disegno fisico che (in la mia esperienza personale) di solito non è ottimale. Una descrizione dettagliata di "cosa" dovrebbe fare il programma lascia lo sviluppatore libero di ottimizzare l'implementazione e applicare strategie creative alla soluzione.
James Anderson,

12

Poiché gli sviluppatori open source di solito hanno talento e scelgono anche progetti nella loro area di competenza, hanno già "documentazione" nei loro teschi. Con poca esagerazione è necessaria un'attenta documentazione solo se manca qualcuno di questi: o)

Ad essere sincero, non leggo davvero la "documentazione" di fronte a una base di codice sconosciuta. Una breve introduzione, forse alcuni schizzi concettuali e direttamente nel codice! Sperimenta, prova piccoli cambiamenti. Funziona perfettamente per un codice ben progettato. Se mi trovo ad affrontare un disastro orribile, il modo migliore per impararli è di refactoring poco a poco per migliorare la chiarezza (idealmente con l'aiuto del test unitario).

Ulteriori motivi potrebbero essere le semplici radici organiche di questi progetti. L'architettura è quindi una visione piuttosto evoluta nella mente degli sviluppatori piuttosto che un'entità "documentata" dichiarata.


8

La ragione per cui tali documenti spesso non esistono è piuttosto semplice: ai programmatori piace programmare, non scrivere documentazione. Soprattutto con progetti open source, a cui gli sviluppatori spesso contribuiscono durante il loro tempo libero / tempo libero.

Fondamentalmente, scrivere la documentazione non è divertente. E se non vengono pagati per questo, chi vuole passare il tempo libero a fare qualcosa che non è divertente?


Alcuni grandi progetti open source (GCC, kernel Linux, Firefox, Qt, ....) hanno la maggior parte (o una parte significativa) dei loro collaboratori pagati per lavorare (a tempo pieno o metà tempo) sul progetto. Quindi, anche se pagati per software libero, non scrivono molta documentazione
Basile Starynkevitch il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.