Devo criar meu próprio CMS ou confiar em um pré-construído? [fechadas]

23

Relacionado : Como programador iniciante, devo favorecer a criação de minhas próprias bibliotecas do que usar bibliotecas de terceiros?

Como desenvolvedor web PHP de nível intermediário a avançado e mais jovem (15 anos), devo criar um CMS totalmente novo para o meu site ou confiar em software pré-fabricado como WordPress ou Drupal?

Eu não acho exatamente que o WordPress seja poderoso / escalável o suficiente para ser capaz de lidar com o que estou tentando fazer e, depois de mexer bastante com o Drupal nos últimos dias, ele simplesmente não parece a par do meu gosto. e também não está bem documentado, por isso estou com um pouco de dificuldade para fazer certas tarefas simples. Eu adoraria usar algo como o ExpressionEngine, mas não tenho dinheiro para pagar uma licença comercial que atualmente custa cerca de US $ 300, então é impossível.

Inicialmente, comecei a codificar meu site como um sistema temporário, para que meus usuários pudessem comprar atualizações e outras coisas, como a moeda do jogo, até que eu pudesse criar um novo site, mas depois que comecei, percebi rapidamente que precisava torná-lo escalável , então a partir de então eu codifiquei com o pensamento de torná-lo um site com pleno funcionamento em mente. Demorou apenas alguns dias, mas todos os conceitos básicos estão lá (registro, login, modificações de conta etc.) e acredito que seria um ótimo começo para um CMS privado.

A última coisa que quero acrescentar é que, se eu construísse meu próprio CMS, devo usar uma estrutura PHP como o CodeIgniter, com a qual tenho alguma experiência?

Talvez outros desenvolvedores possam me informar sobre o que eu posso estar me metendo.

Alex Bennett
fonte
11
Não subestime a quantidade de horas necessárias para tornar os CMS existentes o que são. Você pode ficar seriamente surpreso ... #

Respostas:

23

Depende totalmente da sua situação. Grandes sites foram criados com CMSs por aí. Acho melhor entendermos primeiro dois conceitos, CO e TCO.

CO (custo de propriedade)

Quando você compra algo, o valor pago é CO. No caso do WordPress, não é nada, pois o WordPress (ou muitos outros softwares CMS) é gratuito.

TCO (custo total de propriedade)

Imagine que você compra um PC por 10000 dólares. Então o que? Você deve dedicar tempo à instalação do software (o tempo é um recurso valioso; portanto, você ainda gasta dinheiro com esse PC); pode comprar uma webcam, outro gravador de DVD e alguns cabos extras. Então você precisa aprender como usar o software instalado. Em outras palavras, o custo total de propriedade de um PC não é de US $ 10.000. É muito mais que isso.

No caso do software CMS, o CO deles é realmente nada a taxas muito baixas. Mas muitas experiências mostram que seu custo total de propriedade não é nada baixo. As grandes empresas gastam quase milhares de dólares para obter um bom site no Joomla, ou WordPress.

Outro fator é o nível de personalização . Às vezes, você deseja usar um software como está sem nenhuma alteração. Nesse caso, WordPress, Joomla, Drupal ou qualquer outro CMS pode ser um candidato muito bom, e você não deve escrever seu próprio CMS. Mas há momentos em que você precisa de um alto nível de personalização. Nesse caso, você fica realmente frustrado ao personalizar um CMS pronto para usar para atender às suas necessidades.

Na verdade, eu queria usar um software CMS pronto, mas depois de passar um tempo valioso aprendendo diferentes CMSs e encontrando pontos fracos de cada um, acabei criando meu próprio CMS. O Thought Results é o meu site pessoal e é construído através deste CMS. Vou publicá-lo em breve, para que outros também possam usá-lo.

Ainda outro fator é a extensibilidade . Acredite, você envelhece para levar um CMS de um estado estático para um estado extensível. Modelos, módulos, plugins, provedores, banco de dados e armazenamento, mecanismos de roteamento e quase qualquer parte de um Good CMS devem ser extensíveis.

