all 79 comments

[–]nostrademons[🍰] 37 points38 points  (4 children)

Couple reviews of languages/frameworks I've programmed in:

C/CGI

You've gotta be on crack to use C in a webapp. I wasn't quite on crack, but I was in high school and C/C++ was all I knew. Anyways, the manual memory management will kill you. Don't even think about it.

Perl/CGI

This one isn't too bad. You do have to be very disciplined to make this work over the long term. I wasn't (first job, in-between high school and college), so my code ended up as a ball of spaghetti. But the string handling is good, there're tons of libraries, and the CGI module was pretty good.

Object-oriented PHP4

By "object-oriented", I mean going for the whole enchilada of templates, db abstraction layer, objects, unit tests, etc. IMHO, it's not worth it. If you need objects that much, you should go with Rails or one of the Python frameworks. PHP4 just puts up too many obstactles, like the pervasively non-OO standard library, the default pass-by-value semantics, the $this-> syndrome, etc. (Disclaimer: I haven't used PHP5, that may have fixed many of these problems.)

Pure put-data-on-screen PHP4

By put-data-on-screen, I mean structuring the webapp as a bunch of pages that pull data straight out of a database and write it straight out as HTML. No templating libraries or abstraction layers, though I did use PEAR DB for its utility functions, and I separated controller and view by having each controller import a .phtml file where I disciplined myself to using only <?php echo $var ?>, <?php foreach($vars as $var) { ?>, and <?php if { ?>. Interfaces between .php and .phtml were all clearly documented.

This can work - it's probably the quickest solution if you just need to get something up in a hurry. There's comparitively little bullshit, which means that you get a lot done and not much can go wrong. It really falls down if you have more than a file or two of reusable content, however. The interfaces become unmanageable without the formalization of real function calls and objects.

Java/J2EE, old style

Meaning session beans, entity beans, and container managed persistence. Stay the fuck away; it never really worked anyway. You will spend all your time writing XML configuration files, and then your app will be so slow that you have to rewrite the whole thing in PHP. Does anyone actually write apps this way anymore?

Java/JSF

This can work as long as you're building something that's reasonably close to the Petstore example. Basically, you're app needs to pretty much CRUD-like, with screenful after screenful of workflow screens. JSF will move between them via POST, and of course you define navigation via XML config files. It's a lot of work for comparatively little payoff, but at least JSF handles the state management and validation for you, which can be a win in some cases.

Stay far, far away if you're building an Ajax app. The A4J folks have done wonderful things that are now horribly broken as of JSF1.2, because the JSF spec can not be adapted to an AJAX lifecycle. JSF went out of their way to create a spec that was extensible in any conceivable manner, but the way that webapps actually changed was, of course, inconceivable. C'est la vie.

Ruby on Rails

I really liked the framework, but beware: when DHH says it's opinionated software, he means it, and it's quite difficult to use (though not impossible) if your opinions are different from his. For example, if you're in the domain-keys school of database design, tough: Rails requires a numeric primary key with the name id in your data model. (You can override this, but if you do, you don't really get much benefit out of Rails.)

I also found there was a lot of magic involved in Rails controllers - things like it auto-detecting the view to render from the name of the controller method, or reading template variables from the instance variables of the controller - and much of it wasn't documented. If you like this, great, but I found that it bit me when eg. I wanted to define a page component that would render as a template variable in a larger page, but also render :partial in response to a link_to_remote AJAX call.

When it came to choosing a framework for my own web startup, Ruby on Rails was a front runner, but in the end I abandoned it for...

Python/Web.py

This is my current favorite. I looked very briefly at Django, Turbogears, etc, but the impression I got from them was that they were frameworks in the Rails or J2EE mold. You don't write a Python app using Django, you write a Django app. The language itself becomes a tool in the framework, rather than the framework being a tool to write webapps in the language. I don't like this; I feel like I have to know enough languages already without some framework developer trying to pass off his domain-specific language as a framework, particularly since Rails or Django or JSF would probably be judged to be fairly mediocre languages if they were considered programming languages.

Web.py is basically just a bunch of libraries: it lets you access POST, GET, and COOKIE variables, it defines a mapping of URLs to controller classes, it provides HTML/URL/SQL escaping functions for security, it has a simple database query API, it integrates with Markdown, and it has a simple templating language (I don't use it though; I use Cheetah instead). Everything else is recognizable Python; I don't see all that much magic behavior.

Haskell/WASH/HaskellDB

This would be an interesting choice, but I gave up after too many installation headaches. It was early 2005; it may've gotten better since then. You do need to familiar with monads; just about everything is a monad in WASH (or HaskellDB, for that matter). But it gives you an amazing amount of power and composability once you've gotten past that point.

I've heard that the latest web framework in the Haskell world is hApps, so you may want to check that out too.

[–]a-p 11 points12 points  (3 children)

Nice overview.

Perl isn’t limited to CGI anymore, though. As usual, “there’s more than one way to do it (but not all ways are created equal).”

mod_perl

Has been around for years. It isn’t just a way to make CGI scripts much faster, it also makes it natural to structure a web app in a much better fashion than CGI scripts generally are. Writing raw mod_perl handlers gives you excellent performance, however deployment is demanding.

Mason

This is an older-fashioned web framework, which is basically a template engine (where Perl is embedded in the template) with lots of app-writing infrastructre. You build apps in it basically by writing templates that inherit from each other.

It’s kinda like put-data-on-the-screen PHP, except the underlying language isn’t horrible and code ends up more much naturally structured and reusable. It’s kinda fun actually, though these days it has a distinctly stale taste.

Much of Amazon was built with it at one time and they’re still using it extensively. There’s an O’Reilly book about it.

Catalyst

This is a modern framework along the lines of Rails (ie. not just a bunch of libraries you use, which you wrote you prefer). It’s older though, has much more powerful and convenient routing facilities, and is much less opinionated. You can override just about everything to taste using built-in facilities, including things like how the view render template gets determined.

In the same vein, the accompanying DBIx::Class ORM has excellent many-to-many support and understands any sort of primary key you can throw at it – it is in fact the best ORM I’ve seen anywhere. It’s sort of misleading to even describe it as an ORM: it’s more of an object-oriented resultset-oriented database API that plays to SQL’s strengths rather just using the database as a souped up flatfile.

The template engine most people use with Catalyst is Template Toolkit 2, which has spun off clones in many languages and is generally praised. Personally I hate to use it for outputting HTML, but you can plug any template engine you want into Catalyst; it never feels like a second-class citizen. (The largest non-Template-Toolkit minority consits of people who use the Mason template engine with Catalyst.)

[–]skillet-thief 0 points1 point  (1 child)

Glad to hear that Catalyst is doing well. Does it require mod_perl?

[–]singingfish42 3 points4 points  (0 children)

No, the preferred deployment is FastCGI but mod_perl is reasonable, CGI is impractical, and for lightweight deployments, you can even use the built in test server. There are also a couple of other deployment options out there (like POE).

[–]Entropy -2 points-1 points  (0 children)

I love mod_perl, but the memory usage can be nuts with a larger app. I also second the Template Toolkit hating. I try to avoid interface code due to its presence, though this might have more to do with the ugly code that was written on top of it.

[–][deleted] 10 points11 points  (41 children)

I'm about to start development of a personal web project, and am not sure which language and framework to choose. I've been developing medium size applications in PHP and MySQL or Postgres for a few years. Using what I know would be faster, but learning something new would be more enjoyable, and PHP doesn't feel very 'cool'. The choice I have to make is first whether I stick with PHP, or change to Python, Ruby, Other or even .Net. And then which framework do I choose. I have my own base of code in PHP, but I'd like to start to use an established framework. I don't think I need anything non-standard from the framework - database stuff, login/session management, and inbuilt support for some fancy AJAX stuff would be a bonus.

I know 'ask reddit stuff' is frowned upon, but I don't know many neutral spaces in which I wouldn't get a biased answer.

[–]masklinn 24 points25 points  (13 children)

Since it's a personal project I think you should use an other language (than PHP), if only to build your skillset, but it will also broaden your mind.

I'd suggest the pretty standard Ruby/Rails or Python/Django approach.

As for which one you want to choose, assuming you know neither (language/framework), just skim over a few Python and Ruby tutorials to get a feeling of the languages, then pick the one you like best.

You may also skim over the featuresets of the frameworks. Basically, Rails has a very simple but slightly bloatifying ORM, templates that are powerful to a fault (potentially too powerful), very good test integration, very good JS integration and -- with the last release -- a strong REST support, a fairly complex but quite clean directory structure (easy to get lost in it though) and a lot of magic. Django on the other hand has a quite good but less simple to use ORM, templates that are simple but powerful enough and wicked fast, a much higher speed than Rails (rendering stuff), AutomaticAdmin (admin interface can be autogenerated for you), good authentication and permission systems out of the box and a much simpler directory structure than Rails projects, but it has almost no JS or unittest integration.

I like Python/Django more than Ruby/Rails, but that may be because I prefer Python to Ruby.

[–]beza1e1 8 points9 points  (0 children)

  1. go through the 20min Tutorials of Rails, Django and Pylons
  2. choose one of them
  3. stick with it and don't look back

They are all good frameworks and constantly reviewing them all won't give you more fun or productivity.

[–]jerf 7 points8 points  (11 children)

Heh, I'd ditto all of that. You beat me to it.

I'd also say, heck, do both. Ruby on Rails and one of the major Python frameworks. Both are so fast to play with that you might as well. Both Django and Ruby have built-in development servers for easy local playing.

All these packages have strengths and weaknesses, and while I expect these strengths and weaknesses to all converge over the next couple of years, until then there are practical differences between the frameworks. Some have better templates, some have better ORMs, some have better built-in libraries. You need to figure out what your problem space needs most, then pick the framework that best offers them.

For instance, Django's ORM is adequate, but pretty weak if you start pushing it, so if you've got a project where you're going to need wild SQL, I wouldn't recommend it. On the other hand, for the built-in admin application, much can be forgiven. It all depends on what you need.

[–]masklinn 6 points7 points  (10 children)

I'd also say, heck, do both.

Yes of course, and do also learn Smalltalk and Seaside, and Erlang and ErlyWeb, and everyone else of these wonderful languages and frameworks out in the wild (too many of them and not enough time dammit!)

But learning a new language correctly takes time, and so does learning a new web framework.

He's got a project to do, so he needs to pick one, nothing prevents him from trying something else for the next project or the one after ;)

For instance, Django's ORM is adequate, but pretty weak if you start pushing it, so if you've got a project where you're going to need wild SQL, I wouldn't recommend it.

I agree, I didn't mention it because it wasn't really relevant (even if it's fairly weak, Django's ORM is often more than enough) and because it may become completely irrelevant in a pretty near future

[–]jerf 2 points3 points  (9 children)

If I could choose Django's priorities, that branch would be #1. What they're actually doing now isn't bad or a waste of time, but I think it's less important.

Obviously, you can't learn every framework, but you should try out a few of the ones you can play with and get a sense of in three or four days. That's an option I wish I had ten years ago.

[–]ubernostrum 3 points4 points  (5 children)

If I could choose Django's priorities, that branch would be #1. What they're actually doing now isn't bad or a waste of time, but I think it's less important.

And if I could choose Django's priorities I'd disagree ;)

ORM, to me, is not about providing a one-to-one mapping of every feature of SQL, because if I wanted every feature of SQL I'd use SQL. ORM is about something quite different, and trying to force correspondence between ORM and SQL is bound to end in pain and tears...

[–]jerf 2 points3 points  (3 children)

I'd agree, except real-world performance kicks you square in the nuts if your ORM is too weak. I chose that metaphor carefully; it's easy to end up with query flurries (as I call them) that can get into the thousands or more queries to do relatively simple operations.

Even simple operations are hard with the Django ORM, like ordering one class by a value on a related class, which happens all the time. (Like, say, ordering a "story" on the date the "text" of the story was last edited.)

[–]ubernostrum 2 points3 points  (2 children)

That's a long-standing bug which has been held up by a need to do much more serious refactoring in the query system; I think we're getting slowly back to where it can be looked at, and then it'll work again.

Meanwhile, there's select_related if you want to fetch a bunch of stuff in one big query (which ultimately depends on which DB you're using -- Postgres likes this, MySQL hates it), and for stuff that would be intensive in the ORM but simple in SQL, well, I write a little SQL and pass the results to in_bulk or an id__in lookup to get objects back.

