Help me pick a framework!

Ye' old general discussion board. Basically, for everything that isn't covered elsewhere. Come here to shoot the breeze, shoot your mouth off, or whatever suits your fancy.
This forum is not for asking programming related questions.

Moderator: General Moderators

User avatar
Ambush Commander
DevNet Master
Posts: 3698
Joined: Mon Oct 25, 2004 9:29 pm
Location: New Jersey, US

Help me pick a framework!

Post by Ambush Commander »

Obviously, there's no one-size-fits all. Therefore, I'm going to ask you guys for some recommendations based on the nature of the project I have been enlisted to do. Learning a framework is a very time-consuming process so I'd rather not pick the wrong framework and have it fighting with me the entire way. Know an app that fills these needs? Even better!

The application will be something like this:

Workflow Software for a School Newspaper

Background:

The essential timetable for producing a newspaper is thus: editors for each section of the newspaper create lists of articles that they would like to have in the next issue. The Editors-in-Chief approve the list, and then they then notify their writers through email the topics. The writers write the articles and email them back, and by a certain time all needed articles for the newspaper are done.

The editors then go through the first iteration of revising and editing the articles. After they've finished, they get submitted to the editors in chief for superreview. With that done, the content can now be laid out on the spreads. Final superreview, and then the spreads get sent for publishing.

There are a few dedicated artists for illustrating stories, stock photos are also occasionally used. Advertisements also must be managed.

The Problem:

Without a centralized repository for documents, the drafts, spreads and images are notoriously fragmented throughout many places such as email account and library computers. Ever gone home from a layout to do a few final touchups and realize that the advertisement was left on the desktop of a library computer? Overzealous staff accidently delete your files? Need to get that photo that's on that other person's email account? Sorry mates, you're out of luck.

Furthermore, having the documents scattered all over the place makes it a lot more difficult to publish a web-version. Doing this sort of thing becomes an exercise of copy and paste, a tedious process that isn't very appealing.

The Solution:

In the past, we've used FTP to some extent for thigns that absolutely must be accessible everywhere, for example, the final layouts. However, we've found that FTP is not the most intuitive interface, and something easier to use would probably nicer for people.

The solution, then, is to create a web application that manages the workflow of the newspaper. The amended workflow would then go like this:

1. At the start of the year, the application is fed the new set of contact information (especially emails) for all staff members, as well as the departments they are assigned to. Accounts are given to all staff.
2. At the beginning of a newspaper cycle, the editor-in-chief sets deadlines for the articles on the web interface and all editors automatically get notified (most actions will result in automatic notification)
3. When editors have article lists, they post them on to the web-interface
4. The editor-in-chief reviews the lists and approves/disapproves items
5. Editors then can click a "send topics" button which notifies all writers under their jurisdiction which topics are available
6. Writers log on and accept topics: as they are accepted, they become inaccessible to other writers (first-come-first-serve). They are notified of article deadlines.
7. When writers have finished their articles, they copy paste the text into a rich text editor (which preserves formatting) and saves them on to the website.
8. Editors then are able to access initial copies and perform the first revisions. They make the changes to the draft and save. Using version history, we now have the original writer's version, and the amended editor's version. A "difference" feature will be enabled allowing anyone with proper priviledges to see exactly what was changed.
9. After initial edits, the editors-in-chief perform a final review, making minor corrections as necessary
10. The version is finalized, and accessed by editors during layout to be placed on spreads. We can optionally mandate that any formatting edits be merged back into the central repository
11. With one click, all approved articles can automatically be published on to an online Hawkeye website, perhaps at the same time or before the publishing of the hard-copy newspaper. There is also the possibility for out-of-cycle stories that get published only on the webiste.

So... any comments? I'd also like estimates on how big the application would have to be to fit these needs.
User avatar
gkwhitworth
Forum Commoner
Posts: 85
Joined: Tue Sep 05, 2006 8:28 pm
Location: Wasilla, Alaska

Post by gkwhitworth »

All I have to say is, wow, and organization.

--
Greg
alvinphp
Forum Contributor
Posts: 380
Joined: Wed Sep 21, 2005 11:47 am