Por fim, minha sugestão pessoal é começar a construir um CMS, para que pelo menos você aprenda alguns dos conceitos mais fundamentais por trás dele. Mas também tente usar os existentes. Boa sorte.

Saeed Neamati
fonte
Uau, excelente resposta. Algumas dessas coisas que eu nunca considerei, mas que são realmente legais de saber agora. Como você estava dizendo com a personalização, eu realmente preciso muito disso, e foi por isso que eu me virei para o Drupal porque ouvi dizer que deveria ser ótimo com coisas assim. No entanto, no meu caso, preciso ter muita interação entre vários servidores, PayPal, registro extensivamente personalizado e outras coisas que realmente não são facilmente tratadas por algo como o Drupal. Muito obrigado pela sua resposta, eu realmente aprecio isso. :)
Alex Bennett
Também gostaria que você perguntasse, você recomendaria que eu usasse uma estrutura como o CodeIgniter ou construísse a minha como eu vou (talvez pela experiência)?
Alex Bennett
1
Bem, @Alex, estou feliz por poder ajudar. Mas também sinto muito, pois minha plataforma é .NET e não estou muito familiarizada com estruturas PHP. Mas usar uma estrutura é definitivamente encorajador. Eu uso o Entity Framework como um ORM, portanto, usar um ORM no PHP pode realmente impulsionar seu desenvolvimento.
Saeed Neamati
Tudo bem, obrigado de qualquer maneira. A única razão pela qual eu não gostaria de usar uma estrutura é para a prática, mas acredito que provavelmente seria mais seguro usar uma nesse caso, porque é um site de produção e não quero ter nenhum desvio vulnerabilidades que possam surgir comigo criando meu próprio CMS / framework.
Alex Bennett
1
@ Alex Bennett, Outra coisa, existem CMSes de código aberto. Se você receber o código fonte. Você pode começar com isso e modificá-lo ao seu gosto. Isso realmente aceleraria a construção do seu próprio. É como uma abordagem híbrida. Quem realmente quer reinventar a roda?
MVCylon
18

Estou bancando o advogado do diabo aqui, no entanto, isso precisa ser dito. Alguns dos problemas mais comuns com desenvolvedores de software:

  • Sob estimativa de tempo e esforço envolvidos na conclusão de um projeto trivial, deixe-se levar por um grande
  • Completa falta de compreensão da realidade comercial
  • Superestimação de habilidades e produtividade próprias.
  • Subestimação da complexidade e detalhes sutis
  • A crença de que o problema deles é tão único que ninguém ainda o resolveu.

Tem certeza de que não está cometendo nenhum desses erros, porque mesmo para 15 a 0, US $ 300 podem ser ganhos em algumas semanas, e o que você parece estar propondo pode levar meses. Pense no que aconteceria se você conseguisse um emprego remunerado e comprasse o ExpressionEngine com o dinheiro. Seria entregue mais cedo, com recursos ainda melhores do que um trabalho de bricolage?

mattnz
fonte
1
Sou bem maduro para quem tem 15 anos, como espero que saiba, e não acredito que cometi o erro de fazer qualquer uma das coisas que você listou. Passei muito tempo pesquisando possíveis soluções e ainda não encontrei uma boa para minha situação. Quanto ao dinheiro, minha empresa ganha mais de US $ 300 em receita por mês (não é muito, mas paga pelas máquinas dedicadas) para que eu pudesse receber o dinheiro, mas estou tentando jogar de forma conservadora e investir em coisas que são uma obrigação, como hardware e publicidade. Obrigado pela resposta, porém, vou realmente ter isso em mente.
Alex Bennett
Eu não acho que você realmente criaria um CMS, tanto quanto uma solução personalizada. Se você criar um CMS verdadeiro, provavelmente poderá distribuir / vender o CMS. Eu acho que você ficaria um pouco irritado (como eu, mas ...) para criar um CMS completo.
HelloFictionalWorld
2
@ Alex, você precisa considerar esse tempo == dinheiro, especificamente o seu tempo. Quanto vale isso? Se o seu CMS leva mais de 30 horas para produzir (a US $ 10 / hora), o ExpressionEngine é a melhor opção. Da mesma forma, se essas 30 horas de trabalho gastas em outras coisas geram mais valor real para o seu site do que US $ 300, o ExpressionEngine é uma escolha melhor.
CdMnky
8