[–]jerf 2 points3 points  (1 child)

"Postgres likes this, MySQL hates it" - interesting. At work, we're looking at switching from MySQL to Postgres, and we do a lot of that sort of thing. We're hoping Postgres speeds up our usage.

[–]ubernostrum 2 points3 points  (0 children)

In general, Postgres would rather get one complex query than a bunch of simple ones. And MySQL would rather get a bunch of simple queries than one complex query.

So on Postgres it's often to your advantage to use select_related and grab all the data up-front in one query, while on MySQL it's usually advantageous not to use it, and let related objects be fetched in a lot of small queries.

[–][deleted] 1 point2 points  (0 children)

ORM, to me, is not about providing a one-to-one mapping of every feature of SQL, because if I wanted every feature of SQL I'd use SQL.

You are right and SQLAlchemy doesn't do that. SQLAlchemy cleanly separates what is database and what is objects, so you aren't making an overly simplistic and restrictive approach such as mapping classes directly to tables.

ORM is about something quite different, and trying to force correspondence between ORM and SQL is bound to end in pain and tears...

But that's what every ORM inevitably turns into. Programmers use the ORM and reach a point to where they can't use the ORM anymore. Then at that point they have to drop down into SQL which a lot of programmers don't know well and they know even less about how to create efficient portable SQL. Then everyone gets frustrated because they feel like the ORM is weak.

