tags:

views:

364

answers:

11

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 time constraints too. Choice of language is PHP, what would be the best way to implement it?

A: 

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?

Evernoob
I am open to using an open source solution, but I am pretty confused about which on is the best, and easiest one. Also, I don't want my code to be open source after I have written it, as I plan to distribute it for commercial use.
bobo
You'll need to do some research about which one will be best for your specific needs. Time to crack Google open!
Evernoob
If you are planning to distribute it and not allow for the source code to be viewed, then you can't use an open source CMS.
Joseph
Regarding the viral nature of open source and whether using an open source CMS solution will "infect" your other source code - the answer is almost assuredly NO. Hosting a CMS solution along with your own code on the same website (but in seperate applications) is not considered modification, and additionally hosting a site using open source code is not considered distribution.
Ryan Brunner
@Ryan Brunner: That will depend on the license used, because sometimes even hosted changes are considered to be modifications (see the [GNU Affero license](http://www.opensource.org/licenses/agpl-v3.html)).
wimvds
Yeah I need something where if I make any modifications they are mine and somewhat protected. I don't mind if the base code is copied.
bobo
+3  A: 

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?

duffymo
+2  A: 

Check out CMS Matrix for a comparison of various CMS's out there.

Joseph
+4  A: 

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.

Ryan Brunner
Thanks, which third party solution do you recommend? I have very little CMS experience, so I need something that will fulfill the requirements as written in my original post. I've used Google to check, but there are so many to choose from.
bobo
Unfortunately, for me "not invented here" conflicts with "third-party components will *always* bite you in the end". There's probably at least one reliable CMS out there, but I have no idea how to find it.
MusiGenesis
+2  A: 

Q: Should I reinvent my own wheel?

A: No.

flybywire
Q: Should I invent a better wheel? A: **Yes**, when appropriate.
quantumSoup
+1 for making me laugh. Although I think, it misses the point a little.
back2dos
Yeah, those first wheels were definitely not as good as the modern ones.
Jeff Davis
quantum, I'd say that's only true if your company is in the wheel making business, or wheels are a vital part of your success.
Ryan Brunner
@quantumSoup: define "better", please. Without a definition for "better", reinvention is just reinvention.
S.Lott
@Jeff I'll keep my alloy wheels in my car, you can put ones made of stone in yours.
quantumSoup
@Ryan Agreed. That's why I said "when appropriate."
quantumSoup
@S.Lott "Better" as in, I know exactly what it does, and it does fit *my* needs perfectly.
quantumSoup
@quantumSoup: Brilliant. Define "better" without defining "better". Appeal to authority instead. I know art when I see it, also, but I can't define art, either. That's why I prefer engineering.
S.Lott
@S.Lott: define "engineering". :)
MusiGenesis
@MusiGenesis: http://en.wikipedia.org/wiki/Engineering. It's not a term like "better" which could mean anything. "Better" could mean "less expensive" or "more expensive" depending on what the original posting was trying accomplish.
S.Lott
@quantumSoup Hey! I was agreeing with you! :)
Jeff Davis
+1  A: 

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.

Jeff Davis
Which one would you recommend?
bobo
The one that looks the best to me is CodeIgniter. http://codeigniter.com/Saves you time with the boring stuff and you can customize what you need to customize.
Jeff Davis
+7  A: 

"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.

Kevin
I agree with your quote, but I wouldn't recommend Drupal. Things like i18n were added to Drupal as an afterthought and it shows (in D5 and D6). It does have its advantages though, but the disadvantages outweigh the advantages for me personally (major upgrades are still problematic).
wimvds
Yes we've learned the hard way in the past and adapted to best practices with Drupal. Our bigger sites can take a day or two to upgrade, but half of that is testing custom additions/integrations to make sure they still work.
Kevin
+2  A: 

Here goes the most boring answer ever: "It depends"

What does it depend on? Well, most importantly:

  1. 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.
  2. 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

back2dos
+3  A: 

Q: Should I reinvent my own wheel?

A: Only for learning purposes.

FractalizeR
+2  A: 

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.

Tim van Elsloo
It also means your clients are stuck with you as a consultant - this is really poor form and not maintainable.
Adam Nelson
Ehm, why? If you write some good documentation any other consultant can work with your code too.
Tim van Elsloo
@Adam: I'd much rather inherit a simple, well-documented custom system than something hacked out of an off-the-shelf CMS that the original author barely understood.
MusiGenesis
+3  A: 

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.

MusiGenesis