Existem duas respostas para isso.

Um é simples: não, não reinvente a roda. Existem muitos sistemas CMS excelentes e, se você aprender a usar um bem, se precisar de algo que ele não ofereça, concentre-se mais na criação de um plug-in para esse fim, em vez de reinventar o roda.

O segundo é um pouco menos óbvio: sim. Se você deseja entender como um CMS funciona e os problemas encontrados na criação de um, não há mal algum em criar o seu. Provavelmente nunca terá o poder e a flexibilidade de um dos sistemas CMS existentes e, como existem aproximadamente 100000000000 sistemas de gerenciamento de conteúdo PHP em todo o lugar, há muito pouca chance de alguém se interessar por ele, mas também não terá tem o material que você não precisa e provavelmente funcionará muito menor e mais simples do que qualquer um dos sistemas maiores. Levará muito tempo, é improvável que os resultados sejam tão bons e não fará nenhuma diferença para o resto do mundo, mas em termos de desenvolvimento e aprendizado, pode ser um exercício útil.

De qualquer forma, antes de você começar a construir seus próprios, eu tentaria os sistemas principais disponíveis apenas para ter uma idéia de como eles funcionam, o que eles fazem bem e o que você acha que eles poderiam fazer melhor. O bom entendimento dessas informações pode informar sua decisão sobre se existe ou não algum benefício em criar sua própria.

glenatron
fonte
Obrigado pela resposta. Apenas para esclarecer: se eu construísse este CMS, não teria nenhuma intenção de divulgá-lo, esse não é o mercado em que estou. Seria apenas para mim e seria construído para fazer apenas as coisas que eu quero / preciso. No entanto, já experimentei outros, mas não consigo encontrar um que esteja bem documentado e faça as coisas de que preciso sem me obrigar a mudar o núcleo de alguma maneira, por isso comecei a pensar em fazer o meu próprio. Outro motivo pelo qual eu quero construir é o da prática, pois estou trabalhando para me tornar um desenvolvedor da Web (ou algo semelhante) depois da faculdade. :)
Alex Bennett
3
Eu escrevo como alguém que implementou um cms PHP muito pequeno, muito simples e muito básico há um tempo atrás e o utilizou em vários sites desde então. Ele não faz mais do que um pequeno fragmento do que os sistemas de grande escala fazem, mas faz tudo o que preciso para sites menores e, como é baseado em arquivos simples, é executado praticamente em qualquer lugar. Então, eu aprecio muito que às vezes você realmente queira apenas construir o seu.
glenatron
5

Se você nunca tentou programar um CMS, essa pode ser uma oportunidade muito boa para fazê-lo. Você aprenderá bastante e, independentemente de terminá-lo, terá uma idéia muito boa de, por exemplo:

  • O que é difícil de fazer e o que é fácil
  • Como internacionalizar e localizar suas páginas
  • Como lidar com usuários e funções
  • Como lidar com a manutenção de estruturas de dados subjacentes em vez de exigir instruções de atualização SQL.
  • Como lidar com páginas com várias partes.
  • Como lidar com conteúdo estático com eficiência.
  • Como escalar para vários computadores e alta carga.
  • Como fornecer APIs para personalizações e temas do usuário.

Algumas delas você pode até achar que aprendeu a não fazê-lo. Essa experiência também é importante.

Pessoalmente, cheguei a um estágio em que aprendi que o "quão difícil pode ser" cobre apenas alguns por cento do trabalho que realmente precisa ser feito para criar um produto de alta qualidade e, se eu escolher um CMS, procuraria um popular com uma base de código acessível acessível e boa documentação, e uma boa arquitetura de plugins, permitindo-me escrever plugins adequados e, em seguida, atualizar o CMS base quando surgir uma nova versão.


