Dovrei costruire il mio CMS o fare affidamento su uno pre-costruito? [chiuso]


23

Correlati : Come programmatore principiante, dovrei favorire la creazione di librerie personali rispetto all'uso di librerie di terze parti?

Come sviluppatore web PHP di livello intermedio o avanzato e giovane (15 anni), dovrei creare un CMS completamente nuovo per il mio sito Web o fare affidamento su software pre-creato come WordPress o Drupal?

Non credo esattamente che WordPress sia abbastanza potente / scalabile per essere in grado di gestire ciò che sto cercando di fare e dopo aver armeggiato un po 'con Drupal negli ultimi giorni, non sembra all'altezza dei miei gusti e inoltre non è ben documentato, quindi ho un po 'di problemi a farlo svolgere alcune semplici attività. Mi piacerebbe usare qualcosa come ExpressionEngine, ma non ho i soldi per servire fuori per uso commerciale che è attualmente a circa $ 300, quindi questo è un no-go.

Inizialmente ho iniziato a codificare il mio sito come un sistema temporaneo in modo che i miei utenti potessero acquistare aggiornamenti e altre cose come la valuta di gioco fino a quando non avrei potuto creare un nuovo sito Web, ma dopo averlo iniziato mi sono reso conto rapidamente che dovevo renderlo scalabile , quindi da allora in poi ho programmato con l'idea di renderlo un sito Web perfettamente funzionante. Ci sono voluti solo un paio di giorni, ma ci sono tutte le basi (registro, login, modifiche dell'account, ecc.) E credo che sarebbe un ottimo inizio per un CMS privato.

L'ultima cosa che voglio aggiungere è se dovessi costruire il mio CMS, dovrei usare un framework PHP come CodeIgniter, con cui ho un po 'di esperienza?

Forse altri sviluppatori potrebbero darmi un'idea di cosa mi stia cacciando.


11
Non sottovalutare la quantità di ore impiegate per rendere i CMS esistenti quello che sono. Potresti essere molto sorpreso ...

Risposte:


23

Dipende totalmente dalla tua situazione. Grandi siti sono stati realizzati con CMS là fuori. Penso che dovremmo prima capire due concetti, CO e TCO.

CO (costo di proprietà)

Quando acquisti qualcosa, l'importo da pagare è CO. Nel caso di WordPress, non è nulla, perché WordPress (o molti altri software CMS) sono gratuiti.

TCO (costo totale di proprietà)

Immagina di acquistare un PC per 10000 dollari. E allora? Dovresti dedicare tempo per l'installazione del software (il tempo è una risorsa preziosa, quindi sei un po 'come spendere soldi su quel PC), quindi potresti acquistare una webcam, un altro masterizzatore di DVD e alcuni cavi extra. Quindi è necessario imparare come utilizzare il software installato. In altre parole, il costo totale di proprietà di un PC non è di $ 10.000. È molto più di questo.

Nel caso del software CMS, il loro CO è davvero nulla a tassi molto bassi. Ma molte esperienze dimostrano che il loro TCO non è affatto basso. Le grandi aziende spendono quasi migliaia di dollari per ottenere un buon sito in Joomla o WordPress.

Un altro fattore è il livello di personalizzazione . A volte si desidera utilizzare un software così com'è senza alcuna modifica. In tal caso, WordPress, Joomla, Drupal o qualsiasi altro CMS potrebbero essere un ottimo candidato e non dovresti scrivere il tuo CMS. Ma ci sono volte in cui è necessario un alto livello di personalizzazione. In tal caso, sei davvero frustrato nel personalizzare un CMS pronto all'uso in base alle tue esigenze.

In realtà volevo usare il software CMS pronto, ma dopo aver trascorso un tempo prezioso nell'apprendimento di diversi CMS e nella ricerca di punti deboli di ciascuno, ho finito per creare il mio CMS. Thought Results è il mio sito personale ed è realizzato tramite questo CMS. Lo pubblicherò presto, quindi anche altri potranno usarlo.

