di  -  venerdì 5 ottobre 2012

Dopo oltre 30anni di dibattiti, discussioni, cause legali, e chi più ne ha più ne metta, arriva una ulteriore (e speriamo definitiva) prova a supporto di chi da tempo afferma che il Q-DOS (alias QDOS) e quindi l’MS-DOS non sono una copia del CP/M. Ricordiamo che il PC(MS)-DOS è frutto della licenza esclusiva (poi acquisizione) del Q-DOS da parte del big di Redmond

Fino ad ora, infatti, le prove utilizzate per smentire la tesi secondo cui Paterson avrebbe copiato il CP/M per creare il Q-DOS, erano basate su quanto è “visibile” dei due sistemi operativi: primo, il CP/M originale è a 8bit e il Q-DOS a 16bit, e al momento del rilascio dell’86-DOS (PC-DOS) la versione a 16 bit del CP/M era in uno stato embrionale poco definito. Inoltre, se è vero che i due sistemi condividono un’API simile, è anche vero che il PC DOS utilizza come file system la FAT (sviluppato da Marc McDonald di Microsoft) e i floppy formattati su un sistema non sono leggibili sull’altro.

A colmare l’assenza di un’analisi introspettiva-comparativa di dettaglio, sia tra il Codice Sorgente del CP/M e dell’86-DOS che  sui loro binari unitamente a quelli dell’MS-DOS, è stato Bob Zeidman (presidente  e fondatore della Software Analysis and Forensic Engineering Corp., sviluppatrice di software per comprovare la proprietà intellettuale del software), che ha messo a confronto:

Prima di continuare e’ doveroso sottolineare che Zeidman e’ stato testimone MS nella causa contro Microsoft e che potrebbe, e sicuramente in parte e’ cosi’, aver sfruttato la questione per pubblicizzare il proprio software. Nonostante queste considerazioni, l’analisi sembra essere stata condotta con professionalita’ ed i risultati appaiono assolutamente credibili.

La prima prova è stata quella di confrontare il codice sorgente del CP/M e dell’86-DOS, cosa non particolarmente agevole soprattutto in virtù del fatto che parte del CP/M è scritto in PL/M e la relativa conversione in assembly non è proprio una passeggiata (si pensi alla traduzione dall’egiziano antico all’inglese). Effettuata comunque tale traduzione, gli unici match trovati tra i due sistemi sono inerenti l’utilizzo di parole chiavi (CALL, MAKE, ecc) e alcuni commenti. In pratica nulla di rilevante.

Continuando l’analisi del codice, la presenza di variabili con nome simile (es: FirstName / fName) potrebbe rappresentare una traccia che evidenzia la copia, ma i nomi utilizzati sono assolutamente troppo comune nell’ambito della programmazione, soprattutto in riferimento al periodo ’79-’80.

La verifica di Zeidman continua con CodeSuite tools, che permette di identificare elementi comuni tra due programmi e correlarli con altri algoritmi, per la risoluzione dello stesso problema, rintracciabili su internet. Se i due programmi in analisi hanno un elemento in comune e tale elemento è praticamente assente su internet, è possibile affermare che essi sono in relazione (copia) tra loro. L’applicazione di CodeSuite sul CP/M e sull’86-DOS evidenzia lo statement comune “jnz comerr” apparentemente non presente su internet. Però Zeidman si accorge ben presto che “jnz” è un acronimo di “jump if not zero”, ovvero una istruzione decisamente comune nel linguaggio assembly. Stesso discorso per “Comerr” , combinazione di “com” (riferimento alla porta di comunicazione) ed “err”, chiaramente riferito ad “error”.

Infine anche l’analisi sulle routine presenti nel codice non evidenza alcun elemento significativo in comune, anzi porta alla luce una profonda differenza tra la loro strutturazione e il loro codice.

Successivamente Zeidman compara il binario dell’MS-DOS 1.11 con il CP/M (versione 2.0, e parte del codice della 1.4) grazie al tool BitMatch. Chiaramente la verifica tramite binario non può dare risultati accurati come nel caso dei sorgenti e le poche somiglianze riscontrate sono solo relative a parole d’uso comuni che non evidenziano in alcun modo il legame dei due prodotti.

L’ultima verifica ha interessato quella che ormai è diventata una vera e propria leggenda: il “messaggio segreto”, contente il nome di  Kildall, che veniva visualizzato dal CP/M attraverso uno specifico comando (un easter egg). Ad affermarne con forza l’esistenza è stato Jerry Pournelle, scrittore Americano di fantascienza, il quale sostenne che Kildall era stato in grado di dimostrargli che il DOS conteneva del codice CP/M poiché, digitando quel particolare comando dal prompt, anche nel sistema Microsoft compariva il suo nome (Gary). Pournelle comunque non ha mai voluto rilevare quale fosse questo comando in modo da comprovare le proprie affermazioni. La storia di questo comando speciale è divenuto una sorta di leggenda tanto da ritrovarla anche in “They Made America”.

