Dois-je créer mon propre CMS ou m'en remettre à un pré-construit? [fermé]

23

Connexes : En tant que programmeur débutant, devrais-je privilégier la création de mes propres bibliothèques plutôt que l'utilisation de bibliothèques tierces?

En tant que développeur Web PHP de niveau intermédiaire à avancé et jeune (15 ans), dois-je créer un CMS entièrement nouveau pour mon site Web ou utiliser des logiciels prédéfinis tels que WordPress ou Drupal?

Je ne pense pas exactement que WordPress soit suffisamment puissant / évolutif pour pouvoir gérer ce que j'essaie de faire et après avoir bricolé un peu avec Drupal ces derniers jours, il ne semble tout simplement pas à la hauteur de mon goût et n'est pas non plus bien documenté, donc j'ai un peu de mal à le faire effectuer certaines tâches simples. J'aime à utiliser quelque chose comme ExpressionEngine, mais je n'ai pas l'argent à plat pour une utilisation commerciale qui est actuellement à environ 300 $, de sorte que est un non-go.

À l'origine, j'ai commencé à coder mon site en tant que système temporaire afin que mes utilisateurs puissent acheter des mises à niveau et d'autres choses telles que la monnaie du jeu jusqu'à ce que je puisse créer un nouveau site Web, mais après avoir commencé, j'ai rapidement réalisé que je devais le rendre évolutif. , donc à partir de ce moment-là, j'ai codé en pensant à en faire un site Web pleinement fonctionnel. Cela n'a pris que quelques jours, mais toutes les bases sont là (inscription, connexion, modifications de compte, etc.) et je pense que ce serait un excellent début pour un CMS privé.

La dernière chose que je veux ajouter est que si je construis mon propre CMS, devrais-je utiliser un framework PHP tel que CodeIgniter, avec lequel j'ai beaucoup d'expérience?

Peut-être que d'autres développeurs pourraient me renseigner sur ce que je vais peut-être faire.

Alex Bennett
la source
11
Ne sous-estimez pas le nombre d'heures passées à faire des CMS existants ce qu'ils sont. Vous pourriez être gravement surpris ...

Réponses:

23

Cela dépend totalement de votre situation. D'excellents sites ont été créés avec des CMS. Je pense que nous ferions mieux de comprendre d'abord deux concepts, le CO et le TCO.

CO (Coût de possession)

Lorsque vous achetez quelque chose, le montant que vous payez est CO. Dans le cas de WordPress, ce n'est rien, car WordPress (ou de nombreux autres logiciels CMS) est gratuit.

TCO (coût total de possession)