fonte
Obrigado pela contribuição, eu já tive algumas experiências sobre como não fazer isso. Por exemplo, escrevo 30 linhas de código para executar uma tarefa simples e, em seguida, 2 dias depois, reviso o código e descobri que poderia reduzi-lo para 10 linhas. Essas experiências, por mais irritantes que sejam, definitivamente ajudam o processo de aprendizado, pois tendem a fazer as coisas "ficarem" mais.
Alex Bennett
@ Alex, essa experiência de "como NÃO fazê-lo" é dimensionada com o tamanho da base de código do seu projeto. Mas, eu acho que você precisa fazê-lo pelo menos uma vez para apreciá-lo :)
3

Esta é apenas uma resposta à sua pergunta. Eu assumi que você está no php e não está seguindo o caminho pré-fabricado do CMS. Bem-vindo ao clube! Muitos de nós seguiram o mesmo caminho. Alguns conselhos que podem facilitar sua carga.

Comecei a criar meu próprio CMS, implementação MVC, manipulador de internacionalização (i18n), manipulador de sessões, algum tipo de camada de abstração de banco de dados, algum tipo de manipulador de formulários, etc. E então descobri que o que estava fazendo estava realmente feito antes, mas de uma maneira melhor por estruturas. Portanto, isso significa que você não precisa reinventar a roda completamente, mas apenas onde ela se adapta às suas necessidades. As estruturas facilitam sua vida, mas exigem muito esforço para serem lidas e aprendidas. Levei um ano para realmente dominar o Symfony, e não me arrependo nem por um segundo.

E você está com sorte, porque agora existem muito mais estruturas de alta qualidade do que antes. Para nomear alguns :

  • Symfony : Hoje eles lançaram a versão 2.0 estável, é uma coisa emocionante. É pouco acoplado, o que significa que você pode usar qualquer um dos componentes ou optar por usar tudo como um pacote integrado. Possui boa documentação e uma base de usuários ativa. Caso contrário, a agora desatualizada versão 1.4 também é ainda muito confiável e útil. Possui muitos plugins poderosos para facilitar sua vida. (Pacotes)
  • Zend Framework : Alguns afirmam que não está realmente atualizado (nem toda a marca apresenta novos recursos da versão 5.3), mas já existe há um tempo, e é basicamente um conjunto de componentes úteis (novamente fracamente acoplados, não um jogo de tudo ou nada) ) Eu o uso como um kit de ferramentas para fazer coisas como pesquisar (zend_lucene) e gerar pdfs. Mas também possui um conjunto de controladores MVC comumente usado. Você deve investigar se não o fez. Muito bem documentado.
  • CakePHP : Usou-o há muito tempo e não pôde passar pela documentação. Aparentemente, isso agora é melhor e provavelmente vale a pena considerar.

  • Yii : Ainda não o usei, mas há muita confusão ultimamente, provavelmente vale a sua atenção.

  • CodeIgniter : Ouvimos muitas pessoas elogiarem o codeigniter por sua curva de aprendizado fácil e facilidade de uso. Não usei.

Se você quiser experimentar o python, muitas pessoas também elogiam o Django e, é claro, ruby ​​on trails.

Provavelmente há mais, mas isso deve ser útil para você. Se você não quiser usá-los, ainda poderá aprender muito com essas estruturas. Boa sorte!

Arend
fonte
Obrigado, tenho muita experiência com o CodeIgniter, mas não experimentei nenhum dos outros. Definitivamente vou levá-los em consideração.
Alex Bennett
1
laravel.com ?? CodeIgniter é atualmente o mais amplamente utilizado, mas Lavarel está rapidamente superando-lo
MAWG
1
Sim. Este post tem quatro anos. O Laravel estava começando naquele tempo.
Arend
1