L’analisi dei tre sistemi operativi tramite SAFE (tool per estrarre stringhe da file binari), non ha evidenziato in alcun modo la presenza di tale messaggio in chiaro, e la stringa “Digital Research” compare solo nelle notizie di copyright del CP/M. Inoltre i soli 160Kb del sistema di Kildall non lasciano sicuramente spazio a routine di cifratura che nascondano il messaggio stesso.

Tutto ciò porterebbe ad una sola e definitiva conclusione: Paterson non ha copiato il CP/M per il proprio 86-DOS (Q-DOS) e di conseguenza Microsoft non ha copiato il sistema di Digital Research.

Se siete interessati ad ulteriori approfondimenti sulla questione, vi rimando al link: L’Eterna accusa di Plagio, e al precedente articolo di Alessio, Gary Kildall: il vero padre del DOS più relativa discussione.

10 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    michelangelog
     scrive: 

    meglio tardi che mai!

  • # 2
    zephyr83
     scrive: 

    Se a quei tempi ci fossero stati brevetti software come oggi probabilmente sarebbe finita molto diversamente!!! Si è riuscito a dimostrare che l’86-Dos non è stata una copia di CP/M così come pure adesso si riuscirebbe a dimostrare che tante altre cose non sono copie di altre anche se emulano le stesse funzioni………ma ci sn i brevetti e i risultati cambiano!!!

  • # 3
    Flare
     scrive: 

    Ma infatti, anche se non ha copiato direttamente il codice, è stato copiato praticamente tutto il resto. Di fatto è un clone del CP/M. Ad oggi basterebbe molto, ma molto meno… Siamo passati dall’anarchia all’esagerazione opposta (almeno negli USA coi loro brevetti), in queste cose.

  • # 4
    Cesare Di Mauro
     scrive: 

    Forse il termine clone può creare ambiguità. Che MS-DOS fosse un clone del CP/M a livello di funzionalità / API esposte, penso nessuno lo possa negare. Ma il codice del CP/M non fu copiato.

    E’ un po’ come dire che il DR-DOS, sempre di Digital, era un clone dell’MS-DOS, ma non aveva codice copiato da quest’ultimo.

    Comunque i brevetti c’erano anche all’epoca, ma bisogna vedere cosa brevettare. Nello specifico, anche se il CP/M fosse stato coperto da brevetti, il Q-DOS prima e l’MS-DOS poi sarebbero stati ugualmente leciti.

    Soltanto Oracle ha provato a brevettare le API di Java (ne abbiamo discusso anche qui, in un pezzo che ho scritto all’epoca), ma mi sembra che le sia andata male…

  • # 5
    Alessio Di Domizio
     scrive: 

    @ Cesare
    Diciamo che senza CP/M e la relativa base installata, tutta la storia del dos, compreso MS-DOS, avrebbe preso una piega diversa. :-)

  • # 6
    Cesare Di Mauro
     scrive: 

    Senz’altro. Ma non sappiamo se in meglio o peggio… O:-)

  • # 7
    djfix
     scrive: 

    beh a mio parere se MS-Dos abbia preso spunto da CP/M di buono ha che ha avuto una vita lunga e ha fatto felici molti utenti che come me lo vedevano tutti i giorni.

  • # 8
    Gabriele
     scrive: 

    E’ come dire che WINE è un clone di WINDOWS…

  • # 9
    Wakko
     scrive: 

    Quoto Gabriele.
    Come anche Paterson dice qui http://dosmandrivel.blogspot.it/2007/08/is-dos-rip-off-of-cpm.html DOS non è una copia di CP/M.
    DOS implementa le API di CP/M, una scelta dettata dalla necessità di rendere semplice il porting delle applicazioni ad 8 bit (Z80) su 8086.

    Le API sono state reimplementate da zero e Paterson non ha mai avuto accesso ai sorgenti di CP/M.

    Sostenere che DOS sia una copia di CP/M è quindi errato… se reimplementare le API fosse un problema di copyright allora Oracle avrebbe ragione a dire che Android viola il suo copyright, SCO avrebbe ragione a dire che Linux viola il suo copyright, ecc ecc ecc.

    Alla luce di questo mi auguro che correggerete gli articoli falsi che avete pubblicato precedentemente, in particolare quello che sostiene che Gary sia il vero padre del DOS. Per quanto Gary mi sia simpatico e mi dispiaccia che l’abbia presa così male nella diatriba con il DOS questa affermazione semplicemente è falsa e depriva il vero autore (Parterson) del giusto riconoscimento che gli spetta.

  • # 10
    Cesare Di Mauro
     scrive: 

    L’articolo a cui ti riferisci ha di sbagliato il titolo, poiché all’interno non si parla di copia, ma di riscrittura. Peraltro la questione sulla presunta o meno copia del CP/M è stata ampiamente e meticolosamente discussa nei commenti, che t’invito a leggere. ;)

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.