Sceglieresti un database o un dvcs come memoria per un wiki di documentazione?

2

Sto per iniziare a codificare un wiki orientato alla documentazione, come un progetto per animali domestici. Le caratteristiche principali sono:

  • Raggruppamento estremamente semplice dei documenti per versione
  • Sintassi Markdown (sottoinsieme di)
  • Autori multipli e amp; progetti

Sono ancora indeciso sulle opzioni di archiviazione. L'approccio ovvio sarebbe un database. Dato che questo è un progetto per animali domestici, probabilmente andrò con una soluzione NoSQL, probabilmente MongoDB. La maggior parte dei progetti correlati al lavoro si basano su MySQL e voglio continuare a farlo divertito, cioè non fare le stesse cose che faccio al lavoro tutto il giorno.

L'approccio meno ovvio sarebbe Mercurial, in modo simile a git-wiki . Mercurial offrirebbe ovviamente un'integrazione più stretta con il codice e non dovrò creare versioni di versioni. Ho ancora bisogno di una sorta di database, per archiviare le informazioni sui repository e possibilmente altre cose, ma Mercurial sarebbe la memoria principale per i testi.

Ho compilato una piccola lista dei principali punti per ciascun approccio:

database

  • Può modellarlo come voglio, senza preoccuparsi del flusso di lavoro Mercurial.
  • L'integrazione del codice potrebbe essere semplice come mettere un link al repository (ma niente di più).
  • Abbastanza facile da cambiare database in qualsiasi momento, se necessario (abbondanza di strumenti nativi).
  • Scelta naturale (più persone sono abituate, non accoppiate a un vcs).

Mercurial

  • Versioning e diff per impostazione predefinita.
  • La stretta integrazione con il codice significa che sono possibili molte cose interessanti, come un plug-in di revisione del codice.
  • Dovrò scrivere un wrapper, non sono soddisfatto di tutte le librerie già pronte che ho valutato (non necessariamente una cosa negativa).
  • È ancora necessaria una sorta di database.
  • Diversi flussi di lavoro validi, quello che scelgo per lo strumento potrebbe non essere molto compatibile con quelli che sceglieranno per il loro codice.

Voglio renderlo il più piccolo e divertente possibile, e sono un po 'bloccato sui due approcci. Pensieri? C'è qualcosa di ovvio che mi manca? Se questo è troppo sfumato per decidere, cosa dovrei definire meglio prima di scegliere?

    
posta yannis 28.12.2011 - 12:20
fonte

1 risposta

2

Se usi Bitbucket con Mercurial, c'è un wiki integrato che usa Mercurial in un URL leggermente diverso rispetto al tuo progetto, e può essere unito e ramificato separatamente, se lo desideri. Usa una sintassi Wiki che non è poi così diversa da qualsiasi altro sistema Wiki, e la documentazione basata su Wiki è ora abbastanza comune nelle aziende più piccole per le quali ho lavorato.

Non ho l'energia per costruire un altro wiki o sistema di documentazione, ma se fossi incline a lanciare il mio, probabilmente userei qualche variazione di questo approccio. Non sarebbe una vendita difficile con l'addetto alla documentazione del nostro team, dal momento che la maggior parte degli scrittori di tecnologia sono ora utilizzati per VCS in una forma o nell'altra.

La documentazione, per definizione, è orientata ai documenti e un database relazionale probabilmente non è la soluzione ideale per il problema; MongoDb è un'alternativa ragionevole, ma se hai bisogno di versioning, diffs e così via, reinventerai soluzioni che sono già ben comprese nei sistemi di controllo delle versioni. Se lasci che il DVCS faccia il versioning per te, sarai in grado di concentrarti maggiormente sulle funzionalità che rendono il tuo Wiki orientato alla documentazione, meglio, per la documentazione.

Inoltre, se hai seguito la strada semplicemente costruendo le funzionalità wiki e non preoccupandoti dello spazio di archiviazione, poiché Mercurial ti prende quasi tutto il tempo, puoi sempre refactoring per supportare altri meccanismi di archiviazione in seguito, dal momento che non avrai legato il tuo progetto per una soluzione di database specifica. Se si inizia con la presunzione di un database, si impiegherà molto tempo in ingegneria per supportare l'interazione con il database e sarà difficile evitare la tentazione di associarsi alle funzionalità del sistema di database, quindi cambiare la tua mente più avanti in quel caso potrebbe essere più difficile.

    
risposta data 28.12.2011 - 12:39
fonte

Leggi altre domande sui tag