A resposta depende muito do que você está tentando alcançar.

Se você pretende desenvolver suas habilidades, aprenda sobre gerenciamento de conteúdo, etc. Então sim, por todos os meios, desenvolva suas próprias. Da mesma forma, se você quiser aprender uma estrutura, use-a.

No entanto, se o seu foco é o jogo que você mencionou e seus jogadores, a resposta é quase certamente não. Seu tempo é um recurso finito e, portanto, caro. O tempo gasto no desenvolvimento de um CMS não é o tempo gasto no desenvolvimento do jogo, e é o jogo que gera receita. Então faça a si mesmo a pergunta. O tempo gasto desenvolvendo esse CMS, em vez de adquirir um, melhorará a experiência de jogo dos meus jogadores mais do que o tempo gasto desenvolvendo o jogo? Se a resposta for sim, desenvolva-a, caso contrário não.

Da mesma forma, a decisão do CMS de código aberto sobre o ExpressionEngine deve diminuir o ToC, como diz Saeed. Basta colocar se Custo (Wordpress)> Custo (ExpressionEngine) e gastar US $ 300. Aqui, o custo é o custo de compra + (horas_para_personalizar * sua_de_horas_de_horas).

CdMnky
fonte
1

Encontre um CMS que atenda a 90% de suas necessidades e modifique-o com o tempo para adicionar funcionalidades que ele não fornece.

Isso permitirá que você inicie mais cedo e se adapte conforme as necessidades de você e do usuário mudam.

Super-poderoso
fonte
Embora isso pareça estar escolhendo o pior dos dois mundos, eu não concordo com o voto negativo, então eu o levantei.
MAWG
1

Convido você a criar seu próprio CMS. É de longe a melhor maneira de conhecer os meandros de um sistema desse tipo no que diz respeito à personalização e segurança. Mas tenho que questionar o quanto você é intermediário ou avançado com suas habilidades em PHP. Isso não diz respeito à sua idade, acredite.

A bandeira para mim foi "Eu não acho exatamente que o WordPress seja poderoso / escalável o suficiente para ser capaz de lidar com o que estou tentando fazer e, depois de mexer bastante com o Drupal nos últimos dias, simplesmente não parece parecido com o meu gosto e também não está bem documentado, por isso estou tendo um pouco de dificuldade para fazer certas tarefas simples. "

A infinidade de livros e sites sobre a personalização do Worpress e Drupal, sem mencionar os sites de alto perfil que são executados nesses sites, prova que você precisa saber o que está fazendo para obter sites como esses. Sem mencionar, orçamentos inteiros são reservados para a execução desses sites.

Links por exemplo:

http://drupal.org/cases

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

Isso não é para desencorajá-lo no que você está tentando fazer, por todos os meios. Eu só quero ter certeza de que você não gaste muito tempo (reinventando a roda) e fique frustrado em um determinado momento e apenas diga "ef it", quando você pode expandir seus talentos e mostrar às pessoas, incluindo os empregadores , o que você tem com as ferramentas disponíveis no momento. No mundo real e na economia atual, tempo é dinheiro, e as empresas e organizações não têm tempo e / ou orçamento para lidar continuamente com a criação de projetos a partir do zero.
Atualmente, as informações se movem na velocidade da luz, e é por isso que os programadores que podem separar o ruído e criar conteúdo / aplicativos / sistemas propositais em tempo de resposta adequado estão em alta demanda.

A. Edwards
fonte
0

Somente você pode responder se o Wordpress ou o Drupal podem fazer o que você precisa que um CMS faça, mas se você quiser experimentá-los, por que não usar uma máquina virtual do Turnkey Linux , como a do Wordpress , Drupal , Joomla ou qualquer um dos os outros com a tag Gerenciamento de conteúdo .

Supondo que você já tenha o VMware player ou o VirtualBox instalado, alguns minutos após o download de qualquer um desses dispositivos, você poderá experimentar o software por conta própria, com um investimento de tempo mínimo.

Mark Booth
fonte