Post by alvinphp »

An easier way might be to just use MS SharePoint. A great way to share all types of files and have a lot of entitlement control for adding/editing/deleting.
User avatar
Christopher
Site Administrator
Posts: 13596
Joined: Wed Aug 25, 2004 7:54 pm
Location: New York, NY, US

Post by Christopher »

I don't know if the framework choice would matter much for an app like that. It seems like a fairly simple article management app with a couple of user types. Since it is not doing publication management and works on a first-come-first-serve basis it should not be too big. But it can easily balloon if you start assigning things and managing the larger process.
(#10850)
User avatar
Ambush Commander
DevNet Master
Posts: 3698
Joined: Mon Oct 25, 2004 9:29 pm
Location: New Jersey, US

Post by Ambush Commander »

All I have to say is, wow, and organization.
Hmm... not sure what you mean. Am I being overly ambitious?
MS SharePoint
Unfree, not an option. We've got a tight budget.
I don't know if the framework choice would matter much for an app like that. It seems like a fairly simple article management app with a couple of user types. Since it is not doing publication management and works on a first-come-first-serve basis it should not be too big. But it can easily balloon if you start assigning things and managing the larger process.
That seems like a fairly accurate analysis. The current workflow idea leaves little room for changing the process, which could cause problems in the future. It is doing some publication in terms of web publication.

Hmm... which parts of the process should be abstracted?
User avatar
Christopher
Site Administrator
Posts: 13596
Joined: Wed Aug 25, 2004 7:54 pm
Location: New York, NY, US

Post by Christopher »

Ambush Commander wrote:Hmm... which parts of the process should be abstracted?
It seems like there are two management spheres -- article management and publication management. I would tackle article management first because that seems the most straightforward. Try to get it as flexible possible.
(#10850)
User avatar
Ambush Commander
DevNet Master
Posts: 3698
Joined: Mon Oct 25, 2004 9:29 pm
Location: New Jersey, US

Post by Ambush Commander »

Well, an article is an article. Probably with an attached history. But that's pretty much all there is to it. That also means that the workflow logic does not belong in the article... hmm...

So, let's get back on topic. Anyone used any frameworks, and what were your impressions of them? (keep in mind my style of coding, if you even know what that is :-P (hint, I'm somewhat of a perfectionist))
User avatar
Christopher
Site Administrator
Posts: 13596
Joined: Wed Aug 25, 2004 7:54 pm
Location: New York, NY, US

Post by Christopher »