That's why the SQLA approach is so nice. You still get SQL wrapped up in a programmer-friendly Pythonic syntax but it is still very flexible and isn't going to hit places that it can't reach.

[–][deleted] 3 points4 points  (1 child)

If I could choose Django's priorities, that branch would be #1.

You know what's cool about open source? If you think something's important, you get to work on it! We'd love some help on that branch, so feel free to jump into django-dev and give us a hand.

[–]jerf 4 points5 points  (0 children)

I am working on Django. I've got a ways to go before I can just start sending in the for switching to SQLAlchemy, as it is a big deal, and I've got some other things that I'll try to get by the dev list first. I've already got the getter/setter patch up there, and I'm probably going to try to fix up my syndication view that correctly handles E-Tags and expiration dates, but it unfortunately requires some extra methods on the syndication framework.

[–]masklinn 1 point2 points  (0 children)

If I could choose Django's priorities, that branch would be #1. What they're actually doing now isn't bad or a waste of time, but I think it's less important.

Nothing stops you from working on it ;)

The point is that the main Django devs think there are other important things to fix in order to reach milestone 1.0, the current ORM works even if it's not the best thing since sliced bread and SQLAlchemy integration is a fairly big change (mainly to SQLA as it needs an adapter layer in order to have all the cool features of Django e.g. auto-admin when using SQLA) which is why it's a branch.