Imaginez que vous achetez un PC pour 10000 dollars. Alors quoi? Vous devriez y consacrer du temps pour installer des logiciels (le temps est une ressource précieuse, donc vous êtes toujours prêt à dépenser de l'argent sur ce PC), puis vous pourriez acheter une webcam, un autre graveur de DVD et des câbles supplémentaires. Ensuite, vous devez apprendre à utiliser les logiciels installés. En d'autres termes, le coût total de possession d' un PC n'est pas de 10 000 $. C'est bien plus que ça.

Dans le cas des logiciels CMS, leur CO n'est vraiment rien à des taux très bas. Mais de nombreuses expériences montrent que leur TCO n'est pas bas du tout. Les grandes entreprises dépensent près de milliers de dollars pour obtenir un bon site dans Joomla ou WordPress.

Un autre facteur est le niveau de personnalisation . Parfois, vous souhaitez utiliser un logiciel tel quel sans aucun changement. Dans ce cas, WordPress, Joomla, Drupal ou tout autre CMS pourrait être un très bon candidat, et vous ne devriez pas écrire votre propre CMS. Mais il y a des moments où vous avez besoin d'un haut niveau de personnalisation. Dans ce cas, vous devenez vraiment frustré de personnaliser un CMS prêt à l'emploi en fonction de vos besoins.

En fait, je voulais utiliser un logiciel CMS prêt, mais après avoir passé un temps précieux à apprendre différents CMS et à trouver les faiblesses de chacun, j'ai fini par créer mon propre CMS. Thought Results est mon site personnel et est construit via ce CMS. Je vais le publier bientôt, afin que d'autres puissent également l'utiliser.

Un autre facteur encore est l' extensibilité . Croyez-moi, cela vous rend vieux de passer un CMS de l'état statique à l'état extensible. Les modèles, modules, plugins, fournisseurs, base de données et stockage, mécanismes de routage et presque toutes les parties d'un bon CMS devraient être extensibles.

Enfin, ma suggestion personnelle est de commencer à construire un CMS, afin qu'au moins vous appreniez certains des concepts les plus fondamentaux derrière. Mais essayez également d'utiliser ceux qui existent déjà. Bonne chance.

Saeed Neamati
la source
Wow, excellente réponse. Certaines de ces choses que je n'ai jamais envisagées, mais sont vraiment agréables à savoir maintenant. Comme vous le disiez avec la personnalisation, j'ai vraiment besoin de beaucoup de cela, c'est pourquoi je me suis tourné à l'origine vers Drupal parce que j'avais entendu dire que c'était censé être génial avec des choses comme ça. Dans mon cas, cependant, j'ai besoin d'avoir beaucoup d'interactions entre plusieurs serveurs, PayPal, une inscription largement personnalisée et d'autres choses qui ne sont vraiment pas facilement gérées par quelque chose comme Drupal. Merci beaucoup pour votre réponse, je l'apprécie vraiment. :)
Alex Bennett
J'aimerais également que vous vous posiez la question, me recommanderiez-vous d'utiliser un cadre tel que CodeIgniter, ou de créer le mien au fur et à mesure (peut-être pour l'expérience)?
Alex Bennett
1
Eh bien, @Alex, je suis heureux d'avoir pu aider. Mais je suis également désolé, car ma plateforme est .NET et je ne suis pas très familier avec les frameworks PHP. Mais l'utilisation d'un cadre est certainement encouragée. J'utilise Entity Framework comme ORM, donc utiliser un ORM en PHP peut vraiment booster votre développement.
Saeed Neamati
D'accord, merci quand même. La seule raison pour laquelle je ne voudrais pas utiliser un framework est pour la pratique, mais je pense qu'il serait probablement plus sûr pour moi d'en utiliser un dans ce cas étant donné qu'il s'agit d'un site de production et que je ne veux pas avoir de parasites vulnérabilités pouvant survenir lorsque je crée mon propre CMS / framework.
Alex Bennett
1
@Alex Bennett, Une autre chose, il existe des CMS open source. Si vous obtenez le code source. Vous pouvez commencer par cela, puis le modifier à votre guise. Cela accélérerait vraiment la construction de la vôtre. C'est comme une approche hybride. Qui veut vraiment réinventer la roue?
MVCylon
18

Je joue l'avocat des démons ici, mais il faut le dire. Certains des problèmes les plus courants avec les développeurs de logiciels:

  • Sous estimation du temps et des efforts nécessaires pour achever un projet trivial, laissez le long d'un grand
  • Absence totale de compréhension de la réalité des affaires
  • Surestimation de ses propres compétences et productivité.
  • Sous-estimation de la complexité et des détails subtils
  • La conviction que leur problème est si unique que personne ne l'a encore résolu.

Êtes-vous sûr de ne commettre aucune de ces erreurs, car même pour 15 ans, 300 $ pourraient être gagnés en quelques semaines, et ce que vous semblez proposer pourrait prendre des mois. Pensez à ce qui se passerait si vous obteniez un emploi rémunéré et achetiez ExpressionEngine avec l'argent. Serait-il livré plus tôt, avec des fonctionnalités encore meilleures qu'un travail de bricolage?

mattnz
la source
1
Je suis assez mature pour votre moyenne de 15 ans, comme j'espère que vous pouvez le dire, et je ne pense pas avoir fait l'erreur de faire l'une des choses que vous avez énumérées. J'ai passé beaucoup de temps à rechercher des solutions possibles et je n'ai pas encore trouvé de bonne solution pour ma situation. En ce qui concerne l'argent, mon entreprise génère plus de 300 $ de revenus par mois (ce n'est pas beaucoup, mais cela paie pour les machines dédiées), donc je pourrais obtenir de l'argent, mais j'essaie de jouer avec prudence et d'investir dans des choses qui sont un must, comme le matériel et la publicité. Merci pour la réponse, je vais vraiment garder cela à l'esprit.
Alex Bennett
Je ne pense pas que vous feriez vraiment un CMS autant qu'une solution personnalisée. Si vous créez un vrai CMS, vous pourriez probablement distribuer / vendre le CMS. Je pense que vous seriez un peu au-dessus de votre tête (comme je le ferais, mais ...) pour sortir un build un CMS complet.
HelloFictionalWorld
2
@Alex, vous devez prendre en compte ce temps == argent, en particulier votre temps. Combien cela vaut-il? Si votre CMS prend plus de 30 heures à produire (@ 10 $ / heure), ExpressionEngine est un meilleur choix. De même, si ces 30 heures de travail consacrées à d'autres choses génèrent plus de valeur réelle pour votre site que 300 $, alors ExpressionEngine est un meilleur choix.
CdMnky
8

Il y a deux réponses à cela.

La première est simple: non, ne réinventez pas la roue. Il y a beaucoup d'excellents systèmes CMS et si vous apprenez à bien en utiliser un, alors s'il y a des choses dont vous avez besoin qu'il n'offre pas, vous pouvez vous concentrer davantage sur la création d'un plug-in à cette fin plutôt que de réinventer le roue.

La seconde est un peu moins évidente: oui. Si vous voulez comprendre le fonctionnement d'un CMS et les problèmes rencontrés lors de sa création, il n'y a aucun mal à en créer un. Il n'aura probablement jamais la puissance et la flexibilité de l'un des systèmes CMS existants et comme il existe environ 100000000000 systèmes de gestion de contenu PHP dans le coin, il y a très peu de chances que quelqu'un d'autre s'y intéresse, mais il ne le sera pas non plus. avoir les trucs dont vous n'avez pas besoin et cela fonctionnera probablement beaucoup plus petit et plus simple que n'importe lequel des plus gros systèmes. Cela prendra beaucoup de temps, les résultats ne seront probablement pas aussi bons et cela ne fera aucune différence pour le reste du monde, mais en termes de développement et d'apprentissage, cela pourrait être un exercice utile.

Dans tous les cas, avant de vous lancer dans la construction du vôtre, j'essaierais les systèmes traditionnels disponibles juste pour avoir une idée de leur fonctionnement, de ce qu'ils font bien et de ce que vous pensez qu'ils pourraient faire mieux. Une bonne compréhension de ceux-ci peut éclairer votre décision quant à savoir s'il y a ou non un avantage à créer le vôtre.

glénatron
la source
Merci d'avoir répondu. Juste pour clarifier cependant: si je construisais ce CMS, je n'aurais aucune intention de le publier, ce n'est pas un marché sur lequel je suis. Ce ne serait que pour moi et serait construit pour ne faire que les choses que je veux / besoin. J'ai expérimenté avec d'autres mais je n'arrive pas à en trouver un qui soit suffisamment documenté et fasse les choses dont j'ai besoin sans me forcer à changer le noyau d'une manière ou d'une autre, c'est pourquoi j'ai commencé à envisager de faire le mien. Une autre raison pour laquelle je veux créer le mien est pour la pratique, car je travaille à devenir développeur Web (ou quelque chose de similaire) après l'université. :)
Alex Bennett
3
J'écris en tant que quelqu'un qui a implémenté un très petit, très simple, très basique PHP cms il y a un moment et l'a utilisé pour pas mal de sites depuis. Il ne fait rien de plus qu'un petit fragment de ce que font les systèmes à plus grande échelle, mais il fait tout ce dont j'ai besoin pour les petits sites et comme il est basé sur un fichier plat, il fonctionne à peu près n'importe où. J'apprécie donc totalement que, parfois, vous souhaitiez vraiment créer le vôtre.
glenatron
5

Si vous n'avez jamais essayé de programmer un CMS, cela pourrait être une très bonne occasion de le faire. Vous apprendrez beaucoup et peu importe que vous ayez terminé, vous aurez une très bonne idée, par exemple:

  • Ce qui est difficile à faire et ce qui est facile
  • Comment internationaliser et localiser vos pages
  • Comment gérer les utilisateurs et les rôles
  • Comment gérer la maintenance des infrastructures de données sous-jacentes au lieu d'exiger des instructions de mise à jour SQL.
  • Comment gérer les pages en plusieurs parties.
  • Comment gérer efficacement le contenu statique.
  • Comment évoluer vers plusieurs ordinateurs et une charge élevée.
  • Comment fournir des API pour les personnalisations et les thèmes des utilisateurs.

Dans certains cas, vous pourriez même constater que vous avez appris à ne pas le faire. Cette expérience est également importante.

Personnellement, j'ai atteint un stade où j'ai appris que «combien cela peut être difficile» ne couvre que quelques pour cent du travail qui doit réellement être fait pour créer un produit de haute qualité, et si je devais choisir un CMS, je rechercherait un populaire avec une base de code accessible accessible et une bonne documentation, et une bonne architecture de plugin me permettant d'écrire simplement des plugins appropriés, puis de mettre à jour le CMS de base lorsqu'une nouvelle version sortira.


la source
Merci pour la contribution, j'ai déjà eu pas mal d'expériences. Par exemple, j'écris 30 lignes de code pour effectuer une tâche simple, puis 2 jours plus tard, j'examine le code et je trouve que je pourrais le raccourcir en 10 lignes. Ces expériences, aussi ennuyeuses soient-elles, aident certainement le processus d'apprentissage car elles ont tendance à faire «coller» les choses davantage.
Alex Bennett
@Alex, cette expérience "comment NE PAS le faire" évolue avec la taille de la base de code de votre projet. Mais, je suppose que vous devez le faire au moins une fois pour l'apprécier :)
3

Ce n'est qu'une légère réponse à votre question. J'ai supposé que vous êtes en php et que vous n'utilisez pas la méthode CMS pré-faite. Bienvenue au club! Beaucoup d'entre nous ont suivi le même chemin. Un conseil qui pourrait alléger votre charge.

J'ai commencé à construire mon propre CMS, l'implémentation MVC, le gestionnaire d'internationalisation (i18n), le gestionnaire de session, un moyen de couche d'abstraction de base de données, un moyen de gestionnaires de formulaires, etc. Et puis j'ai découvert que ce que je faisais était réellement fait avant, mais mieux par les cadres. Donc, cela signifie que vous n'avez pas à réinventer complètement la roue, mais juste là où elle correspond à vos besoins. Les cadres vous facilitent la vie, mais ils nécessitent beaucoup d'efforts pour lire et apprendre. Cela m'a pris un an pour vraiment maîtriser Symfony, et je ne le regrette pas une seconde.

Et vous avez de la chance, car il existe actuellement beaucoup plus de cadres de haute qualité qu'auparavant. Pour n'en nommer que quelques-uns:

  • Symfony : Aujourd'hui, ils ont sorti la version 2.0 stable, c'est passionnant. Il est faiblement couplé, ce qui signifie que vous pouvez utiliser l'un ou l'autre des composants ou choisir de tout utiliser en tant que package intégré. Il a une bonne documentation et une base d'utilisateurs active. Sinon, la version 1.4 désormais obsolète est également toujours très fiable et utile. Il a de nombreux plugins puissants pour vous faciliter la vie. (Liasses)
  • Zend Framework : Certains prétendent qu'il n'est pas vraiment à jour (pas toutes les nouvelles fonctionnalités de la marque 5.3), mais cela existe depuis un certain temps maintenant, et c'est essentiellement un ensemble de composants utiles (encore une fois lâchement couplés, pas un jeu tout ou rien) ). Je l'utilise comme une boîte à outils pour faire des choses comme la recherche (zend_lucene) et la génération de fichiers PDF. Mais il dispose également d'un ensemble de contrôleurs MVC couramment utilisé. Vous devriez l'examiner si vous ne l'avez pas encore fait. Très bien documenté.
  • CakePHP : Je l'ai utilisé il y a longtemps et je n'ai pas pu parcourir la documentation. Apparemment, c'est maintenant mieux et mérite probablement votre attention.

  • Yii : Je ne l' ai pas utilisé, mais il y a beaucoup de duvet récemment, ça vaut probablement votre attention.

  • CodeIgniter : Beaucoup de gens ont fait l'éloge de codeigniter pour sa courbe d'apprentissage facile et sa facilité d'utilisation. Je ne l'ai pas utilisé.

Si vous voulez essayer python, beaucoup de gens font également l'éloge de Django, et bien sûr de rubis sur rails.

Il y en a probablement plus, mais cela devrait vous être utile. Si vous ne souhaitez pas les utiliser, vous pouvez toujours apprendre beaucoup de ces cadres. Bonne chance!

Arend
la source
Merci, j'ai beaucoup d'expérience avec CodeIgniter mais je n'ai essayé aucun des autres. Je vais certainement les prendre en considération.
Alex Bennett
1
laravel.com ?? CodeIgniter est actuellement le plus utilisé, mais Lavarel le dépasse rapidement
Mawg
1
Ouaip. Ce poste a quatre ans. Laravel commençait à peine à l'époque.
Arend
1

La réponse dépend en grande partie de ce que vous essayez de réaliser.

Si vous avez l'intention de développer vos compétences, renseignez-vous sur la gestion de contenu, etc. Alors oui, développez certainement les vôtres. De même, si vous voulez apprendre un framework, utilisez-le.

Cependant, si votre objectif est le jeu que vous mentionnez et ses joueurs, la réponse est presque certainement non. Votre temps est une ressource limitée et donc coûteuse. Le temps passé à développer un CMS n'est pas du temps à développer le jeu, et c'est le jeu qui génère des revenus. Alors posez-vous la question. Est-ce que le temps passé à développer ce CMS plutôt que d'en acheter un va améliorer mon expérience de jeu des joueurs plus que le temps passé à développer le jeu? Si la réponse est oui, développez-la, sinon ne le faites pas.

De même, la décision du CMS open source sur ExpressionEngine devrait se résumer au ToC, comme le dit Saeed. Mettez simplement si Coût (Wordpress)> Coût (ExpressionEngine) puis dépensez les 300 $. Ici, le coût est Purchase_cost + (hours_to_customise * your_hourly_rate).

CdMnky
la source
1

Trouvez un CMS qui correspond à 90% de vos besoins et modifiez-le au fil du temps pour ajouter des fonctionnalités qu'il ne fournit pas.

Cela vous permettra de lancer tôt et de vous adapter à l'évolution de vos besoins et de ceux de vos utilisateurs.

Supermighty
la source
Bien que cela semble choisir le pire des deux mondes, je ne suis pas d'accord avec le downvote, donc je l'ai augmenté.
Mawg
1

Je vous encourage entièrement à créer votre propre CMS. C'est de loin le meilleur moyen de connaître les tenants et aboutissants d'un tel système en matière de personnalisation et de sécurité. Mais je dois me demander à quel point vous êtes intermédiaire à avancé avec vos compétences PHP. Ce n'est pas en fonction de votre âge, croyez-moi.

Le drapeau pour moi était "Je ne pense pas exactement que WordPress soit suffisamment puissant / évolutif pour pouvoir gérer ce que j'essaie de faire et après avoir bricolé un peu avec Drupal au cours des derniers jours, cela ne semble pas à la hauteur de mon goût et n'est pas non plus bien documenté, donc j'ai un peu de mal à le faire faire certaines tâches simples. "

La pléthore de livres et de sites sur la personnalisation de Worpress et Drupal, sans parler des sites de haut niveau qui fonctionnent sur ces derniers, prouve que vous devez savoir ce que vous faites pour obtenir des sites comme ceux-ci. Sans oublier que des budgets entiers sont réservés pour gérer ces sites.

Liens par exemple:

http://drupal.org/cases

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

Ce n'est pas pour vous décourager dans ce que vous essayez de faire, allez-y par tous les moyens. Je veux juste m'assurer que vous ne consacrez pas trop de temps (réinventer la roue) et que vous vous sentez frustré à un certain moment et dites simplement "eff it", quand vous pouvez étirer vos talents et montrer aux gens, employeurs inclus , ce que vous avez avec les outils actuellement disponibles. Dans le monde réel et dans l'économie actuelle, le temps c'est de l'argent, et les entreprises et les organisations n'ont pas le temps et / ou les budgets pour gérer continuellement la création de projets à partir de zéro.
L'information se déplace aujourd'hui à la vitesse de la lumière, c'est pourquoi les programmeurs qui peuvent séparer le bruit et créer du contenu / des applications / des systèmes utiles dans un délai d'exécution approprié sont très demandés.

A. Edwards
la source
0

Vous seul pouvez savoir si Wordpress ou Drupal peut faire ce que vous avez besoin d'un CMS, mais si vous voulez les essayer, pourquoi ne pas utiliser une machine virtuelle de Turnkey Linux , comme celle pour Wordpress , Drupal , Joomla ou n'importe laquelle les autres avec la balise de gestion de contenu .

En supposant que vous avez déjà installé VMware player ou VirtualBox , quelques minutes après le téléchargement de l'une de ces appliances, vous pouvez essayer le logiciel vous-même, avec un investissement en temps minimal.

Mark Booth
la source