Ambush Commander wrote:So, let's get back on topic. Anyone used any frameworks, and what were your impressions of them?
I have some rough opinions. Symphony is just too much structure for me. It's design is pretty good but I tire of having to build everything. It just does not hit any mark I am aiming at. Cake is nice if you want to do what it does well which are smallsh "social" sites. I find the code ugly and trying to extend it even uglier. I am still not sure about the Zend Framework. I have pestered them pretty hard to add "advanced" features, but they are focused on the low end programmers so it is not a platform for interesting stuff right now (and maybe never). I haven't seriously tried CodeIngiter on a website, but from my peek I wasn't interested. Most of the other PHP frameworks seem to have faded over the past year.
Ambush Commander wrote:(keep in mind my style of coding, if you even know what that is :-P (hint, I'm somewhat of a perfectionist))
From my expreience of your somewhat perfectionism, I would not recommend that you use anyone else's code. ;)
(#10850)
alex.barylski
DevNet Evangelist
Posts: 6267
Joined: Tue Dec 21, 2004 5:00 pm
Location: Winnipeg

Post by alex.barylski »

arborint wrote:
Ambush Commander wrote:So, let's get back on topic. Anyone used any frameworks, and what were your impressions of them?
I have some rough opinions. Symphony is just too much structure for me. It's design is pretty good but I tire of having to build everything. It just does not hit any mark I am aiming at. Cake is nice if you want to do what it does well which are smallsh "social" sites. I find the code ugly and trying to extend it even uglier. I am still not sure about the Zend Framework. I have pestered them pretty hard to add "advanced" features, but they are focused on the low end programmers so it is not a platform for interesting stuff right now (and maybe never). I haven't seriously tried CodeIngiter on a website, but from my peek I wasn't interested. Most of the other PHP frameworks seem to have faded over the past year.
Ambush Commander wrote:(keep in mind my style of coding, if you even know what that is :-P (hint, I'm somewhat of a perfectionist))
From my expreience of your somewhat perfectionism, I would not recommend that you use anyone else's code. ;)
What would you consider "advanced" features???

The one appealing thing about Zend is it's modular simplicity. If I don't want to use their MVC I don't have too and the dependencies like PEAR don't exist - That I could tell anyways.

Zend has it right IMHO as it's framework (not a library) and not an application framework, like Mambo, etc...
User avatar
Christopher
Site Administrator
Posts: 13596
Joined: Wed Aug 25, 2004 7:54 pm
Location: New York, NY, US

Post by Christopher »

Hockey wrote:What would you consider "advanced" features???
Dependency Injection and O/RM are the two big ones that spring to mind.
Hockey wrote:The one appealing thing about Zend is it's modular simplicity. If I don't want to use their MVC I don't have too and the dependencies like PEAR don't exist - That I could tell anyways.
Well there's not really much MVC support there so it is pretty easy not to use it. ;) Yeah, the components are like a better PEAR.
(#10850)
alex.barylski
DevNet Evangelist
Posts: 6267
Joined: Tue Dec 21, 2004 5:00 pm
Location: Winnipeg

Post by alex.barylski »

arborint wrote:
Hockey wrote:What would you consider "advanced" features???
Dependency Injection and O/RM are the two big ones that spring to mind.
Hockey wrote:The one appealing thing about Zend is it's modular simplicity. If I don't want to use their MVC I don't have too and the dependencies like PEAR don't exist - That I could tell anyways.
Well there's not really much MVC support there so it is pretty easy not to use it. ;) Yeah, the components are like a better PEAR.
What class(es) are you refering to in terms of DI???

As far as I could tell, Zend_Config and the DB abstraction layer are relatively dependancy free???

Code: Select all

require_once 'Zend/Config.php';
require_once 'Zend/Config/Ini.php';

$config = new Zend_Config(Zend_Config_Ini::load('/path/to/config.ini', 'production'));
The dependancy on the "type" of data storage is now up to the client developer (which I personally perfer) as opposed to being hardcoded into the object itself...

How would that code become any more or should I say less dependant??? :?

OR/M although I agree it would be nice...I don't think (after ALOT of thought) it's a good way to do things...current implementations anyways. I'm thinking about something new...perhaps a meta language like EBNF that allows easier mapping of object models to complex many to many type relationships found in a relational model.

Until such a thing is invented or I discover my own method, I think OR/M is over kill for anything expect rapdily and easily ALTERing DB tables using code bases. Just my opinion though :P

I think I've seen you raising your conerns about DI, is that you expressing your thoughts about their Authentication module???

Personally, everyone I have ever seen has it wrong, again, I'm working on one which IMHO does it right. So yea I'd certainly like to see some things done differently in Zend...in addition to their file naming...I hate using camel caps, even in filenames...it's so anti-linux it hurts. :P

Although I've adapted to the Zend_SoandSo I like that...that makes pragmatic sense :)
Well there's not really much MVC support there so it is pretty easy not to use it. Yeah, the components are like a better PEAR.
Simplicity is beautiful...even more so in non-compiled environments :)

MVC itself is fairly simple as I understand it...what more could Zend do to implement a more full featured MVC framework???

Without imposing anything on the View (as I hate frameworks which force a certain HTML design/layout on you and won't even consider them remotely despite time saving benefits - Prado comes to mind if I understand it correctly).
[/quote]
User avatar
Ambush Commander
DevNet Master
Posts: 3698
Joined: Mon Oct 25, 2004 9:29 pm
Location: New Jersey, US

Post by Ambush Commander »

Uh oh, derailed topic.
From my expreience of your somewhat perfectionism, I would not recommend that you use anyone else's code.
Well, I only have a problem when either 1) the code doesn't work or 2) the code doesn't do what I want it to. Then I can be quite disappointed if the internals aren't well-written. But if it works well enough that I never have to peek under the hood, I'm savvy.

Hmm... that sounds precisely like what one would have to do with a framework. But I don't like extra work and I will set aside my perfectionism for a little bit.
I have some rough opinions. Symphony is just too much structure for me. It's design is pretty good but I tire of having to build everything. It just does not hit any mark I am aiming at. Cake is nice if you want to do what it does well which are smallsh "social" sites. I find the code ugly and trying to extend it even uglier. I am still not sure about the Zend Framework. I have pestered them pretty hard to add "advanced" features, but they are focused on the low end programmers so it is not a platform for interesting stuff right now (and maybe never). I haven't seriously tried CodeIngiter on a website, but from my peek I wasn't interested. Most of the other PHP frameworks seem to have faded over the past year.
Part of the idea of using a framework is that a lot of the work is already done for me. Otherwise, I wouldn't bother with the hassle of having to use another person's code. So I've already ruled out Zend: I don't want to have to implement user registration or authentication (save that for AuthTools), and I don't want to just be given a loose set of tools, well, sure, why not, but there's no reason why I can't use Zend and something else.
I think I've seen you raising your conerns about DI, is that you expressing your thoughts about their Authentication module???
Zend has an authentication module? O.o
alex.barylski
DevNet Evangelist
Posts: 6267
Joined: Tue Dec 21, 2004 5:00 pm
Location: Winnipeg

Post by alex.barylski »

Ambush Commander wrote:Uh oh, derailed topic.
From my expreience of your somewhat perfectionism, I would not recommend that you use anyone else's code.
Well, I only have a problem when either 1) the code doesn't work or 2) the code doesn't do what I want it to. Then I can be quite disappointed if the internals aren't well-written. But if it works well enough that I never have to peek under the hood, I'm savvy.

Hmm... that sounds precisely like what one would have to do with a framework. But I don't like extra work and I will set aside my perfectionism for a little bit.
I have some rough opinions. Symphony is just too much structure for me. It's design is pretty good but I tire of having to build everything. It just does not hit any mark I am aiming at. Cake is nice if you want to do what it does well which are smallsh "social" sites. I find the code ugly and trying to extend it even uglier. I am still not sure about the Zend Framework. I have pestered them pretty hard to add "advanced" features, but they are focused on the low end programmers so it is not a platform for interesting stuff right now (and maybe never). I haven't seriously tried CodeIngiter on a website, but from my peek I wasn't interested. Most of the other PHP frameworks seem to have faded over the past year.
Part of the idea of using a framework is that a lot of the work is already done for me. Otherwise, I wouldn't bother with the hassle of having to use another person's code. So I've already ruled out Zend: I don't want to have to implement user registration or authentication (save that for AuthTools), and I don't want to just be given a loose set of tools, well, sure, why not, but there's no reason why I can't use Zend and something else.
I think I've seen you raising your conerns about DI, is that you expressing your thoughts about their Authentication module???
Zend has an authentication module? O.o
Zend is the way to go IMHO...poor docs though, especially in MVC I had to look at some code before I finally got things rolling, even still I have some questions I would like answered.

Their working on an Authentication module, but every proposal I have seen has been trashed for one reason or another...

I'm pretty sure I've seen Arborint on there voicing his concerns about the authentication systems already proposed...

Authentication is going to be difficult to integrate into a system, by virtue of the fact it's so tightly integrated into your system, so really it's almost application specific. Then there is the issue of data storage mediums to be used. Ack...it gets ugly quickly...

Somethng simple is what is needed, but so simple it's almost pointless to be implemented as a class or library and might as well just be hand written each time - thats the crux of the authentication problem right there.
User avatar
Ambush Commander
DevNet Master
Posts: 3698
Joined: Mon Oct 25, 2004 9:29 pm
Location: New Jersey, US

Post by Ambush Commander »

Zend is the way to go IMHO...poor docs though, especially in MVC I had to look at some code before I finally got things rolling, even still I have some questions I would like answered.
Yep. It's not even in Beta stage yet. Another reason to avoid it.
Their working on an Authentication module, but every proposal I have seen has been trashed for one reason or another...

I'm pretty sure I've seen Arborint on there voicing his concerns about the authentication systems already proposed...

Authentication is going to be difficult to integrate into a system, by virtue of the fact it's so tightly integrated into your system, so really it's almost application specific. Then there is the issue of data storage mediums to be used. Ack...it gets ugly quickly...

Somethng simple is what is needed, but so simple it's almost pointless to be implemented as a class or library and might as well just be hand written each time - thats the crux of the authentication problem right there.
Oh dear. (Thinks of aspirations of a framework with authentication built-in. And AuthTools).

I've still got the idea that as long as you modularize the code enough, a real authentication system could be integrated quite easily with a system. At the very least, we could take a long hard look at the word "authentication" and figure out what it really is all about.

Is expecting authentication to come with a prospective framework too much to ask? I guess I don't mind surrendering more control to the framework...
alex.barylski
DevNet Evangelist
Posts: 6267
Joined: Tue Dec 21, 2004 5:00 pm
Location: Winnipeg

Post by alex.barylski »

Yep. It's not even in Beta stage yet. Another reason to avoid it.
More reason to supoprt it IMHO :P

Think about it, it's the official framework of the people actually making money from PHP as a language. All good (by good I'll explain) frameworks typically come from the language vendor.

By good, I mean effective at getting a job done and well documented, supported, etc...

MFC is a god example...it's not the best framework, OWL was better, but MFC dominated and still does in Windows development.

I dunno I think in the long run we'll Zend as the final framework, unless I can get people helping me on my own *coughs* in which case, obviously mine would kick some butt :P Kidding - although I'm open for help
Is expecting authentication to come with a prospective framework too much to ask? I guess I don't mind surrendering more control to the framework...
I think so...it's to loosely defined and no one wants to accept what any one else has to say, so...yea

For instance, authentication for me is just proving you are who you say you are, the method or technique(s) used are another layer all togather:
1) Retina scanning
2) Finger printing
3) Voice recognition
4) DNA sampling
5) Challenge/response