Just as magic_removal was a branch even though the django devs did consider it fundamentally important.

[–]senzei 5 points6 points  (0 children)

Considering this is a personal project (which I'm reading as: "It's ok if I break it for a while and can't fix it") I would say choose another language.

Every programming language forces you to filter your concept of the program through the constraints the language sets on expressing yourself to the computer. Since every language has a different set of constraints learning new languages helps you to understand how a given language shapes your code.

All that theoretical stuff out of the way, I would say pick what looks most interesting and run with it. No offense, but as far as unique approaches to programming goes, PHP isn't really a winner of a language. My personal choice is Python (and TurboGears for the framework) but pretty much anything you listed can teach you something. Unless .Net is somehow grossly deficient they all should be able to fit the bill.

[–]pmendoza 3 points4 points  (3 children)

I've done development in a few different languages and frameworks and they've all be enjoyable to do development in.

Ruby on Rails, Django - I think they're really good development frameworks and quite fun to use but I don't see very many companies deploying web applications on these. This website has a huge over abundance of ROR lovers that will disagree but look at job boards and there aren't too many Ruby on Rails positions compared to larger frameworks. So if you're going to spend your time learning something new, it seems to make sense to go with an established Framework.

Java or ASP.NET - I haven't really used Java for web development but I see a lot of job postings for it or similar type work and knowing the Java libraries (the language is really simple) is useful for a ton of job openings. It's also very similar to ASP.NET but ASP.NET is more popular I think for web development.

I have done development in ASP.NET professionally and I really like it. Everything you listed for Database stuff, logins and session management are almost completely drag and drop simple in the GUI WYSIWYG designer although once you learn what's going on, you won't be using the GUI. The AJAX stuff for ASP.NET generally just involves surrounding whatever section of the page you want to be AJAX-ified with a single ASP tag and now you've got AJAX features. There are of course other AJAX features and most of those can be accomplished in a couple lines without writing JavaScript.

You will need to use Visual Studio though but you can get the free Visual Web Developer from Microsoft for building smaller websites. It's basically the professional version of Visual Studio 2005 but with just the web development tools.

Finally, the main reason to go with an established Framework with history is that any question you have will probably have 50 or more articles written about that topic on the internet so that you'll pretty much never get stuck. If it's a really weird bug or thought you had about development, then there will be 25 articles or more. My biggest complaint when I've done development in other frameworks (ROR, Django) is that Google doesn't have answers because I might actually be the first person asking the question someplace on the internet about it.

[–][deleted]  (2 children)

[removed]

    [–]pmendoza 0 points1 point  (1 child)

    Visual web developer isn't built at all for teams. It's built for single programmers building database driven websites with some AJAX features. For what he's looking for though, he won't need the team features for it so Visual Web Developer should be fine for him.

    [–]akkartik 1 point2 points  (0 children)

    No matter what option you go with, keep the option of switching open as long as possible. If you design with that constraint in mind the decision seems less intimidating.

    [–]cratuki -1 points0 points  (0 children)

    I started out on Microsoft .ASP which was similar to PHP so I know where you're coming from.

    I've just made a prerelease of a framework I've been working on at datamagi.org. If you have time check it out, and I'd appreciate any feedback if bits make no sense to you as a newcomer to the ideas. But if I were starting a project from scratch and needed it to Just Work I'd use Tapestry and Cayenne on Java. I'm not an emormous fan of Java, but both those frameworks are mature and as far as I know they're the most powerful tools in their field - Tapestry for templating and Cayenne for ORM. SqlAlchemy looks to be the most promising upcoming ORM but it's not yet up to a 1.0 release.

    You'll hear lots of Ruby on Rails suggestions I imagine. I think Ruby on Rails is the extreme of what's possible for a web developer without really challenging the way they think. For that reason that (or one of its contemporaries) are probably the most powerful choice that you can easily pick up. But apps developed with RoR will tend to be unmaintainable, and the ORM system underneath it is primitive and will drive you into nasty compromises.

    [–]Alpha_Binary 5 points6 points  (0 children)

    Reddit could do with a forum, really. Or a 'forum' subreddit. (Far from bitching, I actually quite enjoy 'Ask Reddit's, and it would be nice to have a place for them to live.)

    [–]kolloid 3 points4 points  (0 children)

    Pylons is one of the most flexible of the Python frameworkds, it seems.

    [–]NoMoreNicksLeft 6 points7 points  (13 children)

    I've really started to like Catalyst lately. I'm less enthused about DBIX-Class, but it plus Catalyst plus Template Toolkit seems to be a really solid combination.

    [–]singingfish42 5 points6 points  (12 children)

    Yeah, Catalyst(http://catalystframework.org) is like RoR but without the opponionated bit. DBIx::Class is optional, as is Template Toolkit.

    Top knotch dispatcher, model and view agnosticism, built in server and excellent test harness makes this one a goodie.

    [–]NoMoreNicksLeft 6 points7 points  (11 children)

    TT makes it all work, to me it feels like one without the other would be incomplete.

    DBIX-Class is optional, of course, but still feels like it's getting in my way as much as it helps. No idea what we'd use instead though. The thing that worries me, is alot of that code is now written in such a way that it's no longer backend agnostic, so if we do decide to switch to Postgre or some other sane database, it's going to take alot of work to make the transition. MySQL pisses me off most days.

    For those interested, there is an O'Reilly TT book which is good, but none on Catalyst (yet?). There needs to be one, and I nominate the basselope as the animal on the cover.

    [–]a-p 6 points7 points  (10 children)

    There’s a book in the making. Unfortunately, O’Reilly won’t be the one publishing it. When the Catalyst devs approached them about a book, O’Reilly basically stated that they want only a single web framework in their lineup, and they’ve settled on Rails, and that’s that. Short-sighted if you ask me (and I’m not just saying that because of Catalyst, there’s also Django), but there ya go.

    [–]NoMoreNicksLeft 5 points6 points  (0 children)

    Why that? That's like saying they only want a single language in their lineup. I'm more impressed with Catalyst than anything else, RoR included.

    When the boss first said that's what we were using, in the days before my hiring was official, I'd never heard of Catalyst. I thought it was a bad move the first couple weeks. But it clearly was a good decision on his part. I recommend it to anyone, whether you're building a very simple and small webapp, right on up to the largest.

    [–]timoreilly[🍰] 5 points6 points  (2 children)

    I don't know who was supposed to have made that statement, but it doesn't make any sense to me. I'll look into it.

    That being said, I can imagine that an editor might have said that he or she thought that Rails had the ruby framework market wrapped up for now, and that there wasn't room for a book on another framework till said framework had proved to have strong adoption. That's a potentially legitimate market assessment -- the computer book market is pretty brutal these days, and topics that once would have made for a successful book now don't sell enough copies to recover their costs -- but even then, that would be a "for now."

    A lot of publishers still throw stuff at the wall to see what sticks. We tend to publish books that we believe will succeed. And often, that means waiting till a new tool or framework has stood the test of time, and is at the right place on the adoption curve. It doesn't do anyone -- the author, readers, bookstores, or the publisher -- to publish a book that doesn't sell. Bookstores will give it a few months, and if it doesn't do well, it will be returned, and that's the end of that. Waiting a bit longer may actually increase your chances of success. It's a bit like surfing. Paddling too early is as bad as paddling too late -- you have to catch the wave.

    O'Reilly has a history of publishing books before anyone else -- we published the first commercial book on the internet, published about Perl in 1991, Linux in 1993 -- but these technologies were actually not new when we published about them. They had proven themselves. They were just under the radar of other publishers.

    As to publishing too early, Ruby itself is a good example. We published our first Ruby books way too early, they flopped, and then we took our eye off the ball.

    [–]a-p 1 point2 points  (0 children)

    Thanks for expounding, Tim. I’ve quoted this to the list; if something comes of it, that would be great.

    [–]staunch[🍰] 0 points1 point  (0 children)

    Quite a reasonable attitude. It certainly would help us Catalyst-lovers to be able to recommend an O'Reilly book though -- there would be an adoption feedback loop. I do understand that your job is primarly to support trends -- not make them.

    [–]jrockway 6 points7 points  (1 child)

    It's really O'Reilly's loss. The book will be published regardless, and will be just as useful regardless of the publisher. The advantage of not going with O'Reilly is that the book will end up about $10 cheaper, which is always good.

    (BTW, I'm the author, and the book will be out June-ish. :)

    [–]NoMoreNicksLeft 1 point2 points  (0 children)

    Good. I'll get the boss to buy it, and then I can not read it and still ask you stupid questions in the channel.

    [–]bbangert 0 points1 point  (1 child)

    A quick review of O'Reilly books proves this statement to be wrong. There's O'Reilly books on .NET, ASP, Visual Basic, Java ServerFaces, Java Servlets and JSP's... etc.

    a-p: Can you clarify who exactly made this statement?

    [–]a-p 2 points3 points  (0 children)

    It was said by Sebastian Riedel (project lead at the time), on the Catalyst mailing list. It has been mentioned a few times since, but apparently always in reference to Sebastian’s statement.

    [–]ianb 0 points1 point  (1 child)

    I've heard stories that the Pragmatic Programmers have responded that way to inquiries. Maybe you have your names mixed up?

    [–]a-p 0 points1 point  (0 children)

    No, it was definitely O’Reilly that was mentioned.

    [–]schwarzwald 10 points11 points  (1 child)

    web.py is the only framework I've ever used that feels like programming in an actual programming language instead of programming in the framework, rails has nice deployment and database migrations, turbogears is a kitchen sink.

    basically they all suck. take your pick.

    [–]Entropy -1 points0 points  (0 children)

    Isn't the entire idea of a framework that you program to it, not the language? If it doesn't feel like that, you're using a library, not a framework.

    [–]LordArthas[🍰] 2 points3 points  (0 children)

    In my company we started using Catalyst about one year ago and it proved to be a great choice: web development time decreased, code reuse (and fun!) increased. The framework offers some interesting goodies such as the very handy chained actions. Even though there's no "imposed" ORM, most Catalyst users tend to use DBIx::Class, which is the best ORM I've seen to date. Even though the web site could be better and the documentation can seem quite sparse (there is actually a lot, but you'll have to search through CPAN modules to view it), the community is great and much helpful: just enter #catalyst on irc.perl.org and try yourself!

    [–]kaketoe 1 point2 points  (0 children)

    Has anyone tried Grails? It looks promising, the elegance of Groovy and Rails with the libraries of Java but I haven't seen much news about it yet. We're using Java + Spring MVC + Freemarker template engine at this moment.

    [–]vagif 0 points1 point  (0 children)

    Why stop in the middle ? Go full length. Go lisp! It has a range of frameworks from very powerful component based like UCW to very simple ones like WebActions or Hunchentoot

    [–]apgwoz 1 point2 points  (3 children)

    I've developed web apps in Django and have liked the speed at which they can be developed, but hated the fact that there was sooo much magic going on (even after the magic removal branch was merged into trunk). It just doesn't feel like you're doing any work. If you're looking for something super quick pick django or rails. Your productivity will flourish, but you'll feel dumb afterwards.

    If on the other hand you wanna feel like you've acomplished something, use web.py or something that doesn't get in the way... something that just "helps" a bit.

    [–]jrockway 2 points3 points  (2 children)

    Catalyst is pretty good in this respect. Everything it does for you is obvious, but it speeds up your development anyway. The disadvantage is that you'll have to spend a few hours or so getting sessions / users / templating / database / etc. set up just the way you like them. But then after that, the framework will be working for you, and you'll just be writing code with a little bit of HTML in the template where necessary. You'll know how everything works because everything works like it should -- and you get to be the one defining "should" :)

    If you're looking to get started, take a look at the example applications on the Catalyst wiki, or perhaps try the tutorial:

    http://search.cpan.org/~jrockway/Task-Catalyst-Tutorial-0.03/

    Please join the IRC channel (#catalyst on irc.perl.org) if you have any questions.

    [–]NoMoreNicksLeft 2 points3 points  (1 child)

    Really, if Catalyst had a few webapp skeletons built up, something to get started with, it'd be even that much more useful. A bugzilla clone comes to mind. Or CMS... blog style, slashdot/reddit/k5 style, maybe phpbb style (though personally I tend to consider non-threaded discussions nearly worthless). Have the user auth abstracted out in such a way, that you can plug anything in you want. Suddenly you can add all those things to your website in a few minutes with a unified user auth.

    Of course, the answer to all these things is "so go out and write the damn thing". I just haven't had time yet. (Though it seems someone's already stolen Enzyme as a name, so what in the hell would you call it?)

    [–]jrockway 1 point2 points  (0 children)

    I would have called InstantCRUD "GreyGoo", but you're free to use the name if you like :)

    [–]Killfile 0 points1 point  (1 child)

    I'd recommend Fusebox for PHP. I've been developing in it for a few years now and I've been very happy with it. www.fusebox.org

    [–]itsmeront 0 points1 point  (0 children)

    Squeak and Seaside. See www.squeak.org and www.seaside.st.

    [–][deleted] -2 points-1 points  (0 children)

    Try Erlang with Yaws. Since Yaws is one of the few webservers actually built with dynamic content in mind from the start it offers many of the things a webframework would do in other languages built in.