Ancora un altro fattore è l' estensibilità . Credimi, ti rende vecchio portare un CMS da stato statico a stato estensibile. Modelli, moduli, plug-in, provider, database e archiviazione, meccanismi di routing e quasi ogni parte di un buon CMS dovrebbero essere estensibili.

Alla fine, il mio suggerimento personale è di iniziare a costruire un CMS, in modo che almeno tu apprenda alcuni dei concetti più fondamentali alla base. Ma prova anche a usare quelli esistenti. In bocca al lupo.


Caspita, risposta eccellente. Alcune di queste cose che non ho mai considerato, ma sono davvero belle da sapere ora. Come stavi dicendo con la personalizzazione, ho davvero bisogno di molto, motivo per cui in origine mi sono rivolto a Drupal perché avevo sentito che avrebbe dovuto essere eccezionale con cose del genere. Nel mio caso, tuttavia, devo avere molta interazione tra più server, PayPal, una registrazione ampiamente personalizzata e altre cose che in realtà non sono facilmente gestibili da qualcosa come Drupal. Mille grazie per la tua risposta, lo apprezzo molto. :)
Alex Bennett,

Vorrei anche che te lo chiedessi, mi consiglieresti di usare un framework come CodeIgniter o di costruirne uno mio come posso (forse per l'esperienza)?
Alex Bennett,

1
Bene, @Alex, sono felice di poterti aiutare. Ma mi dispiace anche, poiché la mia piattaforma è .NET e non ho molta familiarità con i framework PHP. L'uso di un framework è sicuramente incoraggiante. Uso Entity Framework come ORM, quindi l'utilizzo di un ORM in PHP può davvero favorire il tuo sviluppo.
Saeed Neamati,

Va bene, grazie lo stesso. L'unico motivo per cui non vorrei usare un framework è per la pratica, ma credo che probabilmente sarebbe più sicuro per me usarne uno in questo caso perché è un sito di produzione e non voglio avere alcun randagio vulnerabilità che possono sorgere con la creazione del mio CMS / framework.
Alex Bennett,

1
@Alex Bennett, Un'altra cosa, ci sono CMS open source. Se ottieni il codice sorgente. Potresti iniziare con quello, e poi modificarlo a tuo piacimento. Questo accelererebbe davvero la costruzione del tuo. È come un approccio ibrido. Chi vuole davvero reinventare la ruota?
MVCylon,

18

Qui interpreto l'avvocato dei diavoli, tuttavia bisogna dirlo. Alcuni dei problemi più comuni con gli sviluppatori di software:

  • Sotto stima del tempo e degli sforzi necessari per completare un progetto banale, lasciamo andare un grande progetto
  • Completa mancanza di comprensione della realtà aziendale
  • Sopravvalutazione delle proprie capacità e produttività.
  • Sottovalutazione della complessità e dei dettagli sottili
  • La convinzione che il loro problema sia così unico che nessuno l'ha ancora risolto.

Sei sicuro di non commettere nessuno di questi errori, perché anche per un 15y0, $ 300 potrebbero essere guadagnati in poche settimane e ciò che sembra stia proponendo potrebbe richiedere mesi. Pensa a cosa accadrebbe se ottenessi un lavoro retribuito e acquistassi ExpressionEngine con i soldi. Verrà consegnato prima, con funzionalità ancora migliori di un lavoro fai-da-te?


1
Sono abbastanza maturo per il tuo quindicenne medio, come spero tu possa dire, e non credo di aver fatto l'errore di fare una delle cose che hai elencato. Ho trascorso molto tempo alla ricerca di possibili soluzioni e devo ancora trovarne una buona per la mia situazione. Per quanto riguarda i soldi, la mia azienda guadagna oltre $ 300 di entrate al mese (non molto, ma paga per le macchine dedicate) in modo da poter ottenere i soldi, ma sto cercando di giocarci in modo conservativo e investire in cose che sono un must, come hardware e pubblicità. Grazie per la risposta, la terrò davvero a mente.
Alex Bennett,

Non penso che faresti davvero un CMS tanto quanto una soluzione personalizzata. Se crei un vero CMS, probabilmente potresti distribuire / vendere il CMS. Penso che saresti un po 'sopra la testa (come farei io, ma ...) per creare un CMS completo.
HelloFictionalWorld,

2
@Alex devi considerare quel tempo == denaro, in particolare il tuo tempo. Quanto vale? Se il tuo CMS impiega più di 30 ore per produrre (@ $ 10 / ora), ExpressionEngine è la scelta migliore. Allo stesso modo se quei 30 ore di lavoro spesi per altre cose generano più valore reale per il tuo sito di $ 300, allora ExpressionEngine è una scelta migliore.
CdMnky,

8

Ci sono due risposte a questo.

Uno è semplice: No- non reinventare la ruota. Ci sono molti eccellenti sistemi CMS e se impari a usarne uno bene, se ci sono cose che ti servono che non offrono, puoi concentrare maggiormente le tue abilità sulla creazione di un plug-in a tale scopo piuttosto che reinventare il ruota.

Il secondo è leggermente meno ovvio: sì. Se vuoi capire come funziona un CMS e i problemi incontrati nella creazione di uno, non c'è nulla di male nel costruirne uno tuo. Probabilmente non avrà mai la potenza e la flessibilità di uno dei sistemi CMS esistenti e poiché ci sono circa 100000000000 sistemi di gestione dei contenuti PHP in tutto il luogo, ci sono pochissime possibilità che chiunque altro sia mai interessato a questo, ma non lo farà hanno le cose che non ti servono e probabilmente funzioneranno molto più piccole e semplici di qualsiasi altro sistema più grande. Ci vorrà molto tempo, è improbabile che i risultati siano altrettanto buoni e non farà alcuna differenza per il resto del mondo, ma in termini di sviluppo e apprendimento, potrebbe essere un esercizio utile.

In ogni caso, prima di iniziare a costruire il tuo, proverei i sistemi tradizionali disponibili solo per avere un'idea di come funzionano, di cosa fanno bene e di cosa ritieni possano fare di meglio. Avere una buona conoscenza di questi può informare la tua decisione sull'opportunità o meno di creare qualcosa di proprio.


Grazie per la risposta. Solo per chiarire però: se costruissi questo CMS non avrei intenzione di rilasciarlo, non è un mercato in cui mi trovo. Sarebbe solo per me e sarebbe stato costruito per fare solo le cose che voglio / ho bisogno. Ho sperimentato con altri però, ma non riesco a trovarne uno che sia documentato abbastanza bene e faccia le cose di cui ho bisogno senza costringermi a cambiare il nucleo in qualche modo, ecco perché ho iniziato a considerare solo di crearne uno mio. Un altro motivo per cui voglio costruire il mio è per la pratica, poiché sto lavorando per diventare uno sviluppatore web (o qualcosa di simile) dopo il college. :)
Alex Bennett,

