Caution! - Many of these posts are creepy-old in the Ruby on Rails world (before 1.0!)
The :author => Charles Abbott now blogs here

Frameworks Good or Bad?

2007-10-06   [ 2 comments ]

Below is a conversation I had with a friend concerning using frameworks in new and existing development. It was spurred from his question about a project he had been doing for a while - he asked what were my thoughts on how he might re-develop it.

It was more of a review of framework types at first. But then it kinda boiled down to the core art of software engineering. Thought it would be good to save this conversation.


[2:13:17 PM] MyFriend says: So you're thinking a compelete rewrite?
[2:13:17 PM] MyFriend says: can we reuse / salvage things?


[2:14:34 PM] Charles Abbott says: well, of course, salvage alot...
[2:15:20 PM] Charles Abbott says: you want to get to the point where you can change the implementation without having to change the interface for alot of things... ie, make it easier for the programmer to become more productive...
[2:15:38 PM] Charles Abbott says: more productivity = more features and quicker turnaround time



[2:15:54 PM] MyFriend says: glad I read that PDF you had


[2:16:09 PM] Charles Abbott says: there are a lot of areas where if you had a simple API for developing you could drop the site on top of another data source and rock-n-roll
[2:16:19 PM] Charles Abbott says: =)
[2:16:32 PM] Charles Abbott says: that was small part of a presentation i gave at my current employer
[2:17:13 PM] Charles Abbott says: ive been retraining their software developers toward agile practices... and its given me a lot of insight (they have tons of experience in software dev) ;)


[2:17:59 PM] MyFriend says: have you used any of the php frameworks?
[2:18:03 PM] MyFriend says: like cakephp


[2:18:26 PM] Charles Abbott says: yes, and i have done code reviews on most all of them
[2:18:45 PM] Charles Abbott says: frameworks are very useful, however you have to be careful on the selection criteria


[2:19:50 PM] MyFriend says: I wonder how these framworks integrate with other software


[2:19:56 PM] Charles Abbott says: there are different types of frameworks - "Full Stack" and "Component" each has its pros and cons


[2:19:59 PM] MyFriend says: i.e. wordpress


[2:20:27 PM] Charles Abbott says: well, some will play nice and some wont


[2:20:50 PM] MyFriend says: cake and syfony are real frameworks, right?


[2:20:51 PM] Charles Abbott says: many of the full stack frameworks (cakephp, codeigniter) are often filled with a lot of magic in the background


[2:21:01 PM] MyFriend says: meaning they force you to follow their rules


[2:21:06 PM] Charles Abbott says: so they are not very easy to integrate
[2:21:08 PM] Charles Abbott says: correct
[2:21:20 PM] Charles Abbott says: zend is a component - take what you will type of framework
[2:21:28 PM] Charles Abbott says: now, i am not arguing for either one at this point
[2:21:44 PM] Charles Abbott says: because with the right strategy you could use either


[2:21:53 PM] MyFriend says: so is the zend more like a library?
[2:22:01 PM] MyFriend says: or a mix of a framework and library?


[2:22:07 PM] Charles Abbott says: however, you have to decide what will provide the greatest amount of productivity and least amount of headache in the long run
[2:22:20 PM] Charles Abbott says: correct.. they dont force you to use any of the main components
[2:22:54 PM] Charles Abbott says: they tout it as a MVC Framework, when it really is a "Do-What-You-Want" Library of loosely-coupled objects
[2:23:15 PM] Charles Abbott says: now, they strongly encourage you to follow their MVC structure (which is a good idea)


[2:23:19 PM] MyFriend says: many prefer zend for that reason


[2:23:34 PM] Charles Abbott says: but they have coded in so many hooks and exceptions to allow people to turn off any part they want
[2:23:49 PM] Charles Abbott says: right


[2:24:00 PM] MyFriend says: i like cake's consistent use of software patterns


[2:24:48 PM] Charles Abbott says: there is a place for all the php frameworks out there... and there is still room to make your own (taking the best of this component library and a peice of that cake)
[2:25:22 PM] Charles Abbott says: right.. and that is what it really all boils down to... software patterns or design patterns
[2:26:02 PM] Charles Abbott says: in truth software is a design, so to promote a greater degree of cohesion between your developers they need to all be aware of the design and adhere to it
[2:27:26 PM] Charles Abbott says: and when you mix in the benefits of interfaces - and separation of your logic / design / datasource it makes it easier to migrate later
[2:27:45 PM] Charles Abbott says: there is always something new and better coming out... so its nice to have the option to move a peice at a time =)


[2:28:00 PM] Charles Abbott says: well, thats it for now

:author => "Charles Abbott"
Software Engineering
 


Giray said:

Thanks for sharing this conversation.

2007-12-03 13:40:23 UTC

Charles said:

Hey Giray! Glad you checked out the site, thanks for leaving a comment... and be sure to stay in touch ...

Oh, and good luck on the Exam! (both of them)

2007-12-03 13:56:58 UTC

What?

Who?              Link?



Frameworks Good or Bad?   :date => "2007-10-06"
Where is ForTheCode.com Going?   :date => "2007-09-23"
Refactoring - Vital to Software Development   :date => "2007-09-23"
Mongrel Cluster a quick note - and extra notes   :date => "2007-05-20"
Linux Mongrel and Rails   :date => "2007-05-15"
form_remote_tag revisited   :date => "2007-01-07"
How To: Ubuntu 6.10 Edgy on Rails part 3   :date => "2006-12-30"
How To: Ubuntu 6.10 Edgy on Rails part 2   :date => "2006-12-24"
How To: Ubuntu 6.10 Edgy on Rails   :date => "2006-12-22"
verify ... 5.times do cycle   :date => "2006-09-25"
country_select, country_options_for_select, mail_to   :date => "2006-09-05"
Generate and Send Email in Rails   :date => "2006-08-26"
FDF Model, gsub, and send_data   :date => "2006-08-18"
Active Directory Authentication with acts_as_authenticated   :date => "2006-08-17"
Apache2 proxy with Lighttpd - FastCGI for Rails   :date => "2006-08-08"
reverse! && a simple file Upload Class   :date => "2006-07-29"
send_file - a link to download a file   :date => "2006-07-24"
Environments (production, development, test) and cache_pages   :date => "2006-07-04"
.class .methods .instance_variables   :date => "2006-06-14"
select_tag :multiple => true   :date => "2006-06-01"
FileUtils, action_controller rescues   :date => "2006-05-20"
file_field_tag, File.size, File.path, FileUtils.mv   :date => "2006-05-15"
javascript_include_tag, stylesheet_link_tag   :date => "2006-05-02"
submit_to_remote, form_remote_tag, script.aculo.us   :date => "2006-04-30"
periodically_call_remote, simple_format   :date => "2006-04-26"
observe_field - Ajax!   :date => "2006-04-21"
h method, TextHelper, sanitize(), strip_tags()   :date => "2006-04-15"
Rails API :My API [.count(), link_to, text_area :size]   :date => "2006-04-13"
Rails - HTML Select Tag   :date => "2006-04-05"
Pruning Old Sessions   :date => "2006-03-21"
If Elsif Else, and Searching Too!   :date => "2006-03-17"
SHA1 - A quick update   :date => "2006-03-15"
Initialized! good, Authorized? Great! part 2   :date => "2006-03-11"
Initialized! good, Authorized? Great!   :date => "2006-03-08"
Forms and Routing in RoR   :date => "2006-03-06"
My First RoR Post !   :date => "2006-03-05"