Vendre mon CMS/MVC ou le rendre gratuit ?

Nouveau WRInaute
Bonsoir,

Avant de me prendre pour un fou ou débutant qui découvre la magie de la programmation, veuillez lire jusqu'à la fin :-).

Je suis un passionné de la programmation, depuis que j'ai connu le PHP j'en suis tombé amoureux, je l'ai découvert grâce aux CMS que j’utilisais pour mes sites, mais un beau jour j'en eu marre de tous ses CMS lourds qu'il faut régulièrement tenir à jour, corriger les failles de sécurité, etc... C'est à ce moment-là que je me suis intéressé de très près l'architecture MVC en étudiant Zend, j'ai développé ensuite mon propore CMS MVC avec une interface d'administration, la gestion de modules, etc.. Mon but était de faire un CMS totalement MVC, léger, modulable et sécurisé, rien ne passe via le client sans le filtrage, ainsi que pour les requêtes SQL...et même MongoDB. Mon CMS m'a pris 2 ans pour le développer, il dispose de nombreuses fonctionnalités comme l'url routing (optimisé SEO), un système de débogage, le listage des requêtes avec le temps d'exécution, similaire à celui de Xoops, gestion de groupe d'utilisateur, gestion de permissions pour les catégories ou utiliser fichier ".INI" pour la gestion d’accès à chaque contrôleur et action (MVC), blocs, cache (texte, html ou tableaux PHP les requêtes lourdes), les blocs aussi sont mis en cache pour optimiser les requêtes. Il dispose de son propre système ORM avec système de filtrage, compatible MySQL (PDO) et MongoDB.

Je l'ai développé pour un site communautaire comme SkyRock, il dispose d'un forum, articles, groupes, chat, système de playlist (musique), vidéos, publication de statut similaire à celui de facebook, système de rencontres avec un moteur de recherche pour les profils et un moteur de recherche pour tout le site .... Enfin bref tellement de choses, on peut s'en servir pour tout ou presque, même pour remplacer le forum de webrankinfo et son portail avec l’annuaire en prime :-D.

Vous allez sans doute vous dire, mais pourquoi il vient nous raconter tout ça ? C'est parce que c'est 2 ans de travail minutieux, ce CMS je le trouve fabuleux tant pour les débutants que les experts en PHP, jQurey et JavaScript. Et je trouve dommage ne pas le monétiser ou le rendre Open Source ou quelque chose du genre, mais tout en restant propriétaire de celui-ci.

Que me conseillez-vous pour ce CMS ? Le rendre payant ? En faire un CMS MVC Open Source comme Drupal, Joomla, etc.. ?
 
WRInaute accro
Il y en a déjà beaucoup, avec de grandes communautés, pour que les gens paient, il faut vraiment qu'il se démarque.
Quand tu vois le nombre de libs fournies dans les frameworks, les tests unitaires, etc, ...
Alors je dirais open source, hébergé sur Github (+ composer).
Tu pourrais par exemple fournir du support payant.
 
WRInaute occasionnel
Le rendre payant => il faut que le service et le support soient irréprochables, tu dois pouvoir corriger le moindre bug rapidement.
Le mettre en open source => pas contraignant pour le support mais il faut bien étudier les licences et abandonner toute idées de monétisation ultérieure.
J'ai vu plusieurs cas des scripts développés par une seule personne qui voulait garder la main mise sur le code avec une licence soit disant open source mais bidouillée de conditions supplémentaires (comme obligation de fournir toutes les modifs de code !?). Ces scripts n'ont jamais eu de communauté autour car tout le travail réalisé en plus revenait de facto au créateur. Le créateur a tenu le support à bout de bras quelques temps et puis c'est mort tout doucement.
Enfin une licence open source c'est par exemple la GPL, regarde celles des CMS dont tu parles.
Par exemple les licences créative common ne sont pas applicables à du code, là c'est de la grosse bidouille et si je vois ca pour un cms je ne l'essaye même pas ;)
Enfin dans ton CMS, tu as tout codé en partant de rien ou bien tu as récupéré des bibliothèques/framework open source, car il va falloir tenir compte de leur licence pour ton mode de distribution (licence ou payant).
 