3
Scrivo come qualcuno che ha implementato un cms PHP molto piccolo, molto semplice e molto semplice qualche tempo fa e da allora lo ha usato per parecchi siti. Non fa altro che un piccolo frammento di ciò che fanno i sistemi su larga scala, ma fa tutto ciò di cui ho bisogno per i siti più piccoli e poiché è basato su file flat, funziona praticamente ovunque. Quindi apprezzo molto il fatto che a volte tu voglia davvero costruirne uno tuo.
glenatron,

5

Se non hai mai provato a programmare un CMS, questa potrebbe essere un'ottima opportunità per farlo. Imparerai molto, e indipendentemente dal fatto che tu lo finisca avrai una buona idea di es:

  • Cosa è difficile da fare e cosa è facile
  • Come internazionalizzare e localizzare le tue pagine
  • Come gestire utenti e ruoli
  • Come gestire la manutenzione delle strutture dati sottostanti invece di richiedere istruzioni di aggiornamento SQL.
  • Come gestire pagine in più parti.
  • Come gestire in modo efficiente il contenuto statico.
  • Come scalare su più computer e carico elevato.
  • Come fornire API per personalizzazioni e temi degli utenti.

Alcuni di questi si potrebbe anche scoprire che hai imparato come non farlo. Anche questa esperienza è importante.

