Poteva diventare un 'category killer', un programma che si adatta talmente bene alla sua funzione che le alternative non solo sono scartate, ma addirittura dimenticate.
Credo che non si possa puntare a un risultato come questo, n� progettarlo. Occorre inserire nel progetto isee cos� potenti che i risultati sembrino naturali, persino inevitabili. L'unico modo � quello di avere molte idee o di avere il fiuto ingegneristico di portare le buone idee degli altri oltre alpunto previsto dall'ideatore.
Andy Tanenbaum ha avuto l'idea originale di costruire un semplice Unix per i pc IBM e usarlo come strumento didattico (e l'ha chiamato Minix). Linus Torvalds ha spinto il concetto Minix oltre il punto in cui Andrew pensava potesse andare. Nello stesso modo (in una scala minore) ho preso idee di Carl Harris and Harry Hochheiser e le ho spinte forte. Nessuno di noi era 'originale' nel senso romantico con cui la gente pensa sia un genio. Ma la maggior parte della scienza, dell'ingegneria e dello sviluppo software non � fatta da geni originali.
I risultati erano materia molto stimolante di per s�, proprio il tipo di successo per cui ogni hacker vive! E significavano che dovevo innalzare ancora gli standard. Per rendere fetchmail buono come sapevo poteva essere, dovevo scrivere non solo per i miei bisogni, ma includere e supportare caratteristiche necessarie ad altri anche se fuori dalla mia orbita. E dovevo mantenere il programma semplice e robusto
La prima e pi� importante caratteristica che ho realizzato � stata il 'multidrop support', la capacit� di prendere la posta da mailbox che hanno accumulato tutta la posta di un gruppo di utenti e spedire ogni messaggio al suo destinatario.
Ho deciso di sviluppare il 'multidrop support' in parte perch� molti lo chiedevano, ma soprattutto perch� pensavo che avrebbe trovato i buchi, forzandomi a trattare gli indirizzi nella loro generalit�. E cos� � stato. Mi ci � voluto tempo, non perch� ci fosse un punto particolarmente difficile, ma perch� c'erano molti dettagli. Ma alla fine anche questa si � dimostrata un'ottima decisione di progetto. Infatti:
14. Ogni strumento deve fare ci� che ci si aspetta, ma uno strumento veramente grande ti porta ad usi che tu non ti saresti aspettato.
L'uso inaspettato di 'multi-drop fetchmail' � eseguire mailing lists con la lista tenuta sul lato client della connessione, cos� come l'espansione degli alias. Ci� significa che un computer personale connesso a un ISP pu� trattare mailing list senza l'accesso permanente ai file alias dell'ISP.
Un'altra importante modifica richiesta dai miei beta tester � stato il supporto per le operazioni MIME (Multipurpose Internet Mail Extensions) a 8-bit. Questo era facile,perch� ero stato attento a tenere pulito il codice a 8-bit, per ubbidire a un'altra regola:
15. Quando si scrive 'gateway software', si deve disturbare il 'data stream' il meno possibile e MAI eliminare informazioni, a meno che il ricevente ti obblighi.
Avendo obbedito a questa regola, ho solo dovuto leggere lo standard MIME e aggiungere un semplice bit per la generazione dell'header.
Alcuni utenti europei volevano che io aggiungessi una opzione per limitare il numero di messaggi ricevuti per sessione (per controllare i costi delle loro costose linee telefoniche). Ho resistito a lungo e tuttora non sono soddisfatto. Ma se vuoi produrre per il mondo, devi ascoltare gli utenti, anche se non ti pagano in contanti.