Nouveau WRInaute
Merci pour vos réponses. D'autres avis ? N'hésitez pas ! :-)

Acerouk a dit:
Enfin dans ton CMS, tu as tout codé en partant de rien ou bien tu as récupéré des bibliothèques/framework open source, car il va falloir tenir compte de leur licence pour ton mode de distribution (licence ou payant).
Non, c'est mon propre code, en fait ce CMS ce n'est pas une combinaison de scripts ou moreaux de code par-ci, par-là, chaque ligne est de moi, et souvent bien commentée.
 
WRInaute accro
Et ta commu supporte quoi comme charge ? Car un CMS qui supporte 10 visiteurs de l'heure, mais incapable de tenir 10.000, c'est plus génant. Tu as fait des tests dans ce sens ?
 
WRInaute accro
Une fois que tu sera open source ton truc retombe dans les travers don tu a voulu sortir en travaillant sur du closed source, la réponse est donc dans la question.

A titre perso ce n'est pas mon CMS que je vend mais ce que le client veut faire avec mon CMS :wink:

Reste le problème de charge avancé par finstreet qui est très important pour imposer un code ... (a mon avis c'est d'ailleurs le plus important). Après si tu gère du cache c'est plus un problème de serveur qu'autre chose mais bon .... a prendre en compte.
 
WRInaute discret
Bonjour,

Si tu veux un exemple d'utilisation "privée", si ton CMS est particulièrement bien fait, et pratique, tu peux faire comme one&one qui a sorti une plate-forme pour créer son site à très bas coût (bien que j'aie tendance à déconseiller one&one pour tous leurs services).
Tu peux aussi sortir un service de site Internet gratuit (avec ou sans pub) pour les particuliers, et faire une gamme plus sophistiquée pour les professionnels.

En bref : tu restes propriétaires de ton CMS, et tu t'en sers pour donner un accès gratuit à des webmasters, et le monétise avec les professionnels.

Après, ce n'est qu'une idée :)
 
Nouveau WRInaute
Bonjour,

Pour la question de la charge, j'ai conçu ce CMS en partant de l'idée de faire quelque chose qui "décoiffe", si j'ai intégrer le NoSQL, ce n'est pas pour rien, j'ai même créé un objet pour le système de cache APC pour la mise en mémoire si nécessaire, mais pour l'instant j'utilise MongoDB pour le cache et pour certaines requêtes comme les MP et autres données de grandes tailles, le chat en utilisant le long polling, c'est du bonheur !

Avec le cache même sans utiliser le NoSQL, les pages se chargent en 100 à 150ms max. Pour un CMS de cette envergure je le trouve très très rapide avec le SEO en prime.

Je n'ai pas la prétention de faire un CMS révolutionnaire, mais pour moi il est mieux que tous ceux que j'ai déjà utilisé, grâce à l’architecture MVC et son ORM, on peut créer un module en cinq minutes pour quelque de basique, sinon il faut un peu plus de temps bien sûr !

Je n'ai pas encore eu l’occasion de le tester sur des sites tres grands genre avec 2000 connexions par secondes, mais j'y pensé dès le début en optimisant le code PHP et les requêtes SQL. Je pense qu'il peut tenir sans problème pour un site de grande charge, après c'est plus une question d'optimisation de MySQL, Apache ou nginx ; le serveur web.
 
WRInaute discret
Et pourquoi pas le proposer gratuitement et tu mets quelques fonctionnalités ou modules avancés qui t'ont demandé plus de temps de développement en options payantes.
 
WRInaute impliqué
Salut,
Peut-être qu'en proposant des licences gratuitement, au moins au départ, tu auras une base d'utilisateurs pour faire connaître ton systère et des retours qui te permettront de corriger les bugs éventuels, de vérifier que ton système tient la charge, etc. Dans un second temps, libre à toi de le rendre payant ou de le rentabiliser en suivant certains des conseils ci-dessus.
++
 