Personalmente ho raggiunto uno stadio in cui ho imparato che il "quanto sia difficile" copre solo una percentuale del lavoro effettivamente necessario per creare un prodotto di alta qualità, e se dovessi scegliere un CMS se ne cercasse uno popolare con una base di codice accessibile accessibile e una buona documentazione e una buona architettura di plug-in che mi permettesse di scrivere solo plug-in adatti e quindi aggiornare il CMS di base quando esce una nuova versione.


Grazie per l'input, ne ho già avuto parecchie esperienze su come non farlo. Ad esempio, scrivo 30 righe di codice per eseguire una semplice attività e poi 2 giorni dopo riesaminare il codice e scoprire che potrei accorciarlo in 10 righe. Queste esperienze, per quanto fastidiose possano essere, aiutano sicuramente il processo di apprendimento in quanto tendono a rendere le cose più "attaccate".
Alex Bennett,

@Alex, questa esperienza "come NON farlo" si adatta alle dimensioni della base di codice del progetto. Ma credo che dovresti farlo almeno una volta per apprezzarlo :)

3

Questa è solo leggermente una risposta alla tua domanda. Ho pensato che tu fossi in php e non stai andando per il modo CMS pre-fatto. Benvenuto nel club! Molti di noi hanno fatto lo stesso. Alcuni consigli che potrebbero facilitare il tuo carico.

Ho iniziato a costruire il mio CMS, l'implementazione MVC, il gestore dell'internazionalizzazione (i18n), il gestore della sessione, un qualche modo di livello di astrazione del database, un modo di gestori di moduli, ecc. E poi ho scoperto che quello che stavo facendo era effettivamente fatto prima, ma in modo migliore dai framework. Quindi, questo significa che non devi reinventare completamente la ruota, ma proprio dove si adatta alle tue esigenze. Le strutture ti semplificano la vita, ma richiedono molto sforzo per leggere e imparare. Mi ci è voluto un anno per padroneggiare davvero Symfony, e non me ne pento neanche un secondo.

E sei fortunato, perché in questo momento ci sono molti più framework di alta qualità rispetto a prima. Per dirne alcuni :

  • Symfony : oggi hanno rilasciato la versione 2.0 stabile, è roba eccitante. È liberamente accoppiato, il che significa che è possibile utilizzare entrambi i componenti o scegliere di utilizzare tutto come pacchetto integrato. Ha una buona documentazione e una base di utenti attiva. In caso contrario, la versione 1.4 ormai obsoleta è ancora molto affidabile e utile. Ha molti plugin potenti per semplificarti la vita. (Gruppi)
  • Zend Framework : Alcuni sostengono che non sia davvero aggiornato (non tutto il marchio che integra nuove funzionalità 5.3), ma è in circolazione da un po 'di tempo ed è fondamentalmente un insieme di componenti utili (di nuovo liberamente accoppiati, non un gioco tutto o niente ). Lo uso come toolkit per fare cose come la ricerca (zend_lucene) e la generazione di pdf. Ma ha anche un set di controller MVC comunemente usato. Dovresti esaminarlo se non l'hai ancora fatto. Molto ben documentato
  • CakePHP : L'ho usato molto tempo fa e non è stato possibile consultare la documentazione. Apparentemente questo ora è migliore e probabilmente merita la tua considerazione.

  • Yii : Non l'ho usato, ma ultimamente c'è un sacco di confusione, probabilmente merita la tua attenzione.

  • CodeIgniter : Ho sentito molte persone lodare codeigniter per la sua curva di apprendimento facile e facilità d'uso. Non l'ho usato.

Se vuoi provare Python, molte persone lodano anche Django e, naturalmente, il rubino sulle rotaie.

Probabilmente ce ne sono altri, ma questo dovrebbe esserti utile. Se non desideri utilizzarli, puoi comunque imparare molto da questi framework. In bocca al lupo!


Grazie, ho molta esperienza con CodeIgniter ma non ho provato nessuno degli altri. Li prenderò sicuramente in considerazione però.
Alex Bennett,

1
laravel.com ?? CodeIgniter è attualmente il più utilizzato, ma Lavarel lo sta sorpassando rapidamente
Mawg

