Slashdot Mirror


How Do You Decide Which Framework to Use?

GPolancic asks: "Software frameworks are increasingly popular software reuse technique, because they provide infrastructure functionalities to an application, or a layer of an application and therefore reduce the work of a software developer. Numerous complementary (for example: Struts and Hibernate) and competitive (for example: JSF vs. Struts or JSF vs. ASP.Net) software frameworks are available as both proprietary and open source software. A major precondition for the success of a software framework is their acceptance, which is related to market share or community size. On the other side, application developers need to review and select the best available software framework for their needs. Which factors do you evaluate before you decide to use a specific software framework?" "Our presumption is that software developers mostly evaluate following software framework characteristics based on:
  1. perceived ease of use (e.g. easy to learn, easy to adapt)
  2. perceived usability (e.g. improving developer performances, reducing work, faster development),
  3. perceived sustainability (e.g. perceived long term support, supporting standards, clear project directions) and
  4. perceived fit to specific developer requirements (e.g. suited language, suited functions, suited architecture).
What are your criteria? Do you support the factors listed above? I am not asking for a preference on a specific software framework, but rather an explanation on the non-trivial task of framework selection, which might be very usable for both frameworks developers and framework users."

291 comments

  1. Use what you know by Mutilated1 · · Score: 1

    You use the one you and your team already know how to use.

    1. Re:Use what you know by Anonymous Coward · · Score: 0

      Exactly. Either we use stuff we aleady invested tons of time and knowledge into, or we buy into hyped-up uberkewl fads du jour. Well I'm more interested in just getting the job done,and moving on to the next contract. Maybe one day I'll retire and have time to learn all the other stuff and agonize over the pros and cons in a deliciously minute way. Or maybe by then I'll be so burned out I won't give a damn.

    2. Re:Use what you know by XMyth · · Score: 1

      Hah.....I have some sick urge to see just what the hell is so bad about this picture.

      Nice line.

    3. Re:Use what you know by networkBoy · · Score: 1

      WTF?
      seriously, that is wrong. Goatse is dimented, tubgirl is gross. That is

      it's been half a minuite and I can't complete the above sentance.
      -nB

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    4. Re:Use what you know by Anonymous Coward · · Score: 0

      Ladies and gentleman, we have a wiener! Best new shock imagery!

    5. Re:Use what you know by deetsay · · Score: 1
      You use the one you and your team already know how to use.
      I wish. In three years I'm not sure I've ever done two projects with an exact same combination of frameworks. (Struts, Spring+Struts, just Spring, Spring MVC, Spring+JSF ......) I'm not sure this is a really smart strategy, but it's definitely better than just being stuck with Struts.
      --
      "The looser the waistband, the deeper the quicksand", or so I have read.
    6. Re:Use what you know by mattoo · · Score: 3, Funny

      Yeah great! Fear of learning new things is always the way to success...

    7. Re:Use what you know by kristjansson · · Score: 1

      you obviously didn't follow the link to the unmitigated horror on the parent post. I had absolutely NO desire to have learned that there are people THAT fucked up in the world...

    8. Re:Use what you know by Anonymous Coward · · Score: 0

      I opened the link in a new tab, below /.
      Based on a 1 second glance, I would say "Cthulhu-ian", in the sense of Things Man Was Not Meant To Know.

    9. Re:Use what you know by onedotzero · · Score: 1

      I... uh... that is... uhm...

      Jesus Christ :(

      --
      onedotzero
      thedigitalfeed.co.uk

    10. Re:Use what you know by Anonymous Coward · · Score: 0

      Big deal, a body mutilator. He's not even a nullo. :)

    11. Re:Use what you know by heinousjay · · Score: 1

      Eh... I'm pretty sure the internet has jaded me. That didn't even make me flinch.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    12. Re:Use what you know by Anonymous Coward · · Score: 0

      Yes, we're all impressed with your genital removal operations, Eunuch.

    13. Re:Use what you know by dndfan · · Score: 0

      Indeed. What's so sick about that? Goatse, now _that_ I cannot bare to look at, but slicing a penis? Something similar has been on the news a year or so ago in my country (without the...um...explicit imagery, of course).

      --
      echo "This is not a lame sig generated through a pipe." | cat - > .signature
  2. Easy to decide... by moronikos · · Score: 5, Insightful

    You use the one your boss tells you that you are going to use.

    1. Re:Easy to decide... by hutchike · · Score: 3, Interesting
      So true! I worked at a place where our boss decided that every framework class was to be wrapped in a bespoke wrapper with a slightly polluted API, meaning all my skills were unportable and my pay check never rose too high (until I quit).

      How Dilbert life was back then in the late 90's. Sure it was a long time ago, but I bet it's "good practice" someplace...

      --
      Zen tips: Pay attention. Don't take it personally. Believe nothing.
    2. Re:Easy to decide... by jZnat · · Score: 2, Insightful

      What if you're said boss and need to pick out some possible frameworks for use? Somebody has to make the decision somewhere along the line of management.

      --
      'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
    3. Re:Easy to decide... by nissu · · Score: 1
      You use the one your boss tells you that you are going to use.

      Really? Does someone actually have a boss who even understands what a "framework" is?

    4. Re:Easy to decide... by Imsdal · · Score: 1
      Really? Does someone actually have a boss who even understands what a "framework" is?

      No, but that wasn't the question. Surely I'm not the only one to have had a boss decide on what framework to use without knowing what a framework actually is?

      I had one boss who insisted that the code libraries we had developed for easy reuse when developing web sites with ASP was to be referred to as our "platform" and not our "framework". To this day I wonder what he thought was meant be either of the terms...

      (That said, I have had far more bosses who, correctly IMNSHO, left the decision to me.)

    5. Re:Easy to decide... by masklinn · · Score: 2, Insightful

      Just tell your devs to use "the standard of the industry" == what everyone uses (struts) even if it's a fucking piece of crap (struts) and if dozens of projects have failed because of this heap of dung (struts).

      Because that way, you protect your ass: if the project fail, can't be your framework choice, you chose "the standard of the industry", it's obviously because of the devs... or the marketting... or the hardware... but not you.

      --
      "The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
    6. Re:Easy to decide... by Tim+C · · Score: 1

      Yes, I do. My current boss worked his way up the ranks from programmer, through senior programmer and finally to development manager. In a previous career, he was an electrical engineer, doing hardware stuff.

      Sure, there are a lot of bosses who know nothing but the business side of things, but believe it or not they're not *all* like that.

    7. Re:Easy to decide... by poot_rootbeer · · Score: 1

      You use the one your boss tells you that you are going to use.

      Sure. And how does your boss decide which one you are going to use?

    8. Re:Easy to decide... by Anonymous Coward · · Score: 0

      u are gay

    9. Re:Easy to decide... by drkich · · Score: 1

      Can you give some examples of some of these projects that failed due to struts.

    10. Re:Easy to decide... by Bloke+down+the+pub · · Score: 1

      In the boss zone, knowing what something is is not a prerequisite for having an opinion about it. He may have overheard someone else, or read about it in an inflight magazine. Always remember that mauve has the most RAM.

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    11. Re:Easy to decide... by jZnat · · Score: 1

      Well, there's Struts for one... ;)

      --
      'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
  3. missing by JeffSh · · Score: 1

    I would've thought things like prototype.js and ruby on rails would be better examples of frameworks in proliferate use today than those provided in the blurb.

    but then again i could just be karma whoring. so whatever!

    1. Re:missing by larry+bagina · · Score: 3, Funny
      Do you also think linux is easy enough for your grandmother? Do you also think ogg vorbis has widespread use?

      I think you've spent too much time on slashdot.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    2. Re:missing by INeededALogin · · Score: 1

      You would of thought wrong.

      Hibernate and Struts are both very well known packages for the Java world. My company has plenty of apps that use both of them.

      As far as ruby on rails... who in the business world uses that? Can you name any website or application currently in production that does. I have a guy who messed around with a website using it, but it is far from perfect and far from production.

    3. Re:missing by Trejkaz · · Score: 2, Informative

      "Can you name any website or application currently in production that does."

      The Rails Wiki has a list.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    4. Re:missing by broohaha · · Score: 1

      As far as ruby on rails... who in the business world uses that? Can you name any website or application currently in production that does.

      As far as ruby on rails is concerned, the easy answer can be found here:

      http://rubyonrails.com/applications

    5. Re:missing by INeededALogin · · Score: 1

      From the list(and I saw the other one as well), it has been implemented at largely small places similar to how linux was first deployed. The best I saw on the list was a Newspaper which my friend works at a Newspaper so I know that the person who did it was probably one of the only technical person there.

      The point was that no serious company is going to give Ruby on Rails a chance right now because it hasn't been proven yet. When I say serious compay, I mean a company that has SLAs.

    6. Re:missing by Anonymous Coward · · Score: 1, Interesting

      Amazon.com and BBC News are using Ruby on Rails in some of their development projects. There are also many examples of Ruby production work in asia as well. As for it being far from perfect, I could say the same about .Net. Sure, Rails is still quite young, there are holes, but it's way more flexible than other more established frameworks. It saves money, it saves time, its flexible, compilable, cross platform, self-documenting, brainless to version, painless to test, easy to deploy, and hey it even plays well with Java and .Net. Don't let the dumbass screencasts on how to create a CRUD scaffold fool you - you can do some powerful stuff with Rails.

    7. Re:missing by xero314 · · Score: 1

      Please tell me prototype.js is not actually catching on. I'm not going to rip into prototype.js, but I will say emulating classical inheritance is a waste. Prototypical inheritance is far more powerful and flexible than classical inheritance in pretty much every way. Honestly prototype.js has some useful functionality, but adding in things like the classical inheritance emulation is just asking for trouble, by teaching the next generation of developers that prototyping is bad, which is far from the truth.

      Just my opinion, I'm just sick of people trying to knock prototypical systems.

      Oh and to back up some of the other comments, as much as slashdot has alot of posts about Ruby on Rails I have never heard of a single company using it. I worked for a company that used XUL heavily but wouldn't say it's popular since no one else used it in production systems. I think Ruby is the same way.

    8. Re:missing by bloodredsun · · Score: 1

      Okay, it's a nice list but come on! They aren't exactly heavy hitters!

      All joking aside, I'll take more notice when I see a site dealing with serious traffic involving database transactions and other services. Else RoR will always been seen as a bit of a hobbyists plaything suitable for proto-typing or small sites only.

      Basically, wake me up when the current gods are superceeded.

    9. Re:missing by MemoryDragon · · Score: 1

      Actually Prototype.js is inherently problematic it does language and namespace hijacking, as good as the work is which is based upon it (namely script.aculo.us) as weak is the foundation of prototype.js.

      And no prototype is not a framework which is widely used among corporations and big sites and never will be, it is a javascript framework and not even a very good one (dojo for instance is way better in the way it tries to be non intrusive and tries to cover more ground)

      and the frameworks mentioned are very popular, they are just java centric thus unknown to people outside of the java world, and all of them mentioned have a high usage rate in corporate banking etc... environments and generally are very popular.
      (Way more popular than prototype.js, which in the long run if they designers do not change their namespace problems will be a dying framework)

    10. Re:missing by Anonymous Coward · · Score: 0

      Would have.

      You would have thought. . .

      Sheesh.

    11. Re:missing by masklinn · · Score: 1

      generally are very popular.

      Among managers you mean? Cause struts for sure ain't popular with any dev that has ever used any other framework. Spring, Webworks, Tapestry, probably, but Struts? hell no, the only ones who like struts are the guys who only ever used it, and never any other framework.

      Widely used in corporations doesn't mean that it's good, widely used in corporations means that managers can easily cover their asses by picking it.

      --
      "The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
    12. Re:missing by computational+super · · Score: 1

      What is WebWorks, BTW? I've been hearing about it more and more lately - when I Google it, I get this, which looks like a proprietary desktop publishing system to me... is that what you're referring to? Is it really worth looking into and paying licenses for, when Struts, Tapestry and Spring are all open source?

      --
      Proud neuron in the Slashdot hivemind since 2002.
    13. Re:missing by MemoryDragon · · Score: 1

      Actually I agree with your comment on Struts, Struts is one of the huge jokes of history, why it ever became a defacto standard is beyound me, even the core struts developers have moved onto saner grounds (Struts shale, which basically is a JSF extension framework) But fact is it is used and it works, although no one likes it, including me.

    14. Re:missing by MemoryDragon · · Score: 1

      Webworks is one of the myriads of opensource web frameworks, it is merging currently with struts, to Struts Ti (one of the handful of Struts successors) Dont know if it offers any significant benefits over the others, I rather doubt it and it was before the merger more or less pretty unknown even in the Java webdev crowd. But face it the old Struts codebase was so much behind anything remotely sane that there was no other way to get the old framework into newer waters than merge it.

    15. Re:missing by masklinn · · Score: 1

      Sorry, I always manage to fuck up the name: it's WebWork (singular), not WebWorks (plural).

      --
      "The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
    16. Re:missing by mwood · · Score: 1

      I'm just amazed by how many synonyms people can come up with for "subroutine library".

    17. Re:missing by Trejkaz · · Score: 1

      All joking aside, I'll take more notice when I see a site dealing with serious traffic involving database transactions and other services. Else RoR will always been seen as a bit of a hobbyists plaything suitable for proto-typing or small sites only.

      There are already some of those in the list. Just because not every single site is under heavy load, you're saying that all the sites are toys? Fair enough, then. Slashdot is probably a toy too.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    18. Re:missing by Achromatic1978 · · Score: 1

      I'm curious about Rails as much as the next guy - I've known of it for about a year, and now even have some R/oR books to read, and a project to use it for (though I'm still reminded of someone's logic - don't make your first project your pet project, or you'll hate both RoR and the project), but half the items on that page are the niche applications of the company the developer who wrote RoR worked for.

  4. Go for the hype. by croddy · · Score: 5, Funny

    Personally, I'd pick Ruby on Rails. Not that I have any technical reason to prefer it, mind you... but man, it's so jam-packed with alliterative goodness and it's all Web 2.0'ed out and shit. And it has some crap called a scaffold. Do you have any idea how many struts it takes to build just one scaffold? No? Well it takes a lot!!

    1. Re:Go for the hype. by EraserMouseMan · · Score: 1

      I love that! I love it, man. You captured the spirit perfectly! Very well done.

    2. Re:Go for the hype. by Anonymous Coward · · Score: 0

      Nah, Ruby sucks, there's only one framework to choose from. (Ok, you have Og+Nitro as well..), go for Java.

      For the web/controller tier there's Tapestry, JSF, Webworks, Swing MVC, JSP+JSTL, and the slightly dated Struts of course. And don't forget to toss some portlets in there!

      DB tier is easy, though. Only JEE, Hibernate, iBatis and plain JDBC, or perhaps Toplink, to choose from.

      For AOP/application frameworks there's Spring, JEE, AspectJ, nanning aspects and hivemind(?).

      And finally, for building, there's Maven (2), Ant and Maven 1..

      Getting these things up and configured, and then getting them to work together only takes a few K lines of xml configuration. Screw RoR with ~zero configuration, ~half the LOC due to being higher level, and having all the tools you need ready to go.

  5. SimCity metaphor by Anonymous Coward · · Score: 0

    SimCity metaphor time: Ruby on Rails gets built in "light commercial" zones. These sort of Java frameworks are "heavy industrial."

  6. Spring! by Anonymous Coward · · Score: 0

    Anybody ever do anything with Spring? At JavaOne last year the Spring sessions were always the most popular but it seems it's hardly made a squeak since then. I guess with EJB 3.0 coming it's not quite the God send it once was, but still.

  7. Difficult to answer by IntelliAdmin · · Score: 5, Insightful

    This is almost as bad as asking "What programming language to use for a project" It all depends on the needs and experience of those involved. Sometimes it means rolling your own, other times it is better to get one that has been fully tested in the field for some time. Either way it is a silly question to ask.

    1. Re:Difficult to answer by Tony+Hoyle · · Score: 4, Informative

      More to the point, the design will answer the question for you (as it does for the 'what programming language' question).

      You design the application *then* you start making technical decisions about implementation - not the other way around.. there's already too much crap produced by people who *must* use the latest wizzy 'framework' and then design an app to use it regardless of the functional requirements.

    2. Re:Difficult to answer by SengirV · · Score: 1

      I wouldnt' say silly. The specifics of the question itself if silly, but the overall question can be discussed vagely enough. And unfortunately, answered vagely as well.

      You can pretty much ignore this, as I am kinda just doing a self ping for a later read ;)

      --

      Prof. Farnsworth - "Oh a lesson in not changing history from Mr I'm-My-Own-Grandpa!"

    3. Re:Difficult to answer by RaisinBread · · Score: 1

      No, I think this is a great question to ask: regardless of language (and hype), a framwork - at least for me - has to help me with the following:

      - DRY: I hate re-inventing the wheel everytime I pick up a new project. Not repeating yourself in intra- application code and inter-application code is a must.

      - Rapid Application Development: if the framework is saving me time and speeding up the iterative development process, its a go. If I'm stuck trying to stay with in a structure or conform to someone else's standards, its out.

      - Convention over configuration: I personally hate mappings, defines, configurations...etc. Hopefully the framework has an intuitive naming/coding convention that gets me free functionality.

      -- J

    4. Re:Difficult to answer by Overly+Critical+Guy · · Score: 1

      So the answer to the submission is "Whatever is needed." Another pointless article.

      --
      "Sufferin' succotash."
    5. Re:Difficult to answer by Dlugar · · Score: 3, Insightful
      So the answer to the submission is "Whatever is needed." Another pointless article.

      You're all missing the point. The question isn't "Which Framework Should We Use?", the question is "How Do You Decide Which Framework to Use?"

      The answer the first question is, quite obviously, "Whatever is needed." But the second question is asking, in essence, "What factors do you use in determining 'whatever is needed'?" That seems like an interesting question, and I'm surprised people don't seem interested in discussing it.

      Dlugar
      --
      Computer Go: Writing Software to Play the Ancient Game of Go
    6. Re:Difficult to answer by Overly+Critical+Guy · · Score: 0

      Okay, let's discuss what factors I use in determining whatever is needed:

      1.) I look at what is needed.
      2.) I use what fulfills those needs.

      --
      "Sufferin' succotash."
    7. Re:Difficult to answer by iangoldby · · Score: 1

      This is almost as bad as asking "What programming language to use for a project"

      No it isn't. He asked "How do you decide which framework to use?", not "What framework...". That is a completely different type of question, and a very pertinent one.

      The same answer to his question could lead to the choice of various frameworks for various projects, depending on the circumstances.

      If you think it is silly to ask about how to go about making a rational decision, you presumably think rational decisions are silly. (I guess this isn't really the case.)

    8. Re:Difficult to answer by spectrumCoder · · Score: 1

      I think we can assume that if the question 'which framework' or 'which language' is being asked, then the team is lucky enough to have the flexibility to choose the design and implementation of the project they're working on. This is probably the ideal case for every project, as no one likes to be tied down to legacy code and designs.

      I take it as a sign that the developer just wants to take the (rare) opportunity to start from a blank slate and do it the way it should be done, rather than because it needs to be built on a pre-existing code base, or the team in question just wasn't given the opportunity to make key design decisions. In which case it is most definitely not a silly question to ask.

    9. Re:Difficult to answer by Simon+Brooke · · Score: 1

      Last time I was in this situation, back in 1997, I rolled my own. It's served me very well for nine years, but increasingly design commitments I made early have started to seem wrong in terms of subsequent developments. Now I'm thinking of where I go from here; I've been thinking about the features a modern software system should have. And I've got a proof of concept which generates all the elements of a Web application from a single source file.

      I haven't yet decided which way I'm going to jump. But I have already ruled out a lot of approaches. Firstly, anything which mixes logic with presentation is clearly wrong. That rules out all the taglib based systems, including PHP, Cold Fusion, JSP, BRL and all the others. Ruby on Rails is sort-of OKish, since the presentation layer ('views') is separateish from the logic. But in practice it seems you can put any logic into the Rails templates. Having the templates in a different, standard language - ideally XSL - seems to me a better solution.

      As to the underlying language, after ten years Java is stale for me. I spend too much of my time struggling round its limitations, and primarily, around static typing and baroque libraries. Ten years ago Java had a lot of promise, particularly in strong portability and platform independence. But everything else has caught up, and Java now looks increasingly like the wrong language for general purpose programming. So what's the right language?

      Back in the 1980s everyone gave up on LISP because it needed machines which were too expensive. But the sort of horsepower LISP needs is now cheap, and, indeed, LISP is economic of machine resource compared to many modern language systems. The downside of LISP as an implementation language is that while Web hosting companies these days often provide PHP and are reasonably comfortable with Java and Ruby, a toolkit which uses a LISP foundation can only really take off with people who control their own servers. But, that apart, LISP currently looks like the best bet to me.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
    10. Re:Difficult to answer by tomtermite · · Score: 1

      Well, i agree, choosing a framework (or even a language) is often dictated by someone else. However, I've succeeded in sticking with WebObjects (http://www.apple.com/webobjects) since 1997, and that's worked well for my company. Sometimes going in stealth mode has helped -- we don't sell the tools we use, we sell the solutions we build with them.

      --
      - Ubique, Tom Termini www.bluedog.net - WebObjects / J2EE SOA / iPhone solutions for knowledge workers
    11. Re:Difficult to answer by Anonymous Coward · · Score: 0

      Pragmatically, a framework will gain inertia within an institution. As Maslow once said, "When all you have is a hammer, every problem looks like a nail."

      There is great incentive for maintainability to use the same framework consistently, if possible. There are cost savings in training and licensing (for commercial options). It also enhances expertise in that framework (practice makes perfect).

    12. Re:Difficult to answer by mykdavies · · Score: 1

      Thanks for this very interesting comment, and also for the link to your post-scarcity software article. While reading that, I was reminding of Avi Bryant's thoughts on how Smalltalk seems to have addressed many of these same areas of concern.

      There's also an increasingly interesting set of work related to web development coming out of that the Smalltalk world at the moment such as Seaside and the related tools (e.g. Magritte and Pier), not forgetting of course dabble.

      --
      The world has changed and we all have become metal men.
    13. Re:Difficult to answer by Anonymous Coward · · Score: 0

      The poster wants to know HOW to choose, not which one. He wants to learn to fish, shithead.

    14. Re:Difficult to answer by PolarXL · · Score: 1

      Step 1, steal the world's underwear.
      Step 3, profit!

    15. Re:Difficult to answer by mwood · · Score: 1

      Design *before* coding? Blasphemy!

      You probably think that 100,000 lines of comment-free code is not all the documentation anyone should ever need, too. Heathen. :-)

    16. Re:Difficult to answer by WeAreAllDoomed · · Score: 1
      Okay, let's discuss what factors I use in determining whatever is needed:

      well, of course, this article is *actually* about the different frameworks and the advantages they offer over one another, in different scenarios. isn't this obvious?

      it's just a bit of article-ese to present it as a practical problem to actually select a particular framework for a particular application.

      --
      free software, open standards, open file formats, no software patents.
    17. Re:Difficult to answer by Tremor+(APi) · · Score: 1

      That's why they specifically stated that they were NOT looking for recommendations on a specific framework, but rather information on the processes people use to CHOOSE a framework. Which would be akin to asking how you CHOOSE a language to use, not asking which language should be used.

      --
      [Z?]
    18. Re:Difficult to answer by ciarande · · Score: 1

      Didn't the poster ask "How do you decide?" rather than "What's the answer?"?

    19. Re:Difficult to answer by jgrahn · · Score: 1
      You design the application *then* you start making technical decisions about implementation - not the other way around.. there's already too much crap produced by people who *must* use the latest wizzy 'framework' and then design an app to use it regardless of the functional requirements.

      I think you mean you make those choices *as part of* the overall design. Based on reasoning, not (only) people's craving for new toys.

    20. Re:Difficult to answer by rainman_bc · · Score: 1

      The nice thing that Rails does though is give you oodles of great functions for presenting your views. You don't need to worry about moving your application from a subfolder of a site to its own domain - the functions within the views take care of all of that.

      Granted though the syntax is ugly, and you still end up with spaghetti code. I can't stand embedded ruby. I agree with you - something like XSL is the way to go... Perhaps some RoR devs are reading this...

      --
      09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
    21. Re:Difficult to answer by pixel.jonah · · Score: 1

      Only speaking from what I know, I'd like to defend ColdFusion. In the past two versions it's become pretty nicely OO.

      Saying that you have to mix logic with display is like saying you have to build your VisualC++ program as one huge .exe rather than having it broken out into DLLs and such. It's the way you program, not the limitation of the language.

      (Granted, this was not so easily possible in earlier versions of CF, before 6 (7 is now current).)

    22. Re:Difficult to answer by Simon+Brooke · · Score: 1
      Saying that you have to mix logic with display is like saying you have to build your VisualC++ program as one huge .exe rather than having it broken out into DLLs and such. It's the way you program, not the limitation of the language.

      You're missing the point. I'm not saying you must mix logic with presentation; I'm saying that it is dangerous that you can mix logic with presentation. In many organisations, certainly, the people who design the presentation of web sites are not to be trusted with anything technical - although they think they are!

      Separating out those files which it is safe for the soi-disant 'web designers' to mess with from those that it isn't is a good thing, in my opinion.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
    23. Re:Difficult to answer by metallic · · Score: 1

      Then why not just use something like Smarty and a MVC framework with PHP? Then you have all the seperation that you need.

      --
      Karma: Positive. Mostly effected by cowbell.
  8. For LAMP/server work by Anonymous Coward · · Score: 0

    Perl - POE
    Python - Zope

    1. Re:For LAMP/server work by masklinn · · Score: 1

      Zope's not a framework, it's an application server.

      --
      "The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
  9. Framework schmamework by quantum+bit · · Score: 5, Insightful

    I've played with a bunch of frameworks based on Java, Ruby, Python, etc... However for my last few projects I decided to go "old school". Since the target platform was Windows, that meant plain C and Win32 API. No MFC or anything. Staticly linked libpq if I need database access. Extra plus is that without C++ or COM frameworks, I can use mingw gcc on my BSD workstation to cross-compile.

    It was a little more work up front, but I've gotten nothing but extremely positive responses about the interface. The application binary usually is under 50k, even the larger ones don't break the 100k barrier. They're extremely quick and responsive on modern machines, and still very usable on older ones. I like to do processing asynchronously (i.e. user types a few characters and a DB query kicks off in the background when they stop typing) and it keeps things snappy. It's pretty easy to literally run circles around all the bloated apps eating up tens of megs of memory or more.

    1. Re:Framework schmamework by The-Trav-Man · · Score: 2, Insightful

      an app that uses 10's of megs!?! you mean like, on a SERVER!?!
      OH NOES! It'll never handle it!
      Are your win32 calls supported by WinXP and Win2000?(probably) How much effort would it take to port it to linux? Are you helping lock your organisation onto a single software platform?

    2. Re:Framework schmamework by Nataku564 · · Score: 1

      If he is smart, he has confined all his platform specific code to a single library, or collection of libraries, with abstract interfaces. He shouldn't really be doing much in the way of system specific syscalls, so odds are its not that bad to port. Not as easy as Java or Perl, but still - a well designed C program shouldn't be all that bad to port.

      This does assume competentcy on the part of the developer, but pretty much all programming does that. C can just bite a bit harder when this is lacking.

    3. Re:Framework schmamework by Brandybuck · · Score: 1

      Actually, that's a pretty good idea. If I could find a decent *thin* C++ wrapper around Win32 or X11, I might go that route myself.

      --
      Don't blame me, I didn't vote for either of them!
    4. Re:Framework schmamework by ClosedSource · · Score: 1

      "If he is smart, he has confined all his platform specific code to a single library, or collection of libraries, with abstract interfaces."

      That sounds like a good academic approach. It's a good professional approach too if there's a reasonable expectation that the application will be ported to another OS.

      On the other hand, most applications will never be ported from the environment they started on and the extra effort and added complexity of adding a layer of abstraction that doesn't model the problem being solved isn't justified in those cases.

      Even in those cases where the porting takes place, it's almost never as simple as just recompiling the code.

      The question is whether you want to spend extra money and effort to pay today for what you may or may not need tomorrow.

    5. Re:Framework schmamework by The-Trav-Man · · Score: 1

      You know why most applications are never ported? Because lock down software is proliferating. It's not a question of whether it will be ported, it's a question of making things that allow that question to be asked. DRM is on it's way, and when it gets here there's going to be a lot of people wailing about how they can't change to a free/open system because there is too much software that won't be ported. If you think about it long enough (and perhaps squint a bit) DRM and non-portable software share a lot of features. Mostly in lack of choice/freedom.

    6. Re:Framework schmamework by The-Trav-Man · · Score: 1
      It's nice to know that it's possible. (I didn't know C had that fancy interface and abstract stuff without the ++)

      But I'll bet my beer to your freedom that he didn't.

    7. Re:Framework schmamework by Shimmer · · Score: 1

      You know why most applications are never ported? Because lock down software is proliferating.

      No, it's because most applications are closed/proprietary and no one is willing to pay money to port the code. If there's no business case driving the port, there's no project; and if there's no project, there's no programmer to do cool things.

      It has nothing whatsoever to do with DRM.

      --
      The most rabid believers in American Exceptionalism are the exact same people whose policies are destroying it.
    8. Re:Framework schmamework by tobe · · Score: 1

      "no one is willing to pay money"

      It more like no-one sees the need..

    9. Re:Framework schmamework by halfnerd · · Score: 1

      Do you consider FLTK (http://www.fltk.org/) too bloated or not decent?

    10. Re:Framework schmamework by Captain+Zep · · Score: 1
      Are you helping lock your organisation onto a single software platform?

      You are always getting locked in, whichever way you do it.

      Use OS specific calls and you're locked to that OS.

      Use any particular framework and you are locked into that framework.

      Even if it's available across multiple platforms/OSs, you are still dependent on something which is out of your control and could turn bad.

      Personally, I find the least bad solution to be to use libraries not frameworks, and wherever possible to only use cross-platform libraries.

      It's easier to swap out a library that your code uses, than to swap out a framework that uses your code - keep your code in control!

      Z.

    11. Re:Framework schmamework by Enonu · · Score: 1

      This just in from your boss. Management heard of this web thing, and they've decided that all apps are to be ported to be developed and converted to web applications. They're confident that your model and controllers are portable, and since C and C# are really the same thing, you should have no trouble converting, right?

      Perhaps this seems like a crazy situation to you, and that it'd never happen, but at my last job, they hired on a head architect and he and another developer convinced management to move from Oracle Forms to J2EE. Pretty gutsy, and perhaps for the better in the long run for the organization, but the current set of 30 or so PL/SQL Oracle Forms developers had to learn Java or quit.

      Be careful of the choices you make when developing your applications. Develop in a portable, forward thinking point of view, and security will follow.

    12. Re:Framework schmamework by easter1916 · · Score: 1

      You wouldn't be an employee of Monsanto on Olive Blvd., would you? I think I might be the guy you're talking about... sorry man!

    13. Re:Framework schmamework by quantum+bit · · Score: 1

      an app that uses 10's of megs!?! you mean like, on a SERVER!?!

      No, on the desktop. The recent trend seems to be toward web apps on gigantic servers, which is one that I happen to disagree with. Web apps are good for two things: Horrible user interfaces, and wasting vast amounts of resources (you've got hundreds of client machines with gigahertz processors sitting there waiting!)

      Eventually this trend will reverse -- it's a continuous cycle between thin client and thick client as the dominant philosophy. I prefer to split the difference -- keep business logic and data integrity in the DB server, but leverage the native interface and processing power of your clients.

      Are your win32 calls supported by WinXP and Win2000?(probably)

      Yes, and usually NT4 as well. Read the platform SDK docs, they tell you exactly which calls are supported on which platforms. As much as MS comes up with brain-dead designs sometimes, at least most of them are well documented.

      How much effort would it take to port it to linux?

      Not much. The simplest path would be just running them in Wine. I never use embedded IE or anything like that and try to keep things to calls that were supported on anything NT4 or better. Because of that all the basic system calls are supported natively by Wine and the program runs great.

      A full port would require more work, but I split out the GUI code from the backend code so it's just a matter of replacing a few modules. All my UIs are based on a homegrown adaptive sizer model loosely inspired by GTK sizers, so it would translate well. For bigger projects I've been known to use wxWidgets which is cross-platform; it's mostly the smaller DB frontends that I go bare-metal on.

      Are you helping lock your organisation onto a single software platform?

      No, server side I use PostgreSQL on FreeBSD. Client desktops we're already locked in by accounting software; not much I can do about that in any case. For my stuff moving to another platform wouldn't be difficult as all of the data and rules for it are managed server-side.

    14. Re:Framework schmamework by John+Courtland · · Score: 1

      C doesn't have fancy anything. You would have to write a module that you can replace at compile time to provide abstraction from the low level system interface for you. Your logic would remain the same, but instead of directly calling the Win32 or X or Carbon APIs, you would call a static API you wrote, and that API would be the one piece of software that calls system specific APIs so that it's easy to modify and still provide similar functionality.

      --
      Slashdot is proof that Sturgeon's Law applies to mankind.
    15. Re:Framework schmamework by quantum+bit · · Score: 1

      It's nice to know that it's possible. (I didn't know C had that fancy interface and abstract stuff without the ++)

      Modular programming has been around much longer than C++ and OOP in general. For languages like C, the source file is your module and the "interface" is the set of functions and their parameters (usually formally defined in a specification somewhere). To swap modules, you just compile a different source file that includes the same functions. It can be done a runtime also, by loading shared libraries. It's actually a lot easier to this run-time in C than C++, because with C++ you have to worry about function name mangling that varies from compiler to compiler.

      Abstraction can be done in any language as it's a way of thinking rather than a language construct.

      It's even possible to do objects and polymorphism in C -- use structs with function pointers. Define some macros to make life easier. The FreeBSD kernel makes heavy use of plain-C OOP, as does GTK.

      But I'll bet my beer to your freedom that he didn't.

      For which project? Some of the simpler ones are nothing more than GUI frontends to databases -- in those cases all of the logic happens on the database server, so there's nothing to separate. The client app is the platform-specific part, and the DB server is the platform-independent part.

      For more complex projects; definitely. I'll either use a cross-platform library like wxWidgets (that needs C++ though), or make sure the Win32 calls are confined to the GUI modules. Other libraries I always use cross-platform; since my development box is BSD I have to be able to cross-compile it on either OS anyway. For example, libpq for database access, expat if I need XML, OpenSSL.

    16. Re:Framework schmamework by quantum+bit · · Score: 1

      This just in from your boss. Management heard of this web thing, and they've decided that all apps are to be ported to be developed and converted to web applications. They're confident that your model and controllers are portable, and since C and C# are really the same thing, you should have no trouble converting, right?

      Management already decided that anything remotely web related (as in uses HTML or HTTP in any way) is under the perview of the Web Team, which is a separate department. They've done a few "intranet" web apps using ASP, and they all have clunky, barely useable interfaces that the users hate, Yet Another Login and Password (TM), and tend to break rather badly when you enter input that they weren't expecting. I haven't tried to exploit anything, but from some of the errors I've encountered I suspect that several are also vulnerable to SQL injection holes.

      Perhaps this seems like a crazy situation to you, and that it'd never happen

      Not so crazy, but if it does happen I at least know that it won't be my problem. My primary role is mostly support and server/network admin, I only do development to fill specific needs that aren't being addressed elsewhere and because I enjoy it. If they want to webify this all this stuff; fine by me -- all the source is in the Subversion server -- have fun! :)

      ...they hired on a head architect and he and another developer convinced management to move from Oracle Forms to J2EE.

      Talk about going out of the frying pan into the fire... Though if given the choice I'd probably take J2EE over Oracle Forms anyway.

      Be careful of the choices you make when developing your applications. Develop in a portable, forward thinking point of view, and security will follow.

      The counter is also true. If you're not careful, you can overthink and overplan and end up with something too generic to be much use to anybody. Our accounting package (Oracle) has exactly that problem, it's designed to be able to be used by any type of business and so things that are specific to our type of business can be difficult to accomplish because we don't always fit the norm of what the designers were expecting. Sure you can fork out lots and lots of cash for consultants to come modify it, but that usually ends up being incompatible with some other modules down the line.

    17. Re:Framework schmamework by jgrahn · · Score: 1
      Are your win32 calls supported by WinXP and Win2000?(probably) How much effort would it take to port it to linux? Are you helping lock your organisation onto a single software platform?

      In my experience, most organisations that do Windows programming are quite happy to lock themselves to one OS, one toolchain, and one proprietary set of APIs.

      (And to be fair, I am quite happy doing pure Unix programming. But at least there isn't a single vendor in that area, and the interfaces are free.)

    18. Re:Framework schmamework by Brandybuck · · Score: 1

      Not thin enough. I want a wrapper, not a toolkit. There is a difference.

      --
      Don't blame me, I didn't vote for either of them!
    19. Re:Framework schmamework by wysiwia · · Score: 0

      The thinnest wrapper is no wrapper at all if FLTK isn't small enough.

      O. Wyss

      --
      See http://wyoguide.sf.net/papers/Cross-platform.html
  10. Think if it is really neded by Anonymous Coward · · Score: 0

    Thinking of if you really need to use any of framework or not is also important.

  11. It all depends by owlman17 · · Score: 2, Insightful

    ...on your budgetary constraints, whether you're willing to invest in expensive frameworks that you have to pay for over and over again, or go FOSS. It will also depend on your company's systems. Some frameworks have relatively steep requirements.

    As much as its easy to suggest "use-this-or-that-framework-because-its-the-best", a quick inventory of what you have and where you're willing to go in the long run brings everything back to earth. Sorry if I didn't answer your question directly, but there are a lot of things to consider.

    1. Re:It all depends by bloodredsun · · Score: 1

      But in the Java world, pretty much all the frameworks ARE FOSS. Whether you choose the established players: Struts, WebWork, JSF, Spring, Hibernate, or the newer ones such as Groovy on Rails, all are FOSS.

      I feel it's one of the benefits of Java is that the code "ecosystem" that has grown up around it is mostly FOSS, even extending to the Application Servers such as JBoss.

      C# is a great language too, but you pay to use it, especially on larger systems (sorry, I don't include the Mono project for various reasons).

  12. Do what the rest of us do by gadzook33 · · Score: 3, Insightful

    Evaluate each one based on what's important to you. What language do you use? What platforms do you support? What libraries do you incorporate vs write yourself? I'm not sure there are shortcuts to answering any of these.

    1. Re:Do what the rest of us do by Anonymous Coward · · Score: 0

      Why, thank you, Captain Obvious.

  13. The Other Option by ThinkComp · · Score: 1

    If you don't like what you see out there, or you don't know any better, you can just write your own. I came up with Lampshade, but open-source software definitely fosters the mentality that you shouldn't necessarily just use what other people provide, when you're able to contribute something yourself. Of course, once you've written it, you want someone to use it.

  14. Why I Hate Frameworks - a popular article by hermank · · Score: 5, Interesting

    Hmm.... I think you should read this first, in case you didn't. http://discuss.joelonsoftware.com/default.asp?joel .3.219431.12

    1. Re:Why I Hate Frameworks - a popular article by russellh · · Score: 3, Interesting

      snarky. reminds me of why I dislike joel on software.

      It is claimed in that article that the distinction between a framework and a library is a subtle one. Not so, not so. Programming languages are themselves frameworks, whereas an add-on framework is often a poorly implemented, misunderstood, misappropriated, half-assed, dumbed down, broken programming language. It is an attempt to add task-based end-use assumptions to a language, to turn an existing language into a special purpose tool. That could be bad, unless the framework was designed by someone who understands programming language design, or if it is done in a language designed with such extensions in mind - CLOS for instance.

      So either forget frameworks, or choose them as you would a programming language, and accept that you have to learn and play by their rules, philosophy, paradigm, what-have-you. Just as you wouldn't want to write C style code in CLOS, you would rather learn and use the CLOS special facilities. CLOS *is* a framework, as is C, as is any programming language. This is why Objective-C is the greatest language EVAR, it took two completely at-odds programming philosophies and bashed their heads together. C, fark your static type system and compile-time checking! Smalltalk, let me introduce my old friends malloc() and SIGSEGV! ..but to answer the poster's question, first choose a language that best matches your problem domain, ensuring (hopefully) the minimum size of the framework and minimizing philosophical contradictions between it and the host language.

      --
      must... stay... awake...
    2. Re:Why I Hate Frameworks - a popular article by Anonymous Coward · · Score: 0

      Do you ever stop and think how sad it is that you can't think for yourself and need someone like Joel to think for you? Of course not, Joel hasn't written an article about that yet.

    3. Re:Why I Hate Frameworks - a popular article by Azarael · · Score: 1

      I think that the problem the first post(in the link) was really getting at was that frameworks tend to be overly complex and not granular enough. In a lot of cases it is probably a lot easier to use tools that just do one thing well. In php for example, you could use Smarty that just does templating, Quick Forms for form validation, some kind of custom or gree database layer and any other necessary tools. At least if each single tool doesn't do everything you want, you can build around it. If you are using one tool that does everything, you are probably going to be a lot more constrained in the ways you can do things, or the tool is going to be so abstracted that you're going to have to spend a bunch of time flushing it out anyway.

    4. Re:Why I Hate Frameworks - a popular article by russellh · · Score: 1

      At least if each single tool doesn't do everything you want, you can build around it. If you are using one tool that does everything, you are probably going to be a lot more constrained in the ways you can do things, or the tool is going to be so abstracted that you're going to have to spend a bunch of time flushing it out anyway.

      Totally. I think I said something similar from a different pov. those constraints are the assumptions about the kind of problems the framework was designed to solve, and in a framework, you have to work from the inside, rather than from the outside with smaller tools. inside, you're subjugated like you are inside a language. As long as you and the framework are both going to Oz, you can go merrily together along the yellow brick road, but if your goals diverge, the divorce will be messy. Think of the child processes!

      --
      must... stay... awake...
    5. Re:Why I Hate Frameworks - a popular article by kuzb · · Score: 1

      Joel provides a very slanted view of the world. In a previous article, he tries to say that universities don't teach students to do anything hard anymore because Java is used to teach them. Following that, it's easy to see he's already got a strong bias against Java.

      Now, I'll be the first to say that I'm not a huge Java fan. I find it to be a particularly verbose language that doesn't allow a whole lot of flexability in how you code. It doesn't lend itself to rapid development or constantly changing requirements, and is not Object Oriented in the same respect that Smalltalk or the more recent language, Ruby are. It is far too rigid for my tastes.

      However, to make an assertion like "people who learned to code using Java can't do anything hard" is pure BS - some of the best programmers I know are right at home in Java. I lost a lot of respect for Joel that day, and I find it hard to take his opinion seriously on anything anymore. He makes blanket statements, and then writes rants to back them up. Couple that with the fact that Joel really doesn't do anything all that impressive. Fog Creek Software's main claims to fame are a piece of bug tracking software (Many better alternatives exist to this), and a tech support program for remote administration of systems (solved again in a much better way by Windows 'remote assistance', SSH, VNC, etc). Neither of which are anything particularly well designed or innovative.

      If Joel had his way, we'd all be writing all our applications in pure C/C++ without any tools to back us up. Not that these languages don't have their place, but they're certainly not suitable for everything. I'm not really too sure why people pay so much attention to him.

      --
      BeauHD. Worst editor since kdawson.
    6. Re:Why I Hate Frameworks - a popular article by mythz · · Score: 1

      He is saying that Java is not a good language for you to *learn* programming with, not to use. This is not a bias towards Java as it applies to VB and C# as well. He makes an example of Java because some Universaties are using Java as the language to teach programming.

      This is for good reason, with Java you never have to deal with pointer arithmetic and memory allocation and deallocation, etc. People who learned to program with Java won't necessarily know that an array is a sequence in memory, a char can also be an int, a String is an array of chars, Strings are immutable, etc.

      This raises a couple of problems as it allows mediocre programmers to get degrees and write code (who otherwise wouldn't have managed if they were forced to use C/C+++), and people who write unoptimized code as they don't understand how their program works fundamentally. A good example being 'fucked strings'.

    7. Re:Why I Hate Frameworks - a popular article by anomalous+cohort · · Score: 1

      What I got out of this Joel on Software - Why I Hate Frameworks discussion group is this. Trying to use a complex framework just to do something simple is wasteful. Who could disagree with that? If the original poster is trying to meet the needs of developers who need to build a tool that can be completely described in twenty five words or less, then that person is wasting his time with frameworks.

      If, on the other hand, that poster is trying to come up with a framework to meet the needs of developers who are charged with building an application that is so complex that no single human being could ever completely understand it, then a complex framework just might be the only viable path to solution.

      In that spirit, permit me to introduce to you my anti-Joel on Software discussion group topic...

      Why I Like Frameworks. I needed to build a 33 story skyscraper so I went to my local construction company. I made an appointment with a representative where I showed him my plans. The first 3 floors would serve as an indoor mall. The next 7 floors would function as apartments. The upper 23 floors would be reserved for corporations. He took one look at the plans reached into his desk and handed me a hammer. What's this? I asked. You don't need no complicated frameworks, he said. They take too long to learn and your brain will start hurting. Aren't you feeling anxious because you can't see any tangible evidence of your progress yet? Here's a hammer. Get some boards and some nails and start building.

    8. Re:Why I Hate Frameworks - a popular article by rainman_bc · · Score: 1

      Yeah, but he's kind of wrong. First of all, all hammers serve one basic function - to hit stuff with it. From a sledge hammer, down to a dental hammer, they are all designed to hit.

      The question is how hard you want to hit and how much control you want to have, but they all hit. If you want something that you can strike an object with, any hammer will do.

      It's important to educate yourself on all the hammers in the marketplace and use the right tool for the right task. However if all you want to do is hit something, and don't really give a crap how, then any hammer will do - buy the cheepest one that looks like it's the easiest to swing.

      His analogy is flawed, and kinda stupid really.

      --
      09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
    9. Re:Why I Hate Frameworks - a popular article by Anonymous Coward · · Score: 0

      snarky. reminds me of why I dislike joel on software.

      If you dislike joelonsoftware because of what somebody posted on a forum there, how can you stand slashdot?

    10. Re:Why I Hate Frameworks - a popular article by russellh · · Score: 1

      If you dislike joelonsoftware because of what somebody posted on a forum there, how can you stand slashdot?

      I'm more of a Lambda the Ultimate kind of guy. Thus, I think JoS is neither particularly interesting nor insightful. His POV is so narrow on the issues I care about. I don't come to slashdot for insight, so it's happy when I find some. I don't know why I read slashdot now that I think of it. I often find myself writing a reply to someone when I realize -- who really cares? But this time, I'll hit submit anyway, just because.

      --
      must... stay... awake...
  15. Do you really need a framework? by wrook · · Score: 4, Interesting

    I think the very first question you should ask yourself is, do you really need a framework?

    Yes, reuse is good. But too much functionality in one package is not necessarily good. Sometimes it is better to rely on multiple small reuse libraries than on one "all singing, all dancing" framework.

    For instance, if you have a large number of teams, do they all have the same needs? If the teams have divergent needs, picking "the best compromise" in a framework can have negative implications on their productivity.

    Also, is the quality of the framework consistent across the whole system? For instance, if you have network class libraries and gui class libraries, are they both equally good? Or are you sacrificing on one side to get the benefit of another?

    What are your maintenance/upgrade needs? While it's relatively easy to keep 5 versions of a network library around for legacy applications that don't need to upgrade, it's a very different story to keep 5 different versions of .Net or the JRE around. Are you sure you want to upgrade all the apps all at the same time?

    Do you need all of the functionality the framework is bringing you? It might be nice for you to have choice, but how does the size of the framework affect the end user? If your app is small (say 1 meg) compared to a large framework (say 25 megs), it might not be so good.

    What's your backup plan? What if the vendor of your framework abandons it? Or refuses to fix critical bugs? Will you be able to find something else that you can use in its place? Smaller pieces can be replaced easier than bigger ones.

    I know this isn't the point of the question. But before you decide what framework you want, I urge you to consider whether you *really* need one at all. There are lots of reuse libraries around for every kind of application. It seems likely to me that picking and choosing *exactly* what you want for each circumstance is going to give you better results.

    1. Re:Do you really need a framework? by espressojim · · Score: 1
      Also, is the quality of the framework consistent across the whole system? For instance, if you have network class libraries and gui class libraries, are they both equally good? Or are you sacrificing on one side to get the benefit of another?


      What I don't understand about this question is: why would you have a framework that covers both network operations and the GUI? Aren't those seperate concerns? Wouldn't you use a specialized framework for each of those operations? Example: In java, I'd use a network framework (RMI/webservices/etc) to communicate between client and server (if neccesary), a framework to access databases (hibernate, ibatis, spring) and a presentation framework for whatever kind of client I wanted (struts, JSF, swing, SWT, etc).

      If frameworks exist that do "all of the above", I've gotta wonder how well they do any of them. Seems like modular use of frameworks (picking 1-2 for each type of task) buys you the most ease of development and flexibility. Besides, most good frameworks even talk about their interoperability with other frameworks, and brag about how loosely coupled they are to the other layers.
    2. Re:Do you really need a framework? by Anonymous Coward · · Score: 0

      What I like about Spring is that it sort of puts you in a straightjacket on how to accomplish a task. Sure there's all sorts of ways to do your business logic but it sets up a way that you should code things. In particular I'm thinking about "programming to interfaces" and inversion of control.

      The main benefit this gives you is that the next programmer that picks up your code has a reference point to start from. He'll see that you're creating some basic factories in XML and setting them in controllers and can start from there.

      If this doesn't sound appealing to you I dare you to go into a project where its whatever style the programmers were thinking of. You'll be screaming for consistancy and that's what Spring gives you.

      In the case of Hibernate I love it as it allows me to concentrate on business logic and not how to do something mundane as saving objects to databases. That's not what my employer is paying me for.

    3. Re:Do you really need a framework? by jrumney · · Score: 1

      I don't know about .NET, but keeping multiple versions of the JVM around is easy. And in 99.9+% of cases, upgrading the JVM is not going to break anything, so after a thorough test you can get rid of the old one anyway.

    4. Re:Do you really need a framework? by biraneto2 · · Score: 1

      I work as a framework architect. And I must say.... you always need a framework (Unless you are going to develop a small application with a couple of forms and a few queries). For big systems, if you are not going to use a third party framework you will have at least to develop your own. When working with a team of 40 or more people, leting they develop in the limits of the programming is asking for trouble, as the final result will be a code soup that you will not be able to maintain. Even if you ask for some standards you will find that there will be many solutions for the same problems, and having to fix something simple like the background color of your app may take days. A well designed framework will limit developers to a smaller sandbox. They will have to make simple configurations and worry only with use case defined system logic.

  16. My criteria by TrappedByMyself · · Score: 5, Interesting

    1) Established - Needs to be stable and in heavy use. New stuff is fun to play with, but not an option for paying customers.
    2) Philosophy - I need to agree with the way they do things. Major reason why I ignored EJBs, but jumped on Spring
    3) Cost - I hate having to spend unnecessary $$ when team members cycle, or we have to do an install. Free is best
    4) Standards Based - Vendorlock is teh suck. I like the options of being able to swap a component if I'm unhappy with it, even if I know I'll never swap it.
    5) Familiarity/Ease of Use - Will it ease into what we're doing? Can the team become proficient in it in a reasonable amount of time? Is there decent documentation available?
    6) Licensing - I don't like unecessary limitations, or surprising my customers, so I avoid things like the GPL.

    --

    Help me take back Slashdot. When did 'News for Nerds' become 'FUD and Conspiracy Theories for Extremist Nutjobs'?
    1. Re:My criteria by TheQuantumShift · · Score: 0, Troll
      Offtopic, but I'm silly.

      "Help me take back Slashdot. When did 'News for Nerds' become 'FUD and Conspiracy Theories for Extremist Nutjobs'?"

      When? Day one. Some of us have grown up a bit since then though...

      --

      Shift happens. Fire it up.
    2. Re:My criteria by GotenXiao · · Score: 2, Interesting

      1) In use by dozens of large corporations. Has several years of development behind it.
      2) Open source, freely linkable and redistributable in any form.
      3) Free.
      4) Can be compiled to use stdc++, or use its own internal classes. Uses native controls etc where possible. Cross platform.
      5) Very easy. Well documented.
      6) Very flexible license, few limitations.

      And what is this wonderful framework? wxWidgets.

      Compiles on Windows, *NIX, Mac, Palm (!), PocketPC (!).
      Has bindings in Perl, Lua, JavaScript and half a dozen other languages, but is native to C++.
      Easy enough that a complete noob at C++ (myself) can get to grips with C++ and wxWidgets and have compiled apps running successfully with low resource use inside two weeks.

      I recently referred it to a heavy duty programmer who has been in the job for a while (10+ years), and he fell in love with it after about 2 hours of using it. He loved it so much that his company's next major app is going to be written using it.

      --
      Goten Xiao
    3. Re:My criteria by thread5afe · · Score: 1

      Yes, very good. Add to your list size of project in all respects [team size, number of interfaces, etc.] and environmental factors [x86 vs. big iron, existing in-house tooling, etc.] and your criteria is golden.

    4. Re:My criteria by TheQuantumShift · · Score: 1

      And now that I have been modded a troll, my (unspoken) point is proven. Some haven't...

      --

      Shift happens. Fire it up.
    5. Re:My criteria by omeomi · · Score: 1

      I agree completely. I'm pretty new to wxWidgets, but I've found it to be extremly useful. The only thing I'm waiting on is for wxRichTextCtrl to get a little bit more mature (it's currently only in CVS, not in the main distro)...wxStyledTextCtrl doesn't do quite everything that I want it to do.

  17. The funny part is... by Anonymous Coward · · Score: 0

    EJB (Enterprise Visual Baisc) used to be the worst solution, people don't want even include it as an option. GREAT!!! THANK YOU!!!

    1. Re:The funny part is... by n0-0p · · Score: 1

      You do realize that EJB is a back-end technology, and is often deployed in conjuction with Struts? Also, the VB reference makes no sense since EJB is actually a wrapper around Corba IIOP.

    2. Re:The funny part is... by CountBrass · · Score: 1
      "...since EJB is actually a wrapper around Corba IIOP."


      That's complete bollocks. EJB is not a wrapper around Corba IIOP.

      --
      Bad analogies are like waxing a monkey with a rainbow.
  18. Hey Editors! Redundent link alert! by mcguirez · · Score: 1

    Uh, both JSF vs. links above point to the same JSF vs Asp article.

    Got something on JSF vs Struts?

    --
    When you hear hoofbeats, think horses, not zebras
  19. Oh yeah, ol' school baby! by MacDork · · Score: 2, Informative

    Another upside is that there's no one but you who can fix or maintain it! ;-)

    1. Re:Oh yeah, ol' school baby! by quantum+bit · · Score: 2, Insightful

      Haha, well that may or may not be an upside, but I consider that a quality-assurance measure. After all, any competent and intelligent programmer or engineer will be able to figure it out. It's only the java-monkeys with paper certs and degrees in meta-theory who have never touched any real code (without 3+ layers of abstraction) in their life that will be lost. ;)

    2. Re:Oh yeah, ol' school baby! by quantum+bit · · Score: 1

      ...and yes, the code is well-commented.

    3. Re:Oh yeah, ol' school baby! by rickumali · · Score: 1

      Ah yes, the C on Win32 framework. :-) I like it! (Where's my Petzold?)

      --
      rickumali@gmail
    4. Re:Oh yeah, ol' school baby! by MerlinTheWizard · · Score: 1
      Another upside is that there's no one but you who can fix or maintain it! ;-)

      Absolutely not, as the Platform SDK is pretty well documented and freely available. Only a severely impaired developer could not maintain this. I myself have been using nothing but C and Win32 for years. Before that, I had used Borland OWL with C++. Guess what, after switching to raw API and C, I never wanted to switch back. There must be a reason.

      There is no old school or new school, there are just skilled and unskilled developers. Riding the hype wave and calling skilled people "old school" doesn't make a unskilled developer any more skilled. New tools and languages should be used if they are right for the job at hand and *if* you could do the same (albeit maybe in more time, or with less clarity) with simpler tools. If this line of reasoning makes me old school, so be it. Even if I am to embark on a project written in a very recent programming language (such as Java or C#, heaven forbid though...) with a sophisticated application framework, I would not hire someone on that project who could not do it in a simple procedural language such as Pascal (or Modula, Oberon...) or C if given enough time (but not 10 years either). Being unable to do this, to me, is being impaired programming-wise.

    5. Re:Oh yeah, ol' school baby! by Anonymous Coward · · Score: 0

      I'd be willing to wager that even well commented code would foil the best attempts of those being shucked out of diploma mills when faced with something like Duff's device. Pfft... but what do I know, I'm just a retail salesperson :-)

    6. Re:Oh yeah, ol' school baby! by Procyon101 · · Score: 1

      But things like Duffs device aren't "old school", rather they are highly specific optimizations that are almost never seen in the wild and if they are they are in a layer of code that people don't touch anyway. Most people who are skilled programmers have a brain anurism the first time they see Duffs device too.

  20. Software maturity. by markv242 · · Score: 1
    I had written out a fairly complex post about how you need to pick "the right tool for the job" but you already knew all that crap-- if you don't need to enforce MVC, don't bother with Struts, etc.

    What you really need to look for is a mature product. Market share helps, but I keep waiting for that announcement that Ruby on Rails has some horrendous security hole because it's a 1.0 release. What you need is something that has been expanded upon, revised, and rethought a few times after having been deployed in the field. For me, if I need MVC, I pick Struts. For database abstraction, Hibernate is pretty slick. Both of those packages have been around the block a few times, so I'm fairly confident that any custom problems that I might see, have probably already been solved.

  21. My Views by INeededALogin · · Score: 2, Informative

    perceived ease of use (e.g. easy to learn, easy to adapt)
    In the business world this is huge, because time is money. That is the reason that Developers use these tools instead of developing new code from scratch.

    perceived usability (e.g. improving developer performances, reducing work, faster development),
    This might be hard to measure unless someone has used it in the past. Reviews of Toolkits are also hard to find and many places are gonna be bias.

    perceived sustainability (e.g. perceived long term support, supporting standards, clear project directions)
    Huge, you have no idea how many times I have seen projects go with some new library that disappears from the world the next year pushing you to dead links in google. The project has to have a firm backing by something. Like, libraries coming from the Apache team is a great example of something you can rely on in the future, but libraries from some random person who made a gnome lib just doesn't make sense.

    perceived fit to specific developer requirements (e.g. suited language, suited functions, suited architecture).
    This is a given I would say. When I look for a toolkit, I usually start with this as my search parameter(example: "Python iTunes" or "C++ XML").

    Now, I don't have much to add to the list since I believe it is a good list, but I would also say that being a rebel when selecting toolkits will set you up for failure. Selecting your friends toolkit or some open source toolkit to save $1,000 will often find the blame for outages coming down on you.

    So, a criteria should be stability. What state is the code in. If the code has 700 bugs logged against it, then it might be a problem. Also, how many people are currently implementing the toolkit. While it is a falacy to think that the majority is right, I look at it as survival of the fittest. Toolkits that are useful, supported and implemented, tend to be re-implemented if they were successful as people move around from company to company.

  22. Which one to pick... by Mock · · Score: 1

    I wait a year or so to see which ones come out a sure winner before picking up on it.

    Hibernate and Spring are two good examples of good projects with lots of mindshare.

    Struts, however, I don't like. I don't like JSP or JBoss either.
    Those are examples of the wrong solution to the problem; the complexity of the solution being too high.

    Echo2 looks very promising, and I expect I'll be doing future development on it.

  23. 10 Minute Rule by dood · · Score: 1

    The first test is the 10 minute rule. Start by downloading the framework or project, compile it, get it to run and read the docs. If in 10 minutes you feel productive then you can move to the next steps.

    An amazing framework will be easy to use, well documented, intuitive and will make you feel smart & productive all within 10 minutes.

    1. Re:10 Minute Rule by finnif · · Score: 1

      An amazing framework will be easy to use, well documented, intuitive and will make you feel smart & productive all within 10 minutes.

      This is quite possibly the most ludicrous "rule" I've ever heard. Granted, I've spent a lot of time trying to wrap my head around crazy Java frameworks and have wondered why they couldn't just make some tutorial that would make it easy to get into the software. That said, the world isn't built in 10 minutes.

      It's easy for any framework to give you a 10 minute experience. The problem comes once you've gotten past that 10 minutes. I was blown away with my early experiences with Ruby on Rails. However, as soon as I started getting deep into it and wanted to do more complicated things... sure enough, that up-front simplicity reared its ugly head by adding more complexity later. Try subclassing and extending ActiveRecord sometime. Some of the code they've created to allow for the simplicity of the Rails experience is mightily arcane once you want to make some simple extensions.

      So, I think the 10 minute rule is great for hype, horrible in the real world. 10 minutes is what it takes to do a good demo, nothing more... and we all know what demos are worth. There are plenty of extremely powerful tools and frameworks out there in all disciplines (the web isn't the only thing people do, although you wouldn't know it from looking at slashdot) that take significantly more time to feel productive in than 10 minutes. But that up front learning curve pays off later.

    2. Re:10 Minute Rule by dood · · Score: 1

      So, I think the 10 minute rule is great for hype, horrible in the real world. 10 minutes is what it takes to do a good demo, nothing more... and we all know what demos are worth. There are plenty of extremely powerful tools and frameworks out there in all disciplines (the web isn't the only thing people do, although you wouldn't know it from looking at slashdot) that take significantly more time to feel productive in than 10 minutes. But that up front learning curve pays off later. You miss my point, I'm not talking about demos. I'm talking about 10 minutes of hands-on testing. In 10 minutes you should be able to build the source, run tests, read docs and read the APIs. Well documented code, good build scripts, simple & clean architecture are all signs that the developer of the framework has focused on quality. After 10 enjoyable minutes it's likely the framework will hold up to more inspection.

    3. Re:10 Minute Rule by freeplatypus · · Score: 1

      You miss my point, I'm not talking about demos. I'm talking about 10 minutes of hands-on testing.

      And where is he talking about demos?

      I agree with finnif, that 10 minutes is not enough, frameworks are meant to be simple in use, but don't forget that with ease of use there is always a risk of oversimplifying things, making custom design really hard.

      After all what is 10 minutes rule worth anyway? For example look at Django, Python framework. At the first glance it is great. Does everything and is really clear. But then you discover that backward compatibility sucks which each update. This is just one example.

    4. Re:10 Minute Rule by LEEPS · · Score: 1

      You will understand Hamlets in 10 minutes. You have my word.
      Rene

      http://www.alphaworks.ibm.com/tech/hamlets

  24. Let me tell you about this better web technology by ad0gg · · Score: 4, Funny

    ColdFusion, yup thats right. You can have your struts and scaffold, my website is power by cold fusion. Let me tell you it picks up the honeys when i say i work with cold fusion. Good luck picking up a lady telling them you work on struts, scaffold or java beans.

    --

    Have you ever been to a turkish prison?

  25. Been Thinking About This Too by Comatose51 · · Score: 1

    I've been thinking about software architecture for a while now and it's even more important in the case of a framework. I realized from using my own architecture and seeing its own flaw that a design that flows naturally from the way a person thinks is usually easy to use and coherent. What I mean is that when I'm using some part of a framework (like .Net) and I need to do something new, I would often go online and research it really quick like searching for a node using XPath when using the XML parser class. I mind not know the name of the method/property or exactly how I can call it, but I guess that it is there because it ought to and seen like a common desire most other people would have. A counter-example would be .Net Datagrid. It's a datagrid so I expect it to be easy to use it to display data in row form. It is so tied into ADO.Net, however, that it is clunky to use for anything other than database data. On the other hand, I think their XML parser is fairly good as I've stated above. I didn't know right off which method would support search by XPath but it seems that they would and I was right. So for me #1 is the most important. I don't want to think about the framework nor remember every details. I want to design my project and be fairly confident that the framework will support what I do.

    --
    EvilCON - Made Famous by /.
  26. Use what everybody else is using by burris · · Score: 2, Funny

    If it is really popular, it must be really good. See C++, Java, XML, Windows, McDonalds, etc...

    1. Re:Use what everybody else is using by dartarrow · · Score: 1

      If it is really popular, it must be really good. See C++, Java, XML, Windows, McDonalds, etc...

      you forgot VB6 I'm still asked to use it at work

      --
      I love humanity, it is people I hate
  27. Here is how my boss did by 2Bits · · Score: 4, Funny

    That reminds me of a (quite large) project a few years ago. We were deciding what language to use, what framework, what methodology, etc. And the boss asked:"How many frameworks can we use in the project?" We gave a few, and he wrote down one himself. He then drew one on each corner of a paper, put his pencil in the middle, and spinned. It pointed to COBOL, which is the one he wrote down.

    Imagine the look on our face... One of the colleagues later told us he almost peed in his pants for that experience.

    Seriously though, this story is just a bit exagerated, but not that much, the selection process was almost like what I just described :)

  28. Which Factors do I evaluate? by Anonymous Coward · · Score: 0

    Factors? Evaluate?

    Dude. I have no say in any of this. My wife makes these decisions.

  29. World of Warcraft metaphor by Anonymous Coward · · Score: 0
    Ruby on Rails gets equipped by paladins who bubble-hearth.

    Struts and Hibernate get dual-wielded by rank 14 rogues.

  30. build my own by mhale2243 · · Score: 1

    ... or at least help http://opensails.org/

  31. Belly Button by EraserMouseMan · · Score: 1

    They have to have a special page on the framework's official website to answer the question, "So, who the heck even uses this framework?" And then they give examples like "BellyButton.com" (maternity site). And that's supposed to be proof that it's good enough for mission-critical production use?

    1. Re:Belly Button by moranar · · Score: 1

      The 4 million readers of Penny Arcade? After all, a short while ago they almost "wanged" Slashdot with visits.

      --
      "I think it would be a good idea!"
      Gandhi, about Internet Security
    2. Re:Belly Button by EraserMouseMan · · Score: 1

      Right. That must be one of the very few that actually get good volume. Because after listing a few larger sites they resort to the likes of BellyButton.com. Besides the volume of traffic doesn't necessarily prove that the language or framework is capable enough to handle a wide range of critical enterprise tasks.

  32. Difficult to answer-Getting Framed. by Anonymous Coward · · Score: 0

    "You design the application *then* you start making technical decisions about implementation - not the other way around.. "

    Well that explains the KDE framework then.

  33. Use a more powerful language by putko · · Score: 1

    If you use Scheme, you don't need a framework -- it is powerful enough.

    If you use CAML/ML, there are also typically libraries of combinators (e.g. CML) that allow you to get done what you need to get done.

    People make frameworks for less powerful languages, because that's the only way you can get stuff done when your language requires so much effort to get things done.

    --
    http://www.thebricktestament.com/the_law/when_to_s tone_your_children/dt21_18a.html
  34. You know, I was wondering by bradleyland · · Score: 3, Funny

    I was wondering how hard it must have been for the submitter to write that summary without mentioning Rails at least once. It feels almost like bait.

    bloop bloop

  35. Tried and proven methodology! by ninjaz · · Score: 1

    You decide which framework to use the same way you decide which ANYTHING to use! You research the choices, go through the available information on each, and quickly become overwhelmed with the details.

    Then you get the one featured the most prominently in ads!

    You do have Adblock disabled, right?

  36. Use what you know-This Old Frameup. by Anonymous Coward · · Score: 0

    "You use the one you and your team already know how to use."

    Well Bob Villa is all set then.

  37. Good question. by deep44 · · Score: 2, Funny

    I usually start by asking myself, "what programming language am I most familiar with?" .. then, once I have that figured out, I spam "Ask Slashdot" until they post my question. By then, I've already lost interest and/or forgot about the reason for needing an application framework in the first place, so I close the loop by replying to the question with a completely offtopic (yet slightly humorous) comment.

    That's just me, though. YMMV.

  38. Maintainability, readability & coding style. by savala · · Score: 1

    Whenever I use a third-party framework (for web development, both server-side and client-side), I spend half my bug-fixing time looking through the framework's code. It's frigging annoying! I don't know if my code's just that advanced, or if I have that much bad luck picking frameworks, but I always seem to be hitting the limitations of any frameworks I use.

    Nowadays, the first thing I do upon downloading a framework is to open a couple of its files and look at the coding style, see if I can figure out what's going on. If I can't make it out on a glance, if it's badly documented, or if their curly brackets look at me from the wrong position... I ditch it. It's not worth the effort. I'm far more effective just re-inventing the wheel on my own for the small parts of the framework that I'd otherwise use. And at least that way I know the code will do precisely and exactly what I need, rather than being a general-purpose tool-building factory factory factory.

  39. Frameworks? by Theatetus · · Score: 3, Funny

    *shrug* I use Lisp. Most frameworks take about 4 or 5 macros to emulate. Not really worth the time to download any of them.

    Those who don't use Lisp are doomed to reimplement it...

    --
    All's true that is mistrusted
    1. Re:Frameworks? by sporkmonger · · Score: 1

      3 the sig.

      I tend to agree that Lisp (or something really, really close) is where we're all headed, but it'll only take another 10 years before enough people realize that. In the meantime, Ruby is close enough. We don't have the full power of macros, but blocks, message passing, and wide open classes go a long way towards making domain-specific languages workable.

  40. The one does it my way.. by Fujisawa+Sensei · · Score: 1

    I pick the one that does things my way.

    I tend to use lots of factories, singletons, stateless objects, data access components, transactions, and data validators.

    I can either write and implement a lot of these myself, or I can pick a framework that does it as much of it as possible for me.

    An interesting story, I was messing with an application awhile back. Something completely different, and i was using this framework because of its connection management. I then discovered that it everything interesting I was doing in the other peoject was already built into this one.

    Incidentally the framework I'm talking about is Spring. I picked it because I like what it does.

    I also profess to being a Struts hater. I can do most of what Struts does without it. The same applies to Spring, but with Spring I don't have to extend somebody elses base classes to write interfaces to separate my own code from the frameworks. Then again I do tend to code to the interface anyway, but I'm still not necessarily extending somebody elses base classes.

    --
    If someone is passing you on the right, you are an asshole for driving in the wrong lane.
  41. Documentation! by metamatic · · Score: 3, Interesting

    The first thing I do is try to browse the documentation. If there isn't any, or it's no good, I eliminate the framework right there and then. (That kills SWT/Eclipse.)

    Next I take a look at the amount of functionality offered, compared to the pain of learning the framework, and the risk of tying my code to someone else's code that may break or not work on some platforms. Another important thing to consider is how easy it would be to write your own equivalents of the bits of framework you need. If the benefit to pain/risk ratio is too low, I eliminate it from consideration. (That's always been enough to keep me away from Struts--it doesn't seem to do anything that's hard to do anyway, so it's not worth the pain and risk.)

    After that, it might be time to look at specifics like how clean the API is, how mature it is, and so on.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  42. Re:Let me tell you about this better web technolog by jZnat · · Score: 1

    Is this a subtle jab at MySpace as well? If so, roffles.

    --
    'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
  43. Re:Let me tell you about this better web technolog by chgros · · Score: 1

    Good luck picking up a lady telling them you work on struts, scaffold or java beans.
    On the other hand, rubies are a girl's second best friend.

  44. Loaded question but a few a musings. by Runesabre · · Score: 5, Interesting

    There are so many criteria you have to consider that are so situational specific that it would be near impossible to write down the complete guideline. But I think there are a few solid guidelines to start with or consider.

    1. Know what goals you have to meet. The eventual success or failure of a software project has more to do with having a strong vision of what it is you need to accomplish at the beginning regardless of platform or tool choices made before and during its development.

    2. Be wary of selecting anything because it's cool. Many engineers, I think, fall into the trap of buying into cool toys rather than selecting mission critical tools.

    3. Pick frameworks with a maturity directly proportional to the criticalness of the application you need to develop. If you are building something that is to be the the cornerstone of a company, you should pick well established frameworks that have a proven history and proven credibility to provide effective features. Conversely, feel free to experiment with less proven frameworks for applications that can afford to be less robust. A balance between sticking with tradition and building for the future does have to be taken into consideration.

    4. Identify the top 3 features your application has to deliver and ensure your chosen framework excels at those features. Bells and whistles and future expansion are nice but make sure you take care of what's critical first before comparing extra features. This will help focus your evaluation and not get side-tracked by all the cool stuff a given framework might provide.

    5. Experiment with possible options. There is no reason to select a framework based on paper analysis. Try as much to get your own hands-on experience.

    6. If possible, interview other people who have used the framework in real applications. Get the opinions of people who have actually used your options in the real world. Don't let tech demos be your only guide.

    --
    Runesabre
    Enspira Online
    1. Re:Loaded question but a few a musings. by anomalous+cohort · · Score: 1

      In addition to these six points, tool support is also important.

      I would make a slight ammendment to point 3. It's not the maturity at the time of your decision, it's the maturity at the time of your expected release date. Obviously, that would be a projection into the future which is uncertain. It is also uncertain to assume that the maturity of a framework is always increasing.

  45. Why COBOL is great for Web apps by Anonymous Coward · · Score: 0
    It's got two builtin features that are fantastic:
    • fixed-point math, just what accounting requires,
    • fixed-length strings, which are optimal for web processing (provided you know what you're doing, that is).

    No other language has these features AFAIK, except as a separate function library.

    1. Re:Why COBOL is great for Web apps by dusty123 · · Score: 1

      You could easily do this in Python, too.
      For instance, Python already has fixed-point math, called "decimal". And fixed-length strings may probably be implemented by subclassing "string" and checking the length.

      I assume such techniques will also work with other languages, such as Ruby.

    2. Re:Why COBOL is great for Web apps by Doctor+Faustus · · Score: 1

      Classic VB has fixed-point math in the 64-bit Currency type. I believe .Net has it in a 96-bit Decimal type.

  46. Simplicity is key by syousef · · Score: 1

    You need to make sure you use the simplest framework BUT does !!!everything!!! you need.

    There's a lot of over-engineered crap out there. eg. EJBs were in fashion but they were always over-engineered. Spring's in fashion now but when the honeymoon's over people will realise that Spring is just wrapper technology for existing frameworks and that it's hyped up junk too. Another example: Try and do anything complex with Hibernate and HQL. In the case of DB, SQL works so well. Plain JDBC and SQL with a little bit of intellgent in-house or 3rd party framework wrapping really isn't that bad for goodness sake people.

    At the end of the day you have to choose and use them, but you don't need to swap yourself with design patterns that give you flexibility you don't need and want.

    Choose a handful of well known, well proven frameworks. Less frameworks is better (which is why J2EE has turned into a nightmare - too many frameworks and too much reliance on one another).

    --
    These posts express my own personal views, not those of my employer
    1. Re:Simplicity is key by Runesabre · · Score: 1

      I agree. As simple as can be while meeting one's needs.

      --
      Runesabre
      Enspira Online
    2. Re:Simplicity is key by Serveert · · Score: 4, Informative

      HQL has major limitations but you can rip out into native SQL using createSQLQuery() I believe. Map it into a hibernate class and you're golden.

      When selecting aggregates, JDBC works well. But Hibernate is pretty amazing if you are aware of its limitations. 90% of my code uses hibernate, 10% uses jdbc.

      And the code that uses hibernate is pretty neat, it cuts down dev time significantly. I use hibernate tools in eclipse, point it to the DB and it generates all the classes, parsing foreign keys, making the associations.

      Don't get me wrong, I like to be unique and cynical, against the grain if you will, but hibernate, despite the jerk off creator of it, is amazing and useful.

      --
      2 years and no mod points. Join reddit. Because openness is good.
    3. Re:Simplicity is key by syousef · · Score: 1

      HQL has major limitations but you can rip out into native SQL using createSQLQuery() I believe.

      Have you ever done it? It's awkward and you end up hand mapping from a result set. There may or may not be a better way but frankly I find the Hibernate documentation abysmal, the versions of Hibernate aren't backward compatible, and to top it off the mediators on the Hibernate forums tend to tell you to read the documentation if you raise a legimate concern (if they're being polite that day).

      When selecting aggregates, JDBC works well. But Hibernate is pretty amazing if you are aware of its limitations. 90% of my code uses hibernate, 10% uses jdbc.

      You've doubled your complexity. You're using 2 different ways of doing everything - from the query language to the actual object mapping.

      And the code that uses hibernate is pretty neat, it cuts down dev time significantly

      I have to disagree with that one I'm afraid. You just move mapping code into hibernate configs instead, and end up having to debug both.

      I use hibernate tools in eclipse, point it to the DB and it generates all the classes, parsing foreign keys, making the associations.

      You must be using Hibernate 2. Hibernate 3 removes and deprecates the hibernate tools, substituting a very flexible but much less graphical ant based tool, though I believe people are attempting to writing mapping tools on top of that. (Please let me know if I'm wrong on this one. If you're doing this in Hibernate 3 I'd appreciate being pointed to the tool. No sarcasm here.)

      Don't get me wrong, I like to be unique and cynical, against the grain if you will, but hibernate, despite the jerk off creator of it, is amazing and useful.

      I've got no interest in being cynical and against the grain. Rather I'm totally dishearted by the rubbish that gets pedaled as if it were pure genius. I mean for pity sake move the mappings from strongly typed Java code to XML hell configs then claim to be really configurable and reusable??? Come on, who's actually reused a hibernate mapping for more than one class??? Then they somehow magically claim you don't have to write code, ignoring the XML. This has always just ticked me off.

      I was at a Spring conference the other day, and the amount of smoke and mirror handwaving rubbish I heard amazed me - more because people took notice of it and thought it was wonderful than for the fact that someone could say it.

      As for the rest, I've never dealt with the Hibernate team but I've read enough of their posts that I know I don't want to.

      --
      These posts express my own personal views, not those of my employer
    4. Re:Simplicity is key by LEEPS · · Score: 1

      Sammy, I believe that simplicity is the hallmark of professional software. Have a look at:

      http://www.alphaworks.ibm.com/tech/hamlets

      Hamlets are easy-to-understand and easy-to-use.

      Rene

    5. Re:Simplicity is key by Anonymous Coward · · Score: 0

      The hibernate tools project does provide eclipse plugins for Hibernate 3/EJB3: http://www.hibernate.org/255.html

    6. Re:Simplicity is key by syousef · · Score: 1

      Yes, I'd seen the page you're pointing at. Incomplete documentation though, and it's not immediately clear to me if this gives me the same GUI based ease as the Hibernate 2 toolset gave. From what I can tell tools aren't quite there yet but they decided to retire the old Hibernate toolset before they had a reliable substitute. Not good enough.

      Thanks though.

      --
      These posts express my own personal views, not those of my employer
    7. Re:Simplicity is key by syousef · · Score: 1

      Thanks Rene. I'll take a look.

      --
      These posts express my own personal views, not those of my employer
    8. Re:Simplicity is key by mongus · · Score: 1
      If you can use Java 1.5 try Hibernate Annotations.

      My latest project has no Hibernate XML files at all which makes me VERY happy. :)

    9. Re:Simplicity is key by phaggood · · Score: 1

      Plain JDBC and SQL with a little bit of intellgent in-house or 3rd party framework wrapping really isn't that bad for goodness sake people.

      I loved a tool call J3 which was a very thin wrapper/generator for JDBC and EJB's - unfortunately the tool hasn't been updated since '03 (the website still refers to the upcoming EJB-2.0 spec.)

    10. Re:Simplicity is key by Serveert · · Score: 1

      Just saw your message..


      Have you ever done it? It's awkward and you end up hand mapping from a result set. There may or may not be a better way but frankly I find the Hibernate documentation abysmal, the versions of Hibernate aren't backward compatible, and to top it off the mediators on the Hibernate forums tend to tell you to read the documentation if you raise a legimate concern (if they're being polite that day).


      Yeah it's easy, just use the {} operator:


      Query sqlQuery = sess.createSQLQuery("select {cat.*} from cats {cat}", "cat", Cat.class);
      sqlQuery.setMaxResults(50);
      List cats = sqlQuery.list();


      You've doubled your complexity. You're using 2 different ways of doing everything - from the query language to the actual object mapping.

      It can't do everything, I'll take what I can get.

      I have to disagree with that one I'm afraid. You just move mapping code into hibernate configs instead, and end up having to debug both.

      I don't touch the config files.

      I generate them.


      You must be using Hibernate 2. Hibernate 3 removes and deprecates the hibernate tools, substituting a very flexible but much less graphical ant based tool, though I believe people are attempting to writing mapping tools on top of that. (Please let me know if I'm wrong on this one. If you're doing this in Hibernate 3 I'd appreciate being pointed to the tool. No sarcasm here.)

      Hibernate tools does this for v3: link

      It's graphical enough, not like middlegen but it's very nice, does the job. I point it to the DB, restrict tables if I choose, decide if say a BOOL maps to Boolean/boolean, etc. and then, in eclipse, click generate and it generates the POJO files and hibernate mapping documents.

      I've got no interest in being cynical and against the grain. Rather I'm totally dishearted by the rubbish that gets pedaled as if it were pure genius. I mean for pity sake move the mappings from strongly typed Java code to XML hell configs then claim to be really configurable and reusable??? Come on, who's actually reused a hibernate mapping for more than one class??? Then they somehow magically claim you don't have to write code, ignoring the XML. This has always just ticked me off.

      You don't have to muck with xml files, read the above.


      I was at a Spring conference the other day, and the amount of smoke and mirror handwaving rubbish I heard amazed me - more because people took notice of it and thought it was wonderful than for the fact that someone could say it.

      As for the rest, I've never dealt with the Hibernate team but I've read enough of their posts that I know I don't want to.


      Hibernate is amazing, Gavin, the creator, if you're out there, you are a giant ass wipe.

      --
      2 years and no mod points. Join reddit. Because openness is good.
    11. Re:Simplicity is key by syousef · · Score: 1

      That's a trivial example for the SQL. Note that if you'd written that in HQL, you'd have to re-write to normal SQL. Want a more solid example? Try writing HQL that does a group by using an aggregate function (like sum). It's fine to do in SQL, but in HQL forget it. There are other examples out there but that's one that bit me.

      As for the Hibernate tools everything I'm reading says you control reverse engineering etc. using XML files. If you're telling me I don't need to hand write them I'll have to take a look at the Eclipse tools more closely. Last time I looked (last year) these tools were very new and not quite there but they'd already discontinued the old tools.

      --
      These posts express my own personal views, not those of my employer
    12. Re:Simplicity is key by Serveert · · Score: 1

      That's a trivial example for the SQL. Note that if you'd written that in HQL, you'd have to re-write to normal SQL. Want a more solid example? Try writing HQL that does a group by using an aggregate function (like sum). It's fine to do in SQL, but in HQL forget it. There are other examples out there but that's one that bit me.

      That bit me as well, so I actually used aggregates in HQL which worked but my brain hurt. But that case for me is a small case so I use native SQL, map those into beans and use the beans in the display. I then query the jdbc result set metadata, stuffing those into corresponding beans. And I have a table of SQL queries used for this system. Eh, big deal, it's just a fraction of the system.

      As for the Hibernate tools everything I'm reading says you control reverse engineering etc. using XML files. If you're telling me I don't need to hand write them I'll have to take a look at the Eclipse tools more closely. Last time I looked (last year) these tools were very new and not quite there but they'd already discontinued the old tools.

      It's an XML file but you can get a list of tables add/remove them from the XML with the mouse, then you can do the same with the type mappings. To use sequences you'll have to break out into XML but it really isnt a big deal IMO. And yes, the hibernate tools plugin only recently, as of around December, became usable.

      --
      2 years and no mod points. Join reddit. Because openness is good.
  47. 5. Performance by tahpot · · Score: 1

    1-4 Address valid points, but each project is different and sometimes the overbearing factor is performance.

    When developing web applications one of the largest bottlenecks can be rendering of templates. I always use clearsilver for templating, it's written in C and orders of magnitude faster than any other template engine I've come across.

    The issue then becomes, which framework uses clearsilver? I didn't find a satisfactory solution using similar criteria as 1-4, so I hacked clearsilver support into cherrypy. I'm sure there's many other solutions out there.

    The basic point is that every project is different, so different criteria should apply to selecting the appropriate framework.

  48. Rock, Paper, Scissors by SnuffySmith · · Score: 1
    Always pick Rock. Rock always wins.

    O...crap....

  49. What you know and what you can afford by clueless666 · · Score: 1

    I look at how the framework matches with the requirements, cost, our knowledge of it, if new howz the learnng curve, ease of use On the app side wxwidgets has been my favorite, but worked quite a bit on python and .NET based on need. Have worked on very few web related projects, Ruby on Rails is miles ahead of others here.

  50. Let the market steer your decisions. by Fisban78 · · Score: 2, Insightful

    As much as i hate to say it I think the market determines what you should use.

    If you are working on a product you have more flexibility to choose your own frame work, but if you are consulting or responding to RFPs then you have to choose a framework that the client is familiar with and comfortable with.

    If you are going to be doing work for government or larger companies they probably already have a lot of time and money invested in a framework, so if you plan on doing work for them you better be able to develop in their framework.

    Marketing also plays a big role, Microsoft, Sun, IBM and the other players spend big money targeting the decision makers in IT. If you decide to go with a framework by one of the big players you can leverage some of the marketing to your advantage.

    If you have a good team of developers the framework isn't as important as you may think, a good team will be able to make a successful project regardless of the framework; so choosing the framework to match the market and your clients is an important decision.

    I recomend that you evalute your potential customers and see what they want then train or hire developer with knowledge of that framework.

  51. I'm starting to sour on frameworks by Jerf · · Score: 5, Insightful
    I've been developing for about ten years now; not as long as some people, but enough to be getting over the ten year hump for competency. As a result, I don't expect that everybody can pick this idea up and run with it, but it might color how you look at the frameworks.

    I'm really starting to sour on frameworks. Libraries, love 'em to pieces. You want to take care of all the bit-bashing in the video card and present me an OpenGL interface, thank you very much. You want to give me a proper 21-st century file abstract like the KDE io-slaves, you have my gratitude. But you start bundling together five or six different technologies, each themselves fairly simple, and give me this unified framework or something, and in short order I'm likely to be cranky. This is especially true for things that are themselves fairly easy, like emitting HTML.

    The problem is two-fold:
    1. The resulting framework is quite often nearly impenetrable to an outsider, so when it's wrong, it's really, really wrong; even an open source framework might be of only dubious value since you're unlikely to be able to unravel all of the pieces in any useful amount of time.
    2. As you add pieces together, the complexity of the whole increases geometrically. (Not "exponentially" as the term is commonly abused.) This can be mitigated by maturity, both of framework or core developer, but that's more rare than you might think. But the thing is, you are very unlikely to need all of the pieces. If the framework does 40 things, at a complexity of 1600, but you only need to use it for 12 things, at a complexity of 144, you're gaining an awful lot of complexity. (The numbers are of course made up, but the idea holds; don't try to over-rationalize the figures.) What's worse, as mentioned in the previous point, you might want to do 3 things that the framework fights you on, and now you're either going to have to give up on those 3 things, make unbelievably ugly hacks to get each of them half-sort-of working, or scale a huge learning curve to fix the framework that you are now significantly invested in, but know effectively nothing about the insides.

    Especially in this age of using more dynamic languages, I'm finding I'm a lot happier taking smaller libraries and tying them together with my own frameworks, which I understand and can make sing and dance in exactly the ways I need them to with only the minimal complexity.

    One important point here is the scale of development. If I'm going to do a three-week project, I'm going to probably go ahead and use a framework. But the larger the project, the larger the team, the more time that geometric price has to come up and bite you in the ass, where you Absolutely, Positively Need this thing the framework can't do, and it has to be done by tomorrow.

    Also depends on your skill level, of course. And one of the cardinal Laws of Programming is that there are no Laws of Programming, only tradeoffs. I don't expect everyone to agree, I'm not pitching this so much as throwing it out as food for thought. Caveat, caveat, caveat.

    I don't do Java, but my guess is that Hibernate, to the extent that it is a framework, is probably a win because it's so mature. But then again, you can also look at it as a really big library, because it sure does seem to play well with a lot of things. I think one of the distinguishing charateristics of a "framework" as I mean it in this post is that it is well-nigh impossible to glue two "frameworks" together, and sometimes even adding the capabilities of an additional library is an exercise in frustration. But the upshot is, I'm finding in practice that I'm a lot happier and more effective in the medium and long term, even on my own projects, with libraries that I tie together myself and not "frameworks".

    While I'm not dogmatic about any particular one of them, the Agile-style development really help with this, and I might not feel this way without their influence. Automated Test (unit tests, usu

    1. Re:I'm starting to sour on frameworks by vyvepe · · Score: 1
      I think one of the distinguishing charateristics of a "framework" as I mean it in this post is that it is well-nigh impossible to glue two "frameworks" together, and sometimes even adding the capabilities of an additional library is an exercise in frustration.

      Frameworks (contrary to librarires) contain the main controlling loop of the future application. So they impose a limit on the architecture. This does not contradict what you are saying though. Since applications do not have more controling loops typically one hardly writes an application with two frameworks.

    2. Re:I'm starting to sour on frameworks by 3seas · · Score: 1

      "Also depends on your skill level, of course. And one of the cardinal Laws of Programming is that there are no Laws of Programming, only tradeoffs"

      Some things are worth trading off (its not a bug, its a feature)...

      When we reach the level of automation that anyone can simply tell the system what they need in a progam, and it spits it out well optimized, then all of these programming methodologies will go the way of the roman numeral system way of doing math.

      Is it going to take all these methodologies to get us there? NOPE!

      Its only going to take a better perspective and application of the fundamental actions involved in programming, like the decimal system over the roman numeral system,

      Its not that far off.

    3. Re:I'm starting to sour on frameworks by goofyheadedpunk · · Score: 1

      Just another five years?

      --

      What if the entire Universe were a chrooted environment with everything symlinked from the host?
    4. Re:I'm starting to sour on frameworks by 3seas · · Score: 1

      Well lets see...

      It took 300 years for the hindu-arabic decimal system to overcome the roman numeral system in acounting.
      It took 350 years for the Catholic Church to exonerate Galelio....

      Maybe if we keep the Roman Catholics out of it...

      Then there are other issues which are more pressing on the need for change.... Software Patents battle...

    5. Re:I'm starting to sour on frameworks by a.d.trick · · Score: 1

      I think you've had too many experiences with poorly written frameworks. A real framework should be designed to automate all the trivial things that you do so that you can get to doing the real work. There are pleanty of poorly done frameworks out there, a few jewels, and plenty in between. When you find something that is good though, you'll know it's good. I just recently fell in love with django, after a year of PHP this thing is increadibly awesome. Sure there are some caveats, mostly related to the fact that it's not 1.0 yet, but the framework free's me from doing all that gritty stuff like form validation and allows me to do work stupidly fast.

      You can recognize truth by it's beauty and simplicity. When you get it right, it is obvious that it is right

      -Richard Feynman

    6. Re:I'm starting to sour on frameworks by hughperkins · · Score: 1

      Agree with everything said here. I'd mod it up if I could, but it's already +5, and anyway I dont have any mod points ;-)

      I'd also go a little further in fact. It's not just that frameworks are bad, but small libraries are much better than overly large ones. Things like ode, tinyxml and lua are great because they are small, easy to build and easy to understand. Certain gui libraries, which will remain nameless, are really a pain to build, even if you just want a few UTF8 or file handling utilies!

    7. Re:I'm starting to sour on frameworks by Doctor+Faustus · · Score: 1

      When we reach the level of automation that anyone can simply tell the system what they need in a progam, and it spits it out well optimized
      That happened in the 1950's, with FORTRAN. Since then, we've been tinkering with the ways to tell the system what we need.

  52. MOD PARENT UP! by Anonymous Coward · · Score: 0

    That was hilarious!!

    Y

  53. Seriously though by arrrrg · · Score: 1

    I think the main reason Lisp isn't popular is it isn't perfectly standardized, and doesn't play well with others. If someone would just fix up the foreign function interface, and add a bad-ass selection of packages (like for Python), all other languages could go suck it. Hell, if you don't like Lisp, you could implement Java in Lisp using a few handfuls of macros, and the end result might even be faster than the JRM (seriously).

    1. Re:Seriously though by Theatetus · · Score: 1
      I think the main reason Lisp isn't popular is it isn't perfectly standardized

      Good point; unfortunately at this point the Lisp community has almost a half-century of legacy code committed to some form of Lisp or another, so standardization will not be coming any time soon. However, read-time conditionals and other read-macros go a long way towards solving this.

      If someone would just fix up the foreign function interface

      UFFI is pretty darn good. It just talks a little better than it listens.

      and add a bad-ass selection of packages

      CCLAN is not as comprehensive as CPAN, I'll grant you, but I'd put it up against gems or python's packages for most areas.

      --
      All's true that is mistrusted
    2. Re:Seriously though by chthon · · Score: 1

      Seriously, and very probably.

      I have written a small benchmark program which does random things strings of random size.

      I implemented this in C and in LISP.

      The LISP code compiled by SBCL has the same speed as the C program, and compiled by CMUCL it is even a little bit faster.

    3. Re:Seriously though by Anonymous Coward · · Score: 0

      Hell, if you don't like Lisp, you could implement Java in Lisp using a few handfuls of macros, and the end result might even be faster than the JRM (seriously).

      You might be able to implement a few of the core language rules of Java with Lisp macros, but the whole language and all its libs?

      As for speed, I don't think you have tried Java lately.

      This is the kind of ignorant stuff that makes me think Lisp fanboys know very little apart from their own language.

    4. Re:Seriously though by Anonymous Coward · · Score: 0

      The fact that you have to shell out more cash than a MSDN Universal subscription to get a Lisp that runs on Windows is also part of the problem. Most of them even charge punitive runtime royalties for redistribution at that. Clisp doesn't hack it, and the SBCL port is seriously not ready for real world use (hell, just look at the broken condition and restarts you get when you enter an unbound symbol at the REPL)

    5. Re:Seriously though by Anonymous Coward · · Score: 0

      This probably means you didn't write your C program very well.

    6. Re:Seriously though by Anonymous Coward · · Score: 0

      Sounds like you might want to take a look at GCL and ECL.

    7. Re:Seriously though by arrrrg · · Score: 1

      I was talking about the Java syntax. Obviously porting the libraries would be a gargantuan task (so maybe I exaggerated there a bit). As far as speed, take a look at this before you start calling me an ignorant fanboy. The CMUCL LISP compiler produces code that is between 1.3 times slower and 90 times faster than Java, with LISP being about 3x faster than Java on average (although obviously your mileage may vary). Who's ignorant now, punk?

  54. Rails - who uses it? by DavidNWelton · · Score: 1

    "As far as ruby on rails... who in the business world uses that?"

    Mostly people who you won't notice until they pass you like you're standing still:-)

    1. Re:Rails - who uses it? by Anonymous Coward · · Score: 0

      Oh look, the jerks on rails are in here! Look out, the fastest prototyping and the biggest mouths in town!

    2. Re:Rails - who uses it? by Anonymous Coward · · Score: 0

      Sure it's a niche market, and yeah I'm a jerk, but I'm making more money programming with Rails then you are with Struts.

  55. Re:What sort of dickhead asks this on slashdot? by Anonymous Coward · · Score: 0

    Even worse:

    Most advice you get on a question like this on slashdot is bad advice...

    Most guys here have no clue what they are talking about...

  56. What is a framework? by SickLittleMonkey · · Score: 4, Informative

    A framework ...

    "... dictates the architecture of your application. It will define the overall structure, its partitioning into classes and objects, the key responsibilities thereof, how the classes and objects collaborate, and the thread of control. A framework predefines these design parameters so that you, the application designer/implementer, can concentrate on your application. The framework captures the design decisions that are common to its application domain."

    Erich Gamma et al., Design Patterns: Elements of Reusable Object-Oriented Software.
    Quoted from Tapestry in Action by Howard Lewis Ship.

    Howard continues: "Frameworks are very useful; instead of your having to start with a clean slate, the design is partially filled in and the path to follow is clear. Many design decisions are already made for you, decisions that leverage the combined experience of the frameworks' authors and users."

    And that's why when weighing up JSF or Struts, I chose ... Tapestry!

    --
    main() {1;} // zen app
  57. Re:Let me tell you about this better web technolog by moonbender · · Score: 2, Funny

    So are perls...

    --
    Switch back to Slashdot's D1 system.
  58. What most people use is... by mrjb · · Score: 1

    ... what has worked for them before, on similar projects. Which may not always be the best solution, but it is usually the one that will get them up to speed in the least amount of time.

    --
    Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
  59. Some Years Later... by dusty123 · · Score: 1

    I always wonder what will happen with all these bright shining frameworks in some years?
    If I rely on such a framework for my application and my application should last for - let's say - 5 years, it may well be that development and support for this framework has died out by this time.

    And it may happen that you need to port your applications to a never hardware, a newer operating system and - maybe - to a newer version of the underlying programming language (such as Java). You may think that 5 years are a long time and there is probably no application that lasts longer - but you forget that applications are evolving and parts of your code may exist for many, many years.

    For instance, there is still need for COBOL programmers that have to maintain/port old code for applications that are 15 years old. I wonder from where I'm going to get Java-Struts or JSP programmers in 15 years from now?

    I would recommend to choose open-source frameworks/libraries, as you at least have the possibility to fix things by yourself if the support for the framework is gone.

    I'm really curious if these frameworks are cost-effective in the long run.

  60. Not a fan of frameworks by stuffduff · · Score: 1
    Guess I'm just too old school. Usually there is both a direct and specific task to accomplish and a minimum amount of code that will do it. For me it is unattractive to munge an elegant representation of the task so that it will fit within the constraints of a framework. When I first got into Zope I wanted to express everything in products and DTML or TAL, but I ended up putting almost everything in external methods in Python, because it was so much more direct. Then I started doing minimal imports or just digging what I needed out of modules and in-lining it. There's no more and no less code than is needed to do the job and almost zero risk of something getting broken as the supporting code changes. Within any good code a framework of sorts will usually develop of its own accord. But it's properties are specific to the task at hand. Over generalized frameworks are very easy to use, but I've never seen one that was flexible enough lend itself to self-minimilization. Take the time to step through the machine code that one of these beasties generates and see how much of it is actually performing your assigned task. It will quickly become clear that most of those cycles are there for the framework's benefit, not to do the work that needs to be done.

    I think that all this eye candy, IDE's, frameworks, etc. are more of a hindrance than a help. They certainly don't do anything to improve programmer's skills either. I see people start thinking in terms of their tools (when all you have is a hammer everything looks like a nail) and pretty soon they can generate 10,000 lines of code in 10 minutes, but can't add feature X because the framework doesn't support it and they can't even find where in the generated code to begin to modify it to try and accomplish the task. The pity of it is that there's usually a really direct way to do what is necessary, that will run faster, accomplish more with less resources, and improve maintainability. But it may not be as easy to a novice programmer who realizes that with the framework they only have to write 5 lines of code and name two objects. He doesn't care that it takes a lot more resources, or that he can no longer actually determine what is and isn't needed to do the job, because he can't even think that way any more.

    I'd like to see political correctness removed from programming and let's bring the computer science back into it. It would be much more advantageous if we started mastering the algorithms and the science behind them than to keep arguing about who's gui widget is 'cooler' to use.

    Now where did I put that fire suit ...

    --
    "Can there be a Klein bottle that is an efficient and effective beer pitcher?"
    1. Re:Not a fan of frameworks by easter1916 · · Score: 1

      You are my hero. Sick to death of GUI jockeys who couldn't code with a simple text editor if their lives depended on it.

  61. Valuable for prototyping by Peter+(Professor)+Fo · · Score: 1

    Back when dinosaurs ruled the earth I used a thing called Clarion (MS DOS) which was fantastic for running up database applications quickly to show to the user what was possible. In fact one of these lasted 15 years! (The oldest thing in the office by far except the people.)

    I'm currently trying to find a framework that lets me bash in a few schemas, press a button and hey-presto we have a starting point for discussion where the user can see why I've been 'getting everything back to front' as they see it 'cos I have the vision and they have blinkers.

    Trying to find an industrial strength framework that actually works (for me) out of the box is taking a lot of time.

    Being of the Old School I'm not too happy with the relative opaqueness of application generators. If I was to commit to developing a real app using a framework then I'd need to spend a lot of time finding out how it really works. At this stage in their evolution I'll postpone that investment for about a year. My criteria are (1)Robustness (2)Portability (3)Good docs (4)Tweakability.

  62. Your not up to date with the hype. by Qbertino · · Score: 1

    Sorry, Pal, but you're not up to date.
    Rails is soooo last season. Get a life!
    django is what's on.

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:Your not up to date with the hype. by Anonymous Coward · · Score: 0

      Poor imitation if you ask me...

  63. Crossing the chasm by Anonymous Coward · · Score: 0
    Crossing the chasm is a book about product positioning in the IT market. Unless the concrete product you are looking for is already a standard, you incur in the risk they get abandoned or superseded by other, no matter how technically good it is.

    This blog entry by Ignacio Coloma tells a little bit about the subject. You should diversify risk, and get some frameworks that are bleeding edge of technology, but not all of them. The percentage of risk you can afford is up to you, but keep near the majority if you want to be safe.

  64. community by __aahlyu4518 · · Score: 1

    Look at the community, are newbies treated as human beings or as filth that shouldn't bother the LEET people. Is there a forum, a wiki, mailing-list... and how active are they? And is documentation updated regularly and more or less in sync with the latest version.

  65. Hamlets by Anonymous Coward · · Score: 0

    I wrote this small-footprint servlet-based content creation framework for an internal project at IBM Research. The framework is easy-to-understand and easy-to-use. You can download the library from

    http://www.alphaworks.ibm.com/tech/hamlets

    Articles can be found on IBM developerWorks:

    Introducing Hamlets: http://www-128.ibm.com/developerworks/web/library/ wa-hamlets/
    Programming Hamlets: http://www-128.ibm.com/developerworks/edu/wa-dw-wa -hamletprg-i.html
    Implementing Hamlets: http://www-128.ibm.com/developerworks/web/library/ wa-hamlets3/

  66. I like Cocoa by bgspence · · Score: 1

    It's a great cross platform library for iBook, PowerBook, MacBook, iMac, the mini, Power Mac, and every other significant system I can think of.

    1. Re:I like Cocoa by stivi · · Score: 1

      Moreover, if you take care about stuff you use in Cocoa, you can deploy on multiple platforms by using GNUstep - cross-platform set of frameworks that have Cocoa compatible core. Works on Linux, BSD and MS Windows too... So you are not tied to OS X only.

      --
      First they ignore you, then they laugh at you, then they fight you, then you win.
  67. I first look at the website. by Qbertino · · Score: 1

    I first look at the website. If it looks like crap, I'm away.
    This may sound silly - and it is funny, I admit - but there's a serious end to it.

    If the people in charge don't have what it takes to build a website that doesn't look like someone did doo-doo on my screen, chances are their framework and documentation is a pile of half-backed bits and pieces. This is usually true on a larger scale. This rule doesn't apply to non-oss tools though.

    When it get's into the details I look at language used, databases supported and the general liveness of the community and friendliness towards new users. Widespread usage is a criteria aswell when builing for now and future customers. Example: Because PHP is used everywhere, I'm willing to make a tradeoff against Python, even though I think Python is some much better as a PL. For most cases that is. In a way, dynamic languages are sort of frameworks themselves.

    --
    We suffer more in our imagination than in reality. - Seneca
  68. Hamlets by LEEPS · · Score: 1

    I wrote this small-footprint servlet-based content creation framework for an internal project at IBM Research. The framework is easy-to-understand and easy-to-use. You can download the library from

    http://www.alphaworks.ibm.com/tech/hamlets

    Articles can be found on IBM developerWorks:

    Introducing Hamlets: http://www-128.ibm.com/developerworks/web/library/ wa-hamlets/
    Programming Hamlets: http://www-128.ibm.com/developerworks/edu/wa-dw-wa -hamletprg-i.html
    Implementing Hamlets: http://www-128.ibm.com/developerworks/web/library/ wa-hamlets3/

  69. You might have a long wait by DavidNWelton · · Score: 1

    You might have a long wait if you wait for "the current gods to be superceded"... you could still be happily employed as a Cobol programmer thinking in those terms. Which isn't a bad thing, but it's not my cup of tea.

    Due to the economics of programming languages, once something (Cobol, C++, Java) gets entrenched, it's just not going to disappear overnight.

    Something like Ruby on Rails will see its market share grow primarily for new projects, where, if it is successful, it will comprise a larger and larger portion of them over time. Cobol isn't gone, but you don't see many brand new projects launched in it.

    And, let's face it, it's very new, so of course you're not going to see banks running on it right now... duh:-)

    1. Re:You might have a long wait by bloodredsun · · Score: 1

      of course you're not going to see banks running on it right now... duh:-)

      You might be suprised. I work at a tier one investment bank and they are surprisingly flexible in their approach to new technologies if it will save them money. For small projects such as informational microsites, we have a certain amount of freedom, especially for prototypes. This is why we are currently using Cocoon from jakarta for one project (Verdict - awesomely flexible but a little slow) which is certainly not a standard platform. In this environment, RoR hasn't made the cut yet and I'm not sure that the "Convention over Configuration" aspect of it will work for larger projects where a certain amount of fine tuning is required.

      Of course for the core business stuff, stability is the number one and they will throw more money than you can believe at a problem to solve it.

    2. Re:You might have a long wait by DavidNWelton · · Score: 1

      Interesting...

      I think that 'convention over configuration' is more about "good defaults" rather than "not possible to do it any other way", although I don't know Rails well enough to be sure at this point. The idea being that you *can* configure stuff if you need to, but that most of the time you shouldn't have to - you only do it when it's necessary for the 'fine tuning'.

      That's my philosophy, at least.

  70. use as little as you absolutely need by root-a-begger · · Score: 1

    If you stuck using a language which suffers from lack of high-level concurrency, fault tolerance and distribution built in, then you have to use many different frameworks to make up for this and you're back to the original post which could be restated "How do I choose a framework to support a language which lacks high level mechanisms for concurrency, fault-tolerance and distribution?"
    I'll explain my position...
    I am a framework programmer in OO technologies for the last 15+ years. I've built frameworks and frameworks for frameworks. Although I take a fond interest in the many good frameworks out there, I am no longer in the framework business and am in the position of choosing a framework for my application needs. I'm building Web 2.0 type web apps for large user base (whatever that means to you).

    Here's what I've decided from looking back at my own frameworks and using many others:
    1 - Most application frameworks do two things: a) provide a declarative model for your app and b) encapsulate concurrency issues. The declarative model ensures your app programmers stick to the application domain and not the intricacies of how for example the MVC interactions work. Encapsulating concurrency issues (either in the O/R or the UI frameworks) keeps your app programmers from shooting themselves and each other in the foot over concurrency which is always tough to get correct.
    2 - The other things that frameworks do well is distribution and fault tolerance. We find that there seems to be a separation in the framework world where declarative and concurrency issues get handled in the application frameworks and fault tolerance and distribution tasks get delivered in the form of application servers / containers.

    When I started looking for a framework for my web apps, I looked hard at these four issues: declarative app model, concurrency, fault tolerance, and distribution.
    At some point in my search, I stumbled upon erlang where I found that concurrency, fault tolerance and distribution were handled at the language level (or at least deeply and consistently embedded in the VM and libraries).
    This left only a declarative framework for providing a high-level structure for my apps. This in turn means my "framework" needs are very small and simple.

    Some other posts today mention that deficiencies in the language are the reason for needing so much framework infrastructure. I have to mostly agree with this position...I have not found any other language solution that removes 3 out of the 4 framework jobs as well as I can in erlang.

    If you are stuck with a mainstream language choice, then I would suggest other criteria in picking a framework: The DRY approach of rubyonrails produces much more maintainable framework solutions than the Java approach which has large communities of vendors working on separate frameworks which produce overlap and pattern nuance.

    good luck,

    1. Re:use as little as you absolutely need by LEEPS · · Score: 1

      I find the separation of content and presentation the most important aspect of a framework. Then comes simplicity; I don't want to spend months to learn the framework. And last, I don't want anything that hides the foundation underneath. With these three requirements in mind, I rolled my own framework: Hamlets. You find it here:

      http://www.alphaworks.ibm.com/tech/hamlets

      Rene

  71. JBoss by Dr.+Max+E.+Ville · · Score: 1

    I recently installed JBoss 4 with EJB3, and played with it a little bit. And it produced a jaw-droping "keeewl" effect on me, that I didn't experience since I discovered c++. (Granted, I never worked with anything like this before.) With ejb3 annotations, it's dead simple to code, and it can really DO STUFF. Sure, it can be a bitch to get hello world running in 5 minutes, but once you break the ice, it's beautiful. I'm looking forward to doing something for real with it.

  72. Frameworks ? Hate'em. by ratatask · · Score: 1

    ''Why I hate frameworks'' is a fun and good read. Reflects my experience too with these frameworks that's suppsoed to make things easier for you. Now, they have alot of easy to do stuff, it's just that about 95% of that is a total waste of time, doesn't help you with your ultimate solution, and you'll have to do it over again for the almost-compatible release due next month.

  73. Here is how programmers did by the+grace+of+R'hllor · · Score: 2, Interesting

    A discussion for development language and framework for a relatively simple client application was raging, with the main contenders being Java, C#.NET and C++. Everyone had already come up with pros and cons of each of these, but no end to the deadlock came.

    Until a lone coder, sick at the lack of progress on this front, turned up with version 0.1 in the language of his choice.

    I hope we're not going to regret this :)

  74. A Vision About This by rubypossum · · Score: 2, Interesting
    As a long time Unix/Linux programmer I've used a lot of software frameworks. Everything from web based frameworks such as Ruby on Rails, JSF, Zope and PageKit (my favorite.) To desktop application frameworks/toolkits like wxWidgets (wxPerl and native c++), AWT, GTK#/GTK+/Guile, QT, VB.NET/Visual Studio.NET and FLTK.

    As I've begun writing applications for a living I've gradually been looking for a easy easy easy method of application development. Something that is truly RAD. For desktop applications I've settled on an old Amiga BASIC language and cross platform application framework called PureBASIC that's been ported for Linux, Windows and Mac OS X. However for web toolkits I still haven't found that "magic bullet" that makes things truly and absolutely simple.

    One of the things I like about PureBasic is that it is a high level language that is at the same time compiled directly to machine code (with optional inline assembly language.) The resulting binaries are usually under 60k. Despite this it has a full featured Widget set that uses native widgets (and a GUI designer on Windows.) I kinda wish there was a (cross platform) web development language/framework out that was like this. You could write your application in it and you could instantly compile it to:

    1. A apache 1.x or 2.x compatible .so/.dll module.
    2. A ISAPI module for IIS.
    3. A CGI application.

    The language would have built in session managment. You could get arguments as built in variables that would be created automagically by the compiler based on the target. This idea really would work.

    I was so enthused by this prospect that I pulled out flex and bison and began writing a grammar for the language. Of course, I had just finished arithmetic operations and string functions (and began reading the ISAPI documentation) when I realized the magnatude of what I was beginning. I just don't have time to get this done in the next year (even compiling to C and using MinGW/gcc/GC as I was planning.)

    But if it WAS finished it would truly be an awesome tool. You might even build in a template toolkit, possibly even a content management system. And the whole application would be a tinly little 60k .so file or cgi. And it wouldn't care which! You could have your cake and eat it too. It would be both RAD and memory/CPU efficient. Why such a tool hasn't been created I do not know but it would be cool. Am I missing something? Maybe there is such a thing already?
    --
    I have a theory that the truth is never told during the nine-to-five hours. - Hunter S. Thompson
    1. Re:A Vision About This by quantum+bit · · Score: 1

      But if it WAS finished it would truly be an awesome tool. You might even build in a template toolkit, possibly even a content management system. And the whole application would be a tinly little 60k .so file or cgi. And it wouldn't care which! You could have your cake and eat it too. It would be both RAD and memory/CPU efficient. Why such a tool hasn't been created I do not know but it would be cool. Am I missing something? Maybe there is such a thing already?

      Well, if you ever get around to such a beast, my feature request would be to also support running as a persistant FastCGI or SCGI daemon, and support either TCP/IP or UNIX domain socket connection to Apache (or any other web server that supports scgi). Shouldn't be too different from the ISAPI or Apache module modes, as in all those cases you have to be careful to clean everthing up and not leak memory.

      For some reason I've been really liking Python for web development lately. I'm not sure why, maybe because it's just so damn flexible. Definitely not the most efficient approach though. I keep threatening to write an scgi wrapper that does page templates in straight C for speed, and supports running python code for page logic (it would keep an interpreter "hot" in memory to avoid startup costs). Maybe plug in optimized C modules for common tasks like session management.

    2. Re:A Vision About This by Anonymous Coward · · Score: 0
  75. Lovecraft metaphor by smittyoneeach · · Score: 2, Funny

    Ruby on Rails sets off like a Cimmerian for conquest.
    Struts and Hibernate get consumed by an error trace of Cthulhuian proportions, if the supply of live sacrifices runs out, which it eventually shall, doomed one.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  76. Emacs by Liquid+Len · · Score: 1

    Why, Emacs, of course !

  77. Re:Fuck struts. by masklinn · · Score: 1

    How's parent offtopic? He should be modded insightful

    --
    "The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
  78. Ah, my pet peeve :) by archeopterix · · Score: 2, Insightful
    The parent post made an important point, worth highlighting. Limitations. The "things that the framework fights you on" (quote from parent). Not what the framework just does not do, but what it effectively _prevents_ you from doing, or at least makes you jump through hoops to achieve it.

    Singletons in the J2EE framework. Compare this monstrosity with a sigleton implementation in any sane language, including the simple, non-J2EE Java. Mind you, I'm not bashing J2EE here , the singleton issue is the price you pay for scalability.

    Using Java for GUI on Windows. Most GUI libraries built on top of the winapi at least let you get the window handle from their widget implementations so that you can get straight through to win32 and do your hacking there (possibly fkcuing up the lib, since it doesn't know about your updates, but that's another issue :) ). This is not the case with Java - if a winapi function is not reflected in the Java API, you are pretty much screwed.

    Persistence frameworks. "You won't have to write a single SQL statement for the rest of your life!". But if the statement generated by the framework is suboptimal, then guess what? Yup, screwed again.

    Good luck choosing your framework. I hope I scared you to death, because, in my opinion you cannot be too scared of frameworks :)

    1. Re:Ah, my pet peeve :) by LarsWestergren · · Score: 1

      Most GUI libraries built on top of the winapi at least let you get the window handle from their widget implementations so that you can get straight through to win32 and do your hacking there (possibly fkcuing up the lib, since it doesn't know about your updates, but that's another issue :) ). This is not the case with Java

      Perhaps because platform independence is one of the goals of Java, and so they can't assume that everyone is running Windows?

      --

      Being bitter is drinking poison and hoping someone else will die

    2. Re:Ah, my pet peeve :) by archeopterix · · Score: 1
      Perhaps because platform independence is one of the goals of Java, and so they can't assume that everyone is running Windows?
      Yup, but this implies that their goals have to be my goals and their way of reaching the goals has to be my way - this is exactly the downside of chosing a platform. Perhaps I want to write my own platform-specific hacks? Perhaps I don't want the lowest common cross-platform denominator that Java provides?

      I do cross-platform programming with wxWidgets, a library that still lets me access the underlying OS widgets. I get both platform independence and ability to work around an occasional platform-specific wxWidgets kludge. This of course doesn't mean that my app works only on windows.

    3. Re:Ah, my pet peeve :) by scheme · · Score: 1
      Singletons in the J2EE framework. Compare this monstrosity [theserverside.com] with a sigleton implementation in any sane language, including the simple, non-J2EE Java. Mind you, I'm not bashing J2EE here , the singleton issue is the price you pay for scalability.

      I think you misunderstand what the singleton is trying to do. The J2EE singleton is trying to make sure only a single instance is running even if a cluster of machines is running the application logic. This means that the singleton needs to instantiate once in the cluster which is slightly different and more difficult then making sure your singleton only instantiates once in your application instance.

      --
      "When you sit with a nice girl for two hours, it seems like two minutes. When you sit on a hot stove for two minutes, it
  79. Re:Let me tell you about this better web technolog by Darkangael · · Score: 1

    But all coders work on java beans, or at least a caffeinated product closely related to them :P

  80. Don't use JSF by thomasrynne · · Score: 1

    In the hope that I can save someone, please spread the word that when choosing frameworks a good tip is to not use JSF.
    I'm using it at work and it's making my life a misery.

    I think the general case is: don't use a framework which isn't designed by one person.

    1. Re:Don't use JSF by LEEPS · · Score: 1

      I couldn't agree more. I looked at JSF before I invented Hamlets. In 10 minutes you are up and running!
      You can get it here.

      http://www.alphaworks.ibm.com/tech/hamlets

  81. Drupal... after Struts, Hibernate, and WebWork by Robert+Douglass · · Score: 1

    I had two full time jobs in a row using Struts/Hibernate, and I kept telling my colleagues that Spring/Hibernate or WebWork/Hibernate would be better/easier/faster/cleaner. They didn't listen. Then I discovered Drupal and realized that it was all the framework I ever needed and quit my job. I've never looked back.

  82. GNUstep cross-platform frameworks by stivi · · Score: 1
    GNUstep is a cross-platform, object-oriented set of frameworks for desktop application development. The set of frameworks, based on OpenStep (now Cocoa), enables developers to rapidly build sophisticated software by employing a large library of reusable software components. GNUstep is already used in production environments at several organizations.

    You can write your applications that would be portable to:
    • Linux
    • OS X (almost nativeli, with native OS X Cocoa frameworks, no need for GNUstep in some/most of the cases)
    • BSD
    • MS Windows


    Basic GNUstep/OpenStep/Cocoa frameworks are FoundationKit and AppKit.

    More information about GNUstep frameworks can be found on the project wiki pages.
    --
    First they ignore you, then they laugh at you, then they fight you, then you win.
  83. how to decide on your framework by hachete · · Score: 1
    1. Coding Issues:
    Will it provide the services you need?
    How much of the framework are you willing to write?
    How hard is it to integrate your code with the framework?
    How easy is it to seperate your code from the framework?
    If the chosen framework goes tits-up, how easy will it be to change frameworks?
    Does it support the platforms you use?
    Would you want to monkey with the framework?
    Would you want to contribute your changes to the framework?


    2. Support
    How many other people outside the company use the framework?
    Does the framework installation and usage overhead match the size of the team(s) who get to use the framework internally?
    When was the last release?
    How often is it released?
    How active is the dev/users list?
    Is there a book on it?
    Are there any big names/companies actively supporting your chosen framework? Do you trust those names/companies?

    --
    Patriotism is a virtue of the vicious
  84. Twisted Python by Anonymous Coward · · Score: 0

    For Python, the Twisted framework provides many of the things that applications commonly need.

    Far, far too many things to list, which is why some newcomers get confused trying to take in too much at once.

    Focus on what you need to do a sepecific job!

    http://twistedmatrix.com/

  85. Re:Let me tell you about this better web technolog by Anonymous Coward · · Score: 0

    If you want to be the sexiest man in a geek's party, go for ColdFusion.

  86. The ninety seconds rule by sita · · Score: 1

    When all other constraints are equal, the ninety second rule is a good test. If I get the general idea how to work with a framework in a minute and a half, it's probably ok. I use this rule mostly for my hobby projects, since the main constraint is time. In professional projects I can usually allocate more time to learn about different frameworks (but the result is often similar to the ninety second rule, so the remaining two days spent on evaluating something is just so that I can say something more intelligent than "Well, I didn't get the other one, from the front page of their web site").

    At university there was another post-grad who, at her dissertation, got the question why she used one Monte Carlo (simulation program) over the other. "Well", she said, "the first ones didn't return my mails in a timely manner, and the other ones, well, they are Chinese" (she is Chinese herself). There's a lot to it. Clarity is key.

  87. Libraries are better than Frameworks by mythz · · Score: 2, Interesting

    An important insight that is highlighted in the parent article is that Libraries are better than frameworks. The distinction being that Libraries contains code that you don't have to write where frameworks dictate the way you write code.

    As a Java programmer for many years I can relate to the above article, there is simply too many frameworks, config files and overhead required in proportion to the size of most projects.

    In the end your choice should be about *overall productivity* which is different to everyone. Note you should compare it to the task at hand, some frameworks are simply better for certain tasks. This should include time required to learn a new framework/language/platform, development, maintenance, deployment, installation, setup, updates, etc.

    I personally prefer framework/platforms that allow me to write the minimum amount of code, as any code I write is code I have to maintain. My weapons of choice for Web 2.0 projects are:
    - Mono (Open Source / Crossplatform / Feature Complete )
    - Boo (statically typed, Python-like language, with built-in templating so you don't need another framework to compensate for it)
    - IHttpHandler (Lighter weight alternative to ASP.NET pages, akin to Java Servlets)
    - JQuery (A must for Javascript apps - borrows the best features from Prototype, Behaviour, Moo.fx and more)

    I was seriously considering RoR, but ended up going with Boo as it is statically typed, faster and has access to the .NET Framework libraries.

  88. You need to have the right lens... by gte910h · · Score: 1

    You really need to be looking for some more criteria when you're evaluating them. In addition to the criteria you mentioned, here are others

    Adaptability
    Efficency
    Availability of tools (IDEs, Graphical Contruction Wizards, Component analyzers, memory analyzers, profilers)
    Robustness (Error checking, logging, etc)
    Support Availability
    Quickness of Dev Time
    Maintainability
    Platform Compatability
    License Compatability with Product Business Goals (Talk with the Mgmt/Marketing folks about this in terms of which each allows)
    Cost to Procure Experienced Developers for the Framework (*Even if you don't think you'll need to hire)
    Experience with underlying technology

        If you define all of those in writting, you will have many fewer choices, and you'll sound like you know why you're recommending your final choice when you do.

                          --Michael

    --
    Want to see every step I took to start my company? http://www.rowdylabs.com/blogs/pitchtothegods
  89. Realize it's a business by Anonymous Coward · · Score: 0

    Suppress your "ooh shiny" tendencies and gushing like a schoolgirl (" is like drinking unicorn giggles!") and address the following:

    1. If it's replacing an existing tool or technology, identify how (flash-cut, gradual, new implementation only, etc.) and with what expected effort the transition will occur.

    2. Discuss the drawbacks as well... if it's worthwhile, they will seem manageable when compared to the expected benefits.

    3. If it's a "live" or "production" environment, show that some level of stability and maturity has been reached. Also, adoption by other major players help quell concerns that this is just the next flavor of the month.

  90. Using XSL by lujan99 · · Score: 1

    My clients usually decide if Java or .NET.
    I prefer framework based on XML/XSLT, and to be able to easily move code between Java and C#.
    I build Xml with code and do presentation using the same XSL in both platforms.

    1. Re:Using XSL by phaggood · · Score: 1

      I prefer framework based on XML/XSLT

      Names, man, we need names!

  91. As few frameworks as possible, but not fewer. by roman_mir · · Score: 1

    You have to use the minimum of frameworks that are necessary to implement the given business requirements but you should not use fewer than necessary because then you are not implementing business requirements, then you are implementing the frameworks.

    As a contractor I have seen the good the bad and the fugly. Normally the fugly means no frameworks at all, so they write their own application servers, it's terrible for the project (how are you still doing, ADP mutualfunds, after almost 2 years of that bullshit?) But it's great fot the development shop (how are you still doing, Intelliware, still building custom app servers?) As a contractor who is brought in the very beginning of a project like that into a political game, but cares about all his projects to succeed, I must voice the concerns of these approaches but it doesn't necessarily go well with the powers in place who have money and/or to gain on design defficiencies.

    On the other hand I have seen the terrible misuse of frameworks and various 'technologies' within the same project, to the point, where the team is prevented from solving the business problems and are forced to solve the framework problems (hello Boomboat, writing for Bell Canada, how is that Vitria to BEA Weblogic to the various data-sources thing going? Implementation of business rules still takes forever and ever and you are still forced into the distributed transaction mode for no reason and still have those terrible troubles with the connectors?)

    In any case, the design dictates the necessity for the frameworks. The frameworks that you chose must be known to the developers within the company, so that they could support them. The best way to do this is to make sure that all projects within the same business space use the same frameworks, so that there is plenty of knowledge within the firm to support any old and new development without running into resource problems.

  92. Serious company has... by Anonymous Coward · · Score: 0

    OMG, The Symbionese Liberation Army!

    Several of them!

  93. Re:Let me tell you about this better web technolog by Double_Dark · · Score: 1

    All kidding aside, ColdFusion has a number of different frameworks available for development such as Mach-II, Fusebox, and Model Glue.

  94. Screencast on various frameworks by YetAnotherName · · Score: 1
  95. Re:Let me tell you about this better web technolog by Anonymous Coward · · Score: 0

    But with pythons you'll get all the freaky ladies!

  96. The one I know? by alta · · Score: 1

    I tend to use the language I know. I tried using a language I didn't know once. I installed a few new servers, put some software on them, was told it would all be magical. I waited for it to grow, or program itself. It didn't. I was dissapointed so I ended up doing the project in PHP and will never try anything else again.

    --
    Do not meddle in the affairs of sysadmins, for they are subtle, and quick to anger.
  97. My criteria by Jesus_666 · · Score: 1

    I'm a CS student and at my university we have a compulsory two-semester software project that students are supposed to participate in during their third and fourth semesters. The course tries to emulate the business world: The customer tells the world that he wants a software that does X (with requirements like "should work like, you know, Amazon"), then the project groups have to work out offers, specifications etc. during the first semester and implement the thing during the second. In the end one software is actually used in the real world. (Isn't it great how students can be abused for cheap labor?)
    What our "customer" wants is reengineering of an online biblioraphy getting about a hundred unique hits a month. In Java. Use of an appropriate framework recommended.

    I'm the one in charge with deciding on which technologies my group uses (except for the mandatory stuff like MySQL). I would have went with Struts (because the university offered a free Struts course), but I decided against it (because I forgot about the course until it was over, also Struts is quite heavy according to my research). I compared JSF against Tapestry; JSF will probably become an industry standard, while Tapestry will not, but Tapestry is easier to deploy than JSF. Since we don't care about industry standards and need to implement the whole thing with about one man-month of work (spread across seven people, including the earning phase) JSF is out of the picture. In the end I settled on Tapestry for the following reasons:

    - We don't care about industry standards so it doesn't matter whether Tapestry will become one.
    - We have neither the time nor the resources to use anything that introduces more complexity than absolutely necessary, flexibility be damned. The project is already stealing enough time from the other courses.
    - Tapestry can be integrated into random HTML or XML just by adding a few parameters to a tag. There is no Java knowledge necessary to integrate the Tapestry parameters into a new layout. This is good since it allows people to play around with the HTML layout with no knowledge of the program whatsoever, as long as they just put the Tapestry stuff in the right place.

    In the real world I'd probably last for about five minutes if I kept making such decisins, but then again I'm a student. I'm supposed to make bad decisions.

    --
    USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
  98. Wrong question :-) by Anonymous+Brave+Guy · · Score: 1

    We all seem to be skipping the question "Do you need to use a framework?"

    If the answer to that is yes -- which, IMHO, is far from clear in many cases -- then you must be able to answer the questions "Why?" and more specifically "What benefits can using a framework offer?"

    When you've answered those questions, you know what you're looking for, and that is how you choose your framework.

    If you can't give good answers to those questions, perhaps using a framework isn't the right choice for your project.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  99. You Answer It by 4of12 · · Score: 1

    This kind of a question is very difficult to answer. First, are you and your group reasonably familiar with the project you have ahead of you and what kinds of problems you must surmount to successfully complete the project? Get a few people in your that have the most experience with projects like you hope to tackle with the new framework. Second, it's clear you don't personally have much experience with using any of the particular frameworks, or you wouldn't be asking the question in the first place. But are there a couple people in your organization, new people, perhaps without the domain experience of others but with a familiarity with using particular frameworks in other contexts. Get all those people in the same room and have them figure out how each framework could contribute and hinder the goals of your project. It's that easy, and that hard.

    --
    "Provided by the management for your protection."
  100. frameworks becomes jails by kpharmer · · Score: 0

    One more point:

    Frameworks are great when they provide 100% of your needs and very little of your non-needs.

    But when they fail to provide a few of your requirements they become a jail. You just might not be able to do something at all, and will certainly spend much more time on implementation than if you didn't have a framework at all.

    The agile manifesto (www.agilemanifesto.org) does a great job of stating that we need to be adaptive and resiliant rather than try to anticipate the future:
          Responding to change over following a plan

    And this directly conflicts with frameworks in my opinion - since a framework could be a great fit today, but a tight enclosure tomorrow.

  101. The best way to choose by gru3hunt3r · · Score: 1

    I always choose the one with the coolest name, that's probably the best.
    If both projects have cool names, then the one with the most bitchen logo.
    If both projects have cool names, and bitchen logos, then I usually try and use both since that will make my program even more cool and bitchen.

  102. Marketing by phlamingo · · Score: 1

    The main problem I have run into with frameworks is that they make easy things easier and hard things harder.

    What I mean is this: Choose any framework, and find an enthusiast. He will show you in ten minutes how to create a simple, single-form application accessing a single table in a database (or, the equivalent for whatever domain the framework addresses.) He will say, "See how easy it is to produce a working application with this whiz-bang modern marvel?

    And, he is right, up to a point. If all you want to do is seventy-five duplicates of that trivial case, you can be done in a week. But, real-world applications quickly spider out into areas that your framework of choice doesn't handle.

    These dark corners usually come in several flavors: the framework designer didn't anticipate them, the interface to external resources is limited, they don't match the framework's model, or they are genuinely hard problems.

    At this point, you have to use the framework's hooks and escapes to finish the project, and that is where most of them break down and stop helping you. In fact, at that point, most of them become a royal pain in the buttocks.

    So, to my thinking, the most important feature of a framework is how easily it lets me use a different paradigm to code things not covered by its internal architecture. That may include calling code written in other languages, accessing external resources, breaking a problem into parallel threads or processes, etc.

    --
    I had forgotten how much cooler teenagers look when they are smoking. Oh, wait ...
  103. You're doomed. by nick_danger · · Score: 1
    Frameworks are doomed, and here's why:

    You're trying to build a strategy to migrate from .NET 1.1 to .NET 2.0. In a couple of years time, MS will have introduced .NET 2.1, or .NET 3.0 or whatever, and you'll be back to square one, migrating your application into a new framework. You have to ask yourself, What business am I in? Are you in the business of delivering solutions to customer problems, or are you in the business of applying another vendor's solution to the problem they created?

    All of the popular frameworks are immature. They'll be completely different in a couple of years, and if you're lucky -- I mean really lucky -- they'll incorporate some sort of backward compatibility to let you leverage your existing code base. I wouldn't count on that though.

    Of course, all that being said, if your principle work product is billable hours, then by all means go with the latest and greatest framework. The customer gets some great whiz-bang that they can pay another chunk of big money to upgrade in a few years. I mean, have you tried to hire an entry-level ASP programmer lately?

    1. Re:You're doomed. by Dr.+Sp0ng · · Score: 1

      All of the popular frameworks are immature. They'll be completely different in a couple of years, and if you're lucky -- I mean really lucky -- they'll incorporate some sort of backward compatibility to let you leverage your existing code base. I wouldn't count on that though.

      One of the original design considerations of .NET was to eliminate DLL versioning problems, so an application can specify "use the 1.1 version of this framework, and the 2.0 version of that framework." You can also have any number of different versions of the same framework installed (and in use) at the same time, if you so desire. There's no "backwards compatibility" necessary when the application specifies which version it wants to link to.

  104. who cares? by the0ther · · Score: 0

    this proliferation of frameworks has made java a piece of crap. that and setting classpaths.

  105. But it's so easy! by drew · · Score: 1

    I don't understand why there are so many commments here to the tune of "Well, it depends on what your writing," "It depends on the skills of your team," "It depends on what the phase of the moon is when you start your project," etc. What a bunch of hogwash.

    It's incredibly simple, and I'll tell you how. Go to Google. Search for "framework". Through a few keywords related to the product that you intend to write if you want, but it's not really necessary. Adding a preferred language to the search may help. (I prefer the Google defalt- English.) Print out the results- at least the first page, and if you want, add the second and third pages for completeness. Skim through the results and cross out any that are clearly not relevant to your search. Cut out the rest and put them in a hat / jar / bowl / whatever. Then...

    Take the hat / jar / bowl / whatever to the paper shredder and run them all through one at a time. Now, get back to work and quit wasting time on such a stupid question.

    --
    If I don't put anything here, will anyone recognize me anymore?
  106. unfortunately by paulsomm · · Score: 1

    I've noticed too many places decide this based on "what does Microsoft bundle in with Windows?", where Windows itself is chosen because "hey it looks like my Pee-Cee!"

  107. How does a framework cope with restrictions? by ChaosDiscord · · Score: 1

    In many ways a framework's restrictions (often in the form of implicit assumptions) and how the framework treat you when you decide to break a restriction is more important than the feature set provided. If you're building a project of any significant complexity, you're eventually going to bump into a wall in your framework. You want to do something one way, but the framework doesn't. Some frameworks will totally block you from rolling your own solution; the framework can't cope with code not strongly tied into the framework. Some frameworks will let you roll your old solutions, but yank most or all of the tools you've been leveraging in the framework. From experience, using a powerful framework's Model-View-Controller system, then having to reimplement significant portions from scratch because the framework can't cope with the user interface you want to provide is a nightmare.

  108. Is Hybernate a framework? by glwtta · · Score: 1

    I was under the impression it was an ORM layer. Seems that by definition you can't have more than one framework in your project.

    --
    sic transit gloria mundi
  109. Re:Let me tell you about this better web technolog by Anonymous Coward · · Score: 0

    Indeed. Not only are there multiple procedural (Fusebox) and OOP (Model-Glue, Mach-II) frameworks for ColdFusion to handle the UI controller layer of an app, there is a massive push within CF to create supporting frameworks that can work with any of them. These include:

    Reactor: a dynamic inline database abstraction API which reads database metadata and automatically generates Record, Data Access Object, and Table Data Gateway objects on the fly, complete with validation and caching.

    Tartan: a command-driven service framework which allows the model-layer components to respond to requests from multiple types of controllers, including HTML controllers like Fusebox or Model-Glue, as well as Flash Remoting calls or AJAX requests.

    ColdSpring: a dependency-injection framework that manages the creation, caching, and dependencies between all of your model components. Includes aspect-oriented programming capabilities as a bonus.

    I've never quite figured out why Slashdot readers are so hostile to CF, which is an extremely powerful and capable platform when used correctly. You laugh at MySpace (which actually runs on BlueDragon.NET not ColdFusion Server, do your homework people) and yes its performance sucks, but this is because the system was designed and created in a horrible way, not because of the underlying platform. Some great things are happening in the CF world if any of you would take the time to break out of your stereotyped mindsets and bother to actually learn something. For example, the power of dynamic typing ("duck typing") and "mixins" that Ruby has popularized is fully implementable in ColdFusion because it too is dynamically typed.

    Just because you heard once that ColdFusion sucked 6 years ago or because a popular site that ran on ColdFusion like MySpace sucks, doesn't mean you can't open your mind a little and objectively evaluate the technology based on its merits.

  110. I use ATK for its development speed by GariDigital.com · · Score: 1

    A few years ago I wrote a few large apps for which I had to write my own code that generated code to speed up the process :) After going through that experience and making the decision to migrate to PHP I was not to rewrite my tools to write code all over again, so I started looking for PHP frameworks that were similar to the tools I had written on the other language. Achievo Toolkit (ATK) from http://www.achievo.org/atk http://www.achievo.org/atk came very close to what I was looking for and I haven't seen anything like it, yet. I make my framework decisions based on usability, efficiency, learning curve and not based on hype. In my opinion, hype, does not always translates into great quality.

  111. Re:Let me tell you about this better web technolog by rainman_bc · · Score: 1

    ColdFusion, yup thats right. You can have your struts and scaffold, my website is power by cold fusion.

    ColdFusion, by itself isn't a framework. It's a language. A framework for coldfusion is Fusebox

    Fusebox somewhat introduces the concept of MVC to Coldfusion. A framework is supposed to reduce code duplication, and make stuff like CRUD a lot easier.

    --
    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
  112. Python... I mean PHP... no, wait... Python by Keen+Anthony · · Score: 1

    For web apps I think Python. Then I try to do what I can with mod_python. Then the fear and loathing people have of Apache 2 kicks in. Then I have to move on to Cherry Py, Twisted, etc. etc. Then I get frustrated and go with PHP although all I want is mod_python 3.

    For the desktop, Win32 API if I have to do Windows. I simply was never able to adapt to MFC. My code has the benefit of running on every Win32 platform without fail and with better performance.

    On the Mac I just go with Cocoa because I'm "not supposed" to use Carbon anymore. SDL/Open GL for games and graphics. Never DirectX (although I like it a lot). Sometimes Allegro. Maybe one day ClanLib out of curiosity.

  113. Re:Let me tell you about this better web technolog by pixel.jonah · · Score: 1

    Not that this is the subject, but I'd recommend Mach-II. It has event-based implicit invocation and loose-coupling. ;) It's been working well for me.

  114. "Perceived"... and the Red Light District by mike.montagne · · Score: 1


    > A major precondition for the success of a software framework is [its] acceptance...

    Not necessarily. The financial success of less desirable, less innovative, less secure, and/or less refined technologies is typically propelled by market sway, however ill founded; and of course, the prevailing sway is not necessarily motivated by fairness, or pure rules of better development. As we look back on the last 25 years for instance, it is obvious that principal market sway has ascribed to a circuitous route which is neither financially or programmatically advantageous to the market masses.

    COM/ActiveX is a good example. Is the interface based inter-object communication technique of COM/ActiveX inherently superior to the pointer-based (but COM compliant) techniques of Delphi? On the contrary, ActiveX/COM is inherently an open door to insecurity; requires many times the processing cycles; imposes many times the resource footprint; consumes far more resources at run time... and is designed only to do things we may better do without. You can "improve" upon or elaborate the techniques of COM all you want, but there is no real security (even though the very purpose of COM is inter-object communication in circumstances which *require* security), and COM can *never* be as efficient as pointers, because pointers *are* the most simple, optimal technique.

    Yet, on into the many "futures" of COM, the greater masses have been drawn.

    An endless serial of further technologies/frameworks are based on COM and its succeeding generations. But what do they provide us? They likewise can only be open doors to security breaches, and yet beyond this impermissible fault, they provide us an inherently inferior way to do something we may not want to do at all (if a consistent purpose is *best* technique). The infrastructure makes that way redundantly complicated, because many steps and skills are required to accomplish the very same purpose which can be accomplished, straight-forward, with pointers. *Then*, a "framework" implements the requisite skills (so that those without the requisite skills can implement the technology -- with this "framework" *therefore* inherently *involving* methods of administrating the many redundant layers of complexity)... and the result therefore is still something which can be no more simple (or better) than using pointers.

    Adherents will argue that we need COM methods of interaction for DLLs and other infrastructures. But do SQL servers deploy COM? Hardly so. Why? Because optimal approaches are vital.

    Undaunted by insecurity, or by inherently inferior resource consumption, reliability, and processing speed... COM adherents (of many "frameworks") build COM/ActiveX objects into web pages and applications, as if here too we require (or benefit from) COM functionality. But COM is neither more efficient in a DLL than optimized techniques of addressing objects and passing arguments; and what good software design always requires is method-specific optimization -- stripped, direct ways of accomplishing objectives.

    .NET is another example. While .NET supports the latest COM implementations and forfeits real pointers altogether, how will .NET truly prove to provide real security (or any kind of functionality which can otherwise be provided more simply, *with* real security); and how will .NET applications prove to accomplish anything which should be accomplished, better than good practice in the technologies .NET supposably supersedes? On the contrary, we can observe that an obligatory aspect of Windows security is disablement of ActiveX, and that a vast proliferation of .NET applications running over The net (without any truly *proven* prescription for true security) may (therefore!) prove to be a huge (next) security disaster, of proportions equal to the very proliferation of such applications.

    The formula for enduring sof

  115. Cross-platform by wysiwia · · Score: 0

    It amazes me that anybody still can mention win32, etc these days. IMO it should now be obvious for everybody that to develop anything decent cross-platform is the way to go. In the web development there's AJAX/PHP/Java/... and in the binary application programming there is wxWidgets/QT/... .

    See also http://wyoguide.sf.net/papers/Cross-platform.html

    O. Wyss

    --
    See http://wyoguide.sf.net/papers/Cross-platform.html
  116. My Vision about cross-platform development by wysiwia · · Score: 0

    As I've begun writing applications for a living I've gradually been looking for a easy easy easy method of application development. Something that is truly RAD. For desktop applications I've settled on an old Amiga BASIC language and cross platform application framework called PureBASIC that's been ported for Linux, Windows and Mac OS X. However for web toolkits I still haven't found that "magic bullet" that makes things truly and absolutely simple.



    I've settled with wxWidgets/wyoGuide (see http://wyoguide.sf.net/ ) for binary applications development and now start delving into the Dojo-toolkit (see http://dojotoolkit.org/) plus PHP for web development. These are the best ways for me to do cross-platform development.



    O. Wyss


    --
    See http://wyoguide.sf.net/papers/Cross-platform.html
  117. Priority 1 of 1 by juliuspc · · Score: 1

    Priority list: #1 of 1. #1 - Quality, accessible, comprehensive documentation.

  118. The economics of frameworks... by dinamica · · Score: 1

    Cost of framework is not an issue these days, since most popular frameworks are open source and free, but hidden costs are a different matter that deserve careful consideration. An approach that favors traditional solutions, or trendy ones, may end with a very labor-intensive production system, which is costly. Many people that use the highly popular J2EE frameworks are writing unnecessary code, because these frameworks mandate so, and this code will require maintenance, and that represents costs too. Also adds to the hidden costs the fact that the programmer is writing code that could have been avoided with a different approach. Beyond the [hidden] cost factor, I would also note these ones: * Stability, performance. * Easy of use, which affects productivity. A QuickStart path is also highly desirable, it leads to rapid achievement, which facilitates framework adoption. People like to achieve results quickly, framework and library developers use to forget that fact too often. * Good and abundant documentation. This is crucial to sustain adoption by new comers with minimal costs. How fast can you put a new programmer into the production line, with the expected quality? that affects productivity, and keeps away or closer to the diminishing returns area. * Availability of high quality sample code. You need templates to start producing quickly * A commercial-friendly license, like LGPL. * Beware of framework dependencies on 3rd party components with unfriendly licences. Best regards, Martin Cordova www.martincordova.com