WRInaute accro
je relis pour la troisème fois ton post d'énoncé: je pense qu'avant d'étudier les alternatives qui s'offrent à toi, tu ferais mieux de te mettre au clair avec ce que tu souhaites (et donc tes objectifs). J'ai l'impression qu'il y a un peu de flou... me trompé-je?
 
WRInaute accro
Tu veux un avis neutre? Comment savoir ce que tu dois faire avec ton CMS et tes heures de travail sans qu'on sache ce qu'il vaut?

D'un coté, le rendre libre ne va pas te servir à grand chose, à moins d'avoir une équipe de copain pour t'épauler sur le forum des utilisateurs: ca prend du temps un support. En même temps, sans support, tu n'aura pas d'utilisateurs
D'un autre coté, le rendre payant veux dire que tu va effectivement devoir et le supporter (on en revient au cas ci-dessus) et l'améliorer régulièrement.
Il y a une autre méthode que t'a renseigné ZEB, utiliser ton développement pour créer des sites pour des clients.

Je vois beaucoup de futurs commerçants qui viennent au magasin avec de "bonnes idées". Pourtant, avant d'avoir essayé, pas sûr que celà fonctionne. Te donne un petit conseil: sur un site, propose l'essais gratuit en sous domaine ou autre SUR TON SERVEUR, avec pour chacun une administration spécifique (on choisit autant un CMS pour ses plug 'ins que pour sa communauté, sa vitesse et réponse à la charge que par ses facilités d'administration). Ca va te donner déjà un gros avantage, les utilisateurs vont te renseigner sur ce qui leur paraît génial, ce qui est standard et ce qui est ... En deuxième, ca va te permettre de voire les avis, sont-ils prêt à payer pour l'utiliser (de toute façon, il va vite être copié sur d'autres sites sans ... payer) mais n'auront pas le support.
C'est une des bases du commerce: avant de démarrer un projet, on vérifie au minimum si ca peut fonctionner :wink:

studio-creations a dit:
Et pourquoi pas le proposer gratuitement et tu mets quelques fonctionnalités ou modules avancés qui t'ont demandé plus de temps de développement en options payantes.
Sun a essayé cette méthode lors du rachat d'Open Office pour finalement suppprimé la version payante. Pas sûr que ce soit une bonne idée surtout que s'il est gratuit et fonctionne nickel, d'autres développeurs vont également développer des possibilités supplémentaires.
 
Nouveau WRInaute
JanoLapin a dit:
je relis pour la troisème fois ton post d'énoncé: je pense qu'avant d'étudier les alternatives qui s'offrent à toi, tu ferais mieux de te mettre au clair avec ce que tu souhaites (et donc tes objectifs). J'ai l'impression qu'il y a un peu de flou... me trompé-je?

Je me suis peut-être mal exprimer, mais je ne vois rien de flou dans ce que je veux faire, j'ai un CMS que je trouve bien, et je cherche la meilleure façon de lui donner une seconde vie de façon professionnelle.

Après avoir lu tous vos messages, effectivement si j'en fais un CMS payant ça présente des contraintes. Pour les bugs, il y a aucun souci puisque je suis son créateur, je connais la moindre ligne de celui-ci et je maitrise parfaitement le PHP, mais seul je réalise que c'est difficile de monter un projet de cette envergure. En revanche la possibilité de m'en servir pour créer des sites web pour des clients me parait tout à fait réalisable, je pourrais satisfaire beaucoup de demandes avec ce CMS. Je pense que je vais étudier cette possibilité de près.
 
WRInaute accro
On peut voir un extrait du code ?

J'ai fait un CMS avec CakePHP, je l'ai partagé sur github, je n'ai pas peur car il n'y a pas de doc, ni la DB (sans moi pr donner les pistes/indications, il faut vraiment être balèze).
http://goo.gl/OB7nc
 
Nouveau WRInaute
spout a dit:
On peut voir un extrait du code ?

J'ai fait un CMS avec CakePHP, je l'ai partagé sur github, je n'ai pas peur car il n'y a pas de doc, ni la DB (sans moi pr donner les pistes/indications, il faut vraiment être balèze).
http://goo.gl/OB7nc

