12 votes

Web app frameworks to consider?

I come from a background of classic ASP/ASP.NET programming. I had about fifteen years of professional experience with it and completely stopped all programming around 2008.

Now, I want to pick up web programming again. I looked at and tinkered with Python, .Net Core, as well as others.

I was, particularly, impressed with Ruby on Rails and have completed about thirty hours of training through The Odin Project.

Before I continue on with ROR, I just wondered if I may have missed something out there that could turn out to be a 'better' option for me.

What are your thoughts on ROR? Would you recommend some other framework? Why or why not?

8 comments

  1. Deimos
    Link
    I think it really depends which language you want to write. There are good options available in most of the major languages, but they vary in capabilities. Ruby on Rails is certainly a solid...

    I think it really depends which language you want to write. There are good options available in most of the major languages, but they vary in capabilities. Ruby on Rails is certainly a solid choice, so if you're interested in it and have already started getting into it, I think it's totally reasonable to just continue. But as a couple other options:

    If you're interested in Python, the main choices are probably between Django (which comes with almost everything included), and Flask (which comes with almost nothing included). They're both great in different ways. Tildes uses Pyramid, which is a bit more in the middle—it's more complex to use, but includes a lot of nice capabilities and extensibility.

    If you're looking for something more "interesting" (and picking based on "interesting" isn't necessarily a good choice if you just want to get things done), I see a lot of positive talk about Phoenix, which uses the Elixir language, an extension of Erlang.

    15 votes
  2. [4]
    Adys
    Link
    Django (Python), Ruby on Rails (Ruby) and Laravel (PHP) are the three major web frameworks right now. You'll be quickly up to speed on any of them. Personally, I'd say Python has more of a future...

    Django (Python), Ruby on Rails (Ruby) and Laravel (PHP) are the three major web frameworks right now. You'll be quickly up to speed on any of them.

    Personally, I'd say Python has more of a future than Ruby given its massive uptake in the ML/AI community; so if you're just starting I'd recommend Django over ROR.

    TypeScript has a brighter future than either of them, but it also doesn't have any decent web framework support.

    8 votes
    1. [3]
      stu2b50
      Link Parent
      Does node not count as a significant web framework? Regardless of what you think of it many major companies, from Goldman Sachs to Netflix and Uber use node in production.

      Does node not count as a significant web framework? Regardless of what you think of it many major companies, from Goldman Sachs to Netflix and Uber use node in production.

      5 votes
      1. Adys
        Link Parent
        Node does not count as a web framework any more than uwsgi does. I use node plenty but I dislike the JS community's fascination with calling it a web framework on the level of Django. Same for...

        Node does not count as a web framework any more than uwsgi does.

        I use node plenty but I dislike the JS community's fascination with calling it a web framework on the level of Django. Same for Express, which sits slightly higher.

        6 votes
      2. emdash
        Link Parent
        I'd say Node totally counts a significant web framework; and I can only see it continue exploding in popularity as so many more companies choose to go the serverless/lambda route with a...

        I'd say Node totally counts a significant web framework; and I can only see it continue exploding in popularity as so many more companies choose to go the serverless/lambda route with a microservice-oriented architecture; which Node lends itself very well to.

        3 votes
  3. reese
    Link
    I'm surprised you didn't naturally gravitate to .NET Core first and foremost, given your ASP background, but that probably speaks to a natural inclination for learning. You probably also want to...

    I'm surprised you didn't naturally gravitate to .NET Core first and foremost, given your ASP background, but that probably speaks to a natural inclination for learning. You probably also want to do something different.

    I have no experience with Ruby nor ROR. I quite liked .NET Core, the Spring Framework, and even Go's standard libraries in my past life as a corporate backend monkey. Node is okay too, but I've found its libraries and documentation to be lacking. In spite of my experience, I'm not keen on making any recommendation other than to encourage you to continue using ROR if you prefer it.

    Architecturally, I believe I have something to say, because it generally has bearing on the frameworks you might use. So, initially I built MVC, REST-based services. Later I moved on to strictly segregating frontends and backends, using HATEOAS for (internal) API discoverability. That stopped when I found out about GraphQL, which is not only superior for the discoverability, but queryability as well. I would recommend incorporating GraphQL in your stack for the sheer ease it affords you from a client-side and QA perspective. Today there is no API design hill I would rather die on than defending the honor of GraphQL. I suggested that my wife try it, and ever since she's been building services with it at her job—and loving it.

    6 votes
  4. emdash
    Link
    .NET Core is pretty nice. The configurable inversion of control service container and dependency-injection into controllers is much nicer and cleaner than working with ASP.NET of ye' olde days,...

    .NET Core is pretty nice. The configurable inversion of control service container and dependency-injection into controllers is much nicer and cleaner than working with ASP.NET of ye' olde days, and the dotnet CLI tool is dare I say, even good. There's a lot of verbosey confusing MS stuff still, like their approaches to authentication and authorization, the documentation is still less good than competitors, but it's come into its own with .NET Core 2 and 3. Like @reese I'm surprised you didn't just spring for that.

    I've gotten back into the groove of developing with Laravel 6, which is my preferred framework at the moment. PHP 7.x is a significant step forward from what the language used to be, and the coverage of developer documentation, framework flexibility, and package support for services (Stripe, Elastic, Algolia, AWS, etc etc) is up there with the very best. You won't find yourself struggling at all.

    I sadly don't have the time to spend all day learning new frameworks, but I'd be looking in the direction of Go and Rust for what's upcoming, too.

    6 votes
  5. skybrian
    Link
    There are a lot of choices and I haven't kept up with them. But here is a basic question to consider: how much code do you want to run in the browser versus on the web server? There are frameworks...

    There are a lot of choices and I haven't kept up with them. But here is a basic question to consider: how much code do you want to run in the browser versus on the web server? There are frameworks that handle either one or the other, and there are also frameworks that do both. Some people like to use different languages in the browser versus on the server, and some like to use the same language and share some common code between them.

    Some people like to structure things so that the web app makes RPC calls to servers and the web app itself is just a static website (with a lot of generated JavaScript). If you do that, GraphQL seems to be a modern way to structure the RPC layer.

    On the other hand, if your static website doesn't contain any interesting text then search engines aren't going to find much of anything to index, so there is something to be said for minimizing the amount of JavaScript if your website is primarily about providing publicly accessible text. But if the website is hidden behind a login then it doesn't matter.

    5 votes