1
Sì. Questo post ha quattro anni. Laravel stava appena iniziando allora.
Arend,

1

La risposta dipende in gran parte da ciò che stai cercando di ottenere.

Se hai intenzione di sviluppare le tue abilità, conoscere la gestione dei contenuti, ecc. Quindi sì, sviluppa le tue. Allo stesso modo se vuoi imparare un framework usalo.

Tuttavia, se il tuo focus è il gioco che menzioni e i suoi giocatori, la risposta è quasi certamente no. Il tuo tempo è una risorsa limitata e quindi costosa. Il tempo impiegato nello sviluppo di un CMS non è il tempo impiegato nello sviluppo del gioco ed è il gioco che genera entrate. Quindi poniti la domanda. Il tempo impiegato per sviluppare questo CMS piuttosto che procurarne uno migliorerà l'esperienza di gioco dei miei giocatori più del tempo impiegato per sviluppare il gioco? Se la risposta è sì, sviluppala, altrimenti non farlo.

Allo stesso modo la decisione del CMS open source su ExpressionEngine dovrebbe ridurre ToC come dice Saeed. In poche parole, se Costo (Wordpress)> Costo (ExpressionEngine) spendi $ 300. Qui il costo è order_acquisto + (hours_to_customise * your_hourly_rate).


1

Trova un CMS adatto al 90% delle tue esigenze e modificalo nel tempo per aggiungere funzionalità che non fornisce.

Ciò ti consentirà di lanciarti presto e di adattarti al variare delle esigenze dell'utente e dell'utente.


Mentre questo sembra scegliere il peggio di entrambi i mondi, non sono d'accordo con il downvote, quindi l'ho aumentato.
Mawg,

1

Ti incoraggio pienamente a creare il tuo CMS. È di gran lunga il modo migliore per conoscere i dettagli di un tale sistema in termini di personalizzazione e sicurezza. Ma devo chiederti quanto sei intermedio o avanzato con le tue abilità di PHP. Questo non riguarda la tua età, credimi.

La bandiera per me era "Non sento esattamente che WordPress sia abbastanza potente / scalabile per essere in grado di gestire ciò che sto cercando di fare e dopo aver armeggiato un po 'con Drupal negli ultimi giorni, non sembra proprio all'altezza dei miei gusti e inoltre non è ben documentato, quindi ho un po 'di problemi a farlo per certe semplici attività. "

La pletora di libri e siti sulla personalizzazione di Worpress e Drupal, per non parlare dei siti di alto profilo che girano su questi, dimostrano che devi sapere cosa stai facendo ottenere siti come questi. Per non parlare, interi budget sono riservati per la gestione di questi siti.

Link ad esempio:

http://drupal.org/cases

http://wpmu.org/wordpress-showcase-20-high-profile-sites-running-on-wordpress

Questo non ti scoraggia in ciò che stai cercando di fare, sicuramente. Voglio solo assicurarmi di non dedicare troppo tempo (reinventando la ruota) e di sentirti frustrato a un certo punto e di dire semplicemente "eff it", quando puoi allungare i tuoi talenti e mostrare alla gente, datori di lavoro inclusi , quello che hai con gli strumenti attualmente disponibili. Nel mondo reale e nell'economia attuale, il tempo è denaro e le aziende e le organizzazioni non hanno il tempo e / o i budget per gestire continuamente la creazione di progetti da zero.
Le informazioni oggi si muovono alla velocità della luce, motivo per cui i programmatori che possono separare il rumore e creare contenuti / app / sistemi intenzionali in tempi di risposta appropriati sono molto richiesti.


0

Solo tu puoi rispondere se Wordpress o Drupal possono fare quello che ti serve un CMS, ma se vuoi provarli, perché non usare una macchina virtuale di Turnkey Linux , come quella per Wordpress , Drupal , Joomla o uno qualsiasi gli altri con il tag di gestione dei contenuti .

Supponendo che tu abbia già installato VMware player o VirtualBox , entro pochi minuti dal download di una di queste appliance, potresti provare tu stesso il software, con un investimento minimo in termini di tempo.

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.