Désolé, je ne peux pas donner un gros morceau de code, mais voici un petit extrait des blocks :

Code:
namespace XXXXX\App\Member\Block;

use XXXXX\Core\Controller\Blocks,
      XXXX\Core\Criteria,
      XXXX\Core\Utility,
      XXXX\Core\Loader,
      XXXX\App\Member\Includes\Lists,
      XXXX\Core\ModelHandler;

defined('XXXXXXXXXXXXXX_CONFIG_INCLUDED') or die('Restricted access');

Loader::load('lists.app.member.includes');

class Controller extends Blocks
{

    public function run()
    {
    }
    public function userShowAction($options = null)
    {
        if (!$this->isUser()) {
            return false;
        }
        $this->view->userUid = $this->getUser()->getVar('uid');
        $this->view->userName = $this->getUser()->getVar('name');
        return true;
    }
}
 
Nouveau WRInaute
spout a dit:
Ok merci, c'est peu pour se faire une idée :wink:
Oui je sais, mais peut-être un jour il sera open source qui sait :-).

Sinon pour se faire une idée de la puissance de cet outil, pour ajouter par exemple un paramètre à une application et pouvoir le modifier depuis l'interface, il suffit de rajouter ceci dans le fichier de configuration de l'application (module) :

config.i15.name = resizedAvatarMaxHeight
config.i15.title = AI_MBR_CONF_15
config.i15.description = AI_MBR_CONF_15_DESC
config.i15.formtype = textbox
config.i15.valuetype = text
config.i15.default = 400

Puis dans le php partout comme ceci pour la récupérer : $this->appConfig('resizedAvatarMaxHeight');

Chaque page peut disposer des commentaires et "likes" (comme facebook) automatiquement qu'on peut désactiver pour chaque article, page .... automatiquement.... il fait mieux que certains CMS bien connu :-D.
 
Nouveau WRInaute
Allez un petit extrait pour la partie seo, tout est filtré et limité automatiquement pour les balises titre et description... :
Code:
        $this->view->setPageTitle($article->getVar('title'));
        $this->view->setMetaKeywords($article->getVar('bodytext'));
        $this->view->setMetaDescription($article->getVar('bodytext'));

Vous voulez l'UrlCanonical ? Pas de souci ! Exemple :
Code:
$this->view->urlCanonical = $this->urlRewrite->url(array('app' => $this->request->getAppName(), 'controller' => 'article', 'id' => $article->getVar('id'), 'title' => $article->getVar('title')));

La partie ORM pour mettre à jour le nombre lecture d'un article par exemple :

Code:
// Mettre à jour le nombre de lectures
        $article->setVar('views', $article->getVar('views') + 1);
        $articlesModel->insert($article);
 
Nouveau WRInaute
spout a dit:
Ça à l'air propre et bien structuré. Ça supporte le reverse routing ? C'est multilangues ?
Pour le routage on peut mettre ce qu'on veut, il faut juste mettre ceci dans le fichier de routage :

Code:
$Routes[] = array(
    'tests/:title:r:id',
    array(
        'app' => 'tests',
        'controller' => 'test',
        'action' => 'test'
    )
);
On peut y accéder via ceci : /tests/ ou /tests/index.html

"Tests" c'est moche ? Ok ! on va modifier ça :
Code:
$Routes[] = array(
    'ceci-est-beau/:title:r:id',
    array(
        'app' => 'tests',
        'controller' => 'test',
        'action' => 'test'
    )
);
On peut y accéder via ceci : /ceci-est-beau/ ou /ceci-est-beaus/index.html

Oui c'est multilangues, pour le moment j'ai juste les fichiers langue en français, mais il suffira de les traduire en anglais, vu leur structures on peut utiliser même n’importe quel logiciel pour la traduction pour flemmards :lol: .

Exemple de code en utilisant la langue (détectée automatiquement) :
Code:
        if (!$this->request->isPost()) {
            $this->view->addError(sprintf($this->lang('FAILURE_CODE'), 'SOP 01-P0001'));
            return $this->forward('edituser');
        }
 
Discussions similaires
Haut