Let’s say we don’t care about the backend<>frontend interconnection we see in most JS frameworks. We just want to program the backend. What would be the language of your choice?

  • Ephera
    link
    fedilink
    2913 days ago

    I feel like you could’ve asked “what’s your favorite language?” and gotten the same responses. Like, it’s Rust for me. I could argue that because Lemmy is written in Rust, there’s already some mature libraries to work off of, but someone else could argue that for e.g. Ruby, too.

  • @nous@programming.dev
    link
    fedilink
    English
    1013 days ago

    Whatever language you chose you might want to also look at the htmx JS library. It lets you write in your html snippets better interactivity without actually needing to write JS. It basically lets you do things like when you click on an element, it can make a request to your server and replace some other element with the contents your server responds with - all with attributes on HTML tags instead of writing JS. This lets you keep all the state on the backend and lets you write more backend logic without only relying on full page refreshes to update small sections of the page.

    For a backend language I would use rust as that is what I am most familiar with now and enjoy using the most. Most languages are adequate at serving backend code though so it is hard to go wrong with anything that you enjoy using. Though with rust I tend to find I have fewer issues when I deploy something as appose to other languages which can cause all sorts of runtime errors as they let you ignore the error paths by default.

  • Dojan
    link
    fedilink
    713 days ago

    C#. Since I’m a .NET developer it’s the stack I’m most familiar with.

    Honestly I kind of like the idea of a front end with as little JS as possible.

  • Empathy [he/him]
    link
    fedilink
    7
    edit-2
    12 days ago

    Rust, because I’m lazy and I want a compiler that helps me out. Performance is a pretty neat bonus.

  • Paradoxvoid
    link
    fedilink
    English
    713 days ago

    If I really hate front end, but still want a lot of the responsiveness of a SPA, I’d have to give ASP.NET Blazor a serious thought.

    It’s largely all back end driven, with the dynamic elements driven via webassembly that pretty much works like black magic.

  • Hazelnoot [she/her]
    link
    fedilink
    English
    511 days ago

    The frontend is HTML only? Then I’d go with C# and ASP.NET Razor pages. Modern language with good DX, performant runtime, and server-side rendering.

  • @Kissaki@programming.dev
    link
    fedilink
    English
    513 days ago

    You’re asking about the backend only, separated from the fronted? The fronted will be HTML only, but independent of the backend anyway?

    Doesn’t that mean you’re introducing another interface and a need for another backend for the HTML frontend generating?

    If it’s independent, why does the frontend intention matter?


    My first choice/exploration would be C#/.NET.

    • @smileyheadOP
      link
      113 days ago

      I just ment that there will be nothing special being done there. Server would just send the result in plan HTML, that would be used and styled as a widget in something else later.

  • Mr. Satan
    link
    fedilink
    513 days ago

    Maybe Go, haven’t messed with it at all and it looks interesting enough to try. Other than that I could do C#, since that’s where I have most experience. Maybe node.js if I would want to suffer a bit.

  • @eric@lemmy.ca
    link
    fedilink
    English
    512 days ago

    Most of my experience is in .NET at work. My professional recommendation is C#, but my personal recommendation is Go. I find Go to be just nicer to code with.

  • @RobotToaster@mander.xyz
    link
    fedilink
    313 days ago

    I’ve considered doing something similar myself, honestly it would come down to which one has the best libraries/frameworks for it.

  • @farcaller@fstab.sh
    link
    fedilink
    311 days ago

    Any language you’re comfortable with is good for that. Ruby, JS, and Go come to mind the first because they all have solid ActivityPub libraries which are going to save you some time on interconnection. Any programming language can do static html.

  • @mojo_raisin@lemmy.world
    link
    fedilink
    211 days ago

    Crystal + Kemal (Like Ruby + Sinatra but way faster, compiled) for the backend and templating with ECR (like ERB) and HTMX for the front-end (though HTMX is JS it feels like HTML with added features.

  • stevecrox
    link
    fedilink
    0
    edit-2
    12 days ago

    My expectation is whatever the solution it needs to dockerise and be really easy to deploy via docker compose or Kubernetes so people can quickly and easily set up their own.

    The front end is effectively static files so I would probably choose Apache or Express (whichever gives me a smaller docker image)…

    For the backend I would choose Java for Spring Boot. An Alpine image with OpenJDK and the app is tiny. Spring has a library for every kind of interface making them trivial to implement but the main reason is hibernate.

    Hibernate (now Spring Data) was the first library for being able to switch out databases without having to change code (its all config). A lot of mastodon instances struggle with the resource requirements of elastic search so letting small instances use something like postgres would seem ideal.

    I have noticed Go/Rust still expect you to write or manage a lot of stuff Spring gives away for free. Python is ok if your backend is really tiny but there is a lot of boilerplate in how Python libraries work so complex projects get hard to manage and I assume interacting with the fediverse will add complexity.

  • Go could be a good option. I say this as a Rust and Kotlin fanboy.

    Rust is great but it’s heavyweight for a simple webserver. Kotlin is great but requires a lot of setup. Golang is super small, compiles very fast and predictably, and has easy concurrency. It’s possible for anyone to contribute to a Go project at any level of experience.

    • Mubelotix
      link
      fedilink
      111 days ago

      Maybe you might want to reconsider you server library choice in Rust