And so on...the problem arises when you look at the situation from a practical perspective. On the internet, we'll likely be using user/pass or some combination of that sorts for some time to come...

So assuming simple user/pass will suffice, which most libraries do, everyone starts throwing in their kitchen sink. For example, you lost my interest in the first 5 minutes of reading your first public document.

All the CAPTCHA plugins, etc...way over board IMHO...I don't want plugin support for an authentication system, but you should know from experience that without the bells and whistles, trivial authentication is just that it's trivial...not worth using a library...

Obviously this is my opinion and nothing more and many people will likely argue they'd want those advanced features. But as a low level developer I like starting from scratch and builind on top of that. The one thing Arborint advocates loudy and i agree 110% is the issue of component/module/plugin, etc dependencies...

God are they annoying and yet they are almost the very backbone of open source development. The biggest change I had to deal with when switching over to Linu when I first started playing in Perl and PHP were all the dependancies. Windows follows a more monolithic approach using dynamic runtime invocation as opposed to static compile time inclusion.

Meaning dependancies are hidden from you when developing windows apps IMHO anyways. PEAR is a good example of bad libraries code.

Every object depends on another object or two, which is fine, but the code is so sloppy (appears to be anyways - materialistic perspective) I just want to use the PDF class because I'm running low on time in a project, but instead I have to include everything but the kitchen sink. So I use independant libraries which are likely better maintained anyways (phpMailer, fpdf, etc...).

I hate to say it, but what is needed is a commercial quality and possibly partially funded library or framework which is well tested, well written, well documented and everything is well done, then dependancies wouldn't bother me so much. PEAR seems to open source and with the exceptions of Linux and other *popular* libraries open source IMHO suggests experimentation, beta this and beta that.

It's a goal I've been working on for years to accomplish - it's a helluva task I tells yea! :P

I like Zend for that reason, it atleast appears to be on the right track...

Anyways I'm rambling, just putting my 2 cents in there :)
Post Reply