Should I implement my own CMS?
I need to create a custom CMS based system. In it, I will need too do the following:
- Each individual will have their own user name and password, once logged in they are presented with their own personal page.
- Here, each user will have eight pictures displayed, which is selected by an admin
- The data is sensitive, so security is a big issue.
- It will have a newsfeed too, which will retrieve news from the admin portal
Now, I have never written a CMS system. I have t开发者_JAVA技巧ime constraints too. Choice of language is PHP, what would be the best way to implement it?
"In nearly every case I've seen where a company tries to roll their own, the "simple" solution is slowly devoured by special requests and edge cases, until it's just as complex as those overkill solutions - but built upon a base that was never intended for complexity."
QFT
We used to maintain our own CMS which started out simple and great, and then the requests came in from clients and it was nearly impossible to keep the code uniform with different people implementing it in projects. Lack of code versioning was to blame but also clients would want every little thing changed until the package was unique to each site. It became impossible and costly to keep up.
We switched to Drupal and lifes been much easier.
Q: Should I reinvent my own wheel?
A: Only for learning purposes.
CMS systems, along with bug trackers, should probably be considered the canonical examples of why Not Invented Here syndrome can be a huge pitfall.
Both of them share the common property of seeming like incredibly simple systems to implement from the outset, with 3rd party options that seem overly complicated and overkill for the "simple" CMS you obviously need.
In nearly every case I've seen where a company tries to roll their own, the "simple" solution is slowly devoured by special requests and edge cases, until it's just as complex as those overkill solutions - but built upon a base that was never intended for complexity.
Just find a good third party solution. You from 3 years in the future will thank you for it.
It's funny that we use the expression "don't reinvent the wheel" for situations like this. World history from about 2000 BC to 1500 BC was dominated by charioteers, who had quite literally reinvented the wheel. Prior to this time wagon wheels were solid slabs of wood, which made for a wagon that was not fast enough to outrun the angry mobs of armed men that you were trying to shoot arrows at. The invention of the (much lighter) spoked wheel enabled them to drive around all day shooting arrows into people.
Most CMS systems I've encountered are the programming equivalent of big, solid wheels (I'd say square wheels that are half-eaten by termites, but that's not fair in all cases). Maybe this guy has what it takes to invent a better wheel.
Define "best".
If "best" means "up and running the fastest", I'd say your only choice is to buy one or find a good open source CMS. This is doubly true after reading your admission of "little experience".
I'd recommend that you Google for open source CMS and prototype the top three choices.
Writing your own should be your last option. Why delay release and take on that maintenance burden forever?
Q: Should I reinvent my own wheel?
A: No.
For my clients I almost always create my own CMS. Few reasons:
- They're faster, because I only implement the classes I need.
- They're are easier to code, because my classes are in the same way as the client's company. For example a class Musical got an array with Castmembers as value for the property 'cast'.
- You know everything about your CMS, so when there's a bug you know how to fix it.
Yeah, it takes some more time, but it gives you more opportunities and flexibility.
Check out CMS Matrix for a comparison of various CMS's out there.
Here goes the most boring answer ever: "It depends"
What does it depend on? Well, most importantly:
- How big is the difference between what you need and what others already can do? If an open source solution has 98% of your features, why would you want to redo all that from scratch, instead of just getting acquainted with it and adding the few things you need.
- How much time do you want to spend with maintenance? If you choose to roll your own, you and only you are responsible for ALL maintenance. If you use an open source CMS and if you distribute your modifications as well, there are chances other people will fix existent bugs, even if they are yours. Otherwise, it is your responsibility to test, fix, extend and optimize the CMS, and you're on your own. If your plan is to actually create your own CMS, that you want to use on multiple occasions, then ok. If you're only tasked to answer one customer's need, forget creating your own CMS.
greetz
back2dos
Time constraints means you probably don't have time to do it right and would be better off grabbing a CMS from someone else. Just configure it to suit your needs.
Writing your own is when you need a very specific custom solution for a very picky customer. Otherwise, grabbing another CMS will save you thousands of programming man-hours.
Do you absolutely have to write your own? There are several great (and free) PHP CMS open source solutions available. Why aren't these suitable for your needs?
Have you considered skinning a word press blog?
What specifically about your problem makes the open source available solutions unsuitable for you?
精彩评论