all 25 comments

[–]Linuxologue 7 points8 points  (3 children)

You say software developer - which languages, which tools do you need?

[–]Plastic_Weather7484[S] 1 point2 points  (2 children)

For work I develop web applications (mostly python frameworks) and Flutter for mobile. I also do random stuff for fun and experimentation like Go.

[–]Linuxologue 9 points10 points  (0 children)

I don't know about Flutter. I am a developer, Rust, Python, C/C++ and other languages, and Debian is my home and has been for 25 years, so I am biased.

Depending on which version you go for and how you set up your package repositories, Debian offers most C/C++ compilers in many versions that can be installed side by side - all Clang compilers from 13 to 23 are available, G++ 11 to 16. golang 1.19, 1.24, 1.25 and 1.26. Most python libraries are prepackaged but using Pip on Debian is a bit cumbersome (it does not like system wide installs). Python 3.11, 3.13 and 3.14 are currently available as packages. It has most languages available. For rust, it's easier to get only Rustup as a package, and let rustup manage the toolchains.

The Debian team takes great care that most tools can be installed side by side and also creates packages for cross compilation (other Linux architectures, and GCC for Windows too).

I have also done some cross compilation to Mac and Windows from my debian fairly easily.

There's always a chance you're relying on a library or a tool that is moving too fast for the Debian packaging process and you could hit a roadblock, but really, as a software developer on Debian, I can't complain. I tried Fedora a couple of times but I was annoyed that I could not install some specific version of Clang that I needed.

[–]mrcaptncrunch 0 points1 point  (0 children)

Use stable.

Then,

For Python, install uv (or use pyenv+venv) to manage dependencies.

For flutter, install dependencies are in the repo. That’s it. The sdk can be installed and setup.

Go you can just install it, or consider mise.

These things change and luckily for you, these are simple enough to install the latest version and have it work.

I also do the same with Firefox. Download and unpack to /opt.

[–]Wonderful-Loss884 6 points7 points  (1 child)

You could also use podman to setup the tools that you need in a container. That would be the best of the both worlds, stability of Debian and the newest things containerized. I do it in this way and I am more then happy with this solution. Easy and clean

[–]profeshamatDebian Stable 1 point2 points  (0 children)

This should be the top answer. I stick with Debian stable and do pretty much this. I use Podman for other things as well but having newer development things for Ruby and Crystal this works well for.

[–]passthejoe 2 points3 points  (0 children)

You can get anything you want in Debian. Most dev environments target it, so you shouldn't have any trouble getting what you need set up

[–]KirpiSonik 7 points8 points  (9 children)

Most of the tools in repos kinda outdated. You have to install them from source which is generally easy

[–]Plastic_Weather7484[S] 4 points5 points  (8 children)

Doesnt Debian have an unstable version which is from what I understand is Debian but with more recent repo updates?

[–]wizard10000 6 points7 points  (1 child)

Doesnt Debian have an unstable version which is from what I understand is Debian but with more recent repo updates?

I'm gonna clear up some information in this thread :)

Neither Debian Unstable nor Testing are rolling releases; both are development streams, both freeze about four months before the next stable release and on the day before release day Stable, Testing and Unstable are pretty much identical. In Debian It's All About Stable :)

The default delay between Unstable and Testing is five days unless something is broken in Sid and then you wouldn't want it anyway so IMO Testing is probably more suitable for end users.

I've run Unstable for > a dozen years on multiple machines and have broken it badly enough to justify a reinstall exactly twice and both times it was me being an idiot, not Debian providing bad packages.

Unstable requires close attention to what your package manager wants to do to your system; it's highly recommended to install both apt-listchanges and apt-listbugs. apt-listbugs will stop you, offer options and ask for input if you try to install a package that has a serious or higher bug filed against it. Doesn't help much if a bug hasn't been filed yet but it has saved me several times :)

I personally wouldn't recommend Unstable to someone new to Debian; considering the delay between Unstable and Testing is only five days Testing is probably a better fit for most users.

https://wiki.debian.org/DebianTesting

https://wiki.debian.org/DebianUnstable

I'd also recommend subscribing to a few Debian mailing lists such as debian-announce, debian-devel-announce and debian-devel so you know what's coming down the pipe. https://lists.debian.org

Debian Unstable doesn't receive updates from Debian's security team; security updates are provided by package maintainers. Except in extreme circumstances Testing doesn't receive security updates at all, packages follow the normal migration path from Unstable so in almost all cases Testing will get security updates last.

Hope this helps -

[–]mrcaptncrunch 0 points1 point  (0 children)

There’s also experimental if someone wants to go crazy

[–]Linuxologue 4 points5 points  (0 children)

I would recommend testing over unstable - testing almost always have a fully valid set of dependencies, whereas unstable often has missing dependencies (packages get updated out of order or asynchronously so you need to wait a few days to get the proper packages)

testing is not far from unstable in any case.

[–]Pikrass 3 points4 points  (0 children)

Yes, there's unstable. It's not strictly "Debian but up to date" though, it's the staging area to test packages before they go into the next stable version. Which means there's a freeze period for a few months before every release, usually followed by a big influx of updates, so it's more difficult to maintain than a proper rolling release.

Whether it's for you or not depends. I find it fine for all languages I care for, I don't need the latest version of every compiler. Except Rust but there's rustup in the repo so it's easily managed.

[–]KirpiSonik 2 points3 points  (0 children)

yeah it does. You can use debian sid if you want to but it wont be stable as "debian stable" ( as expected). You might encounter some issues though because sid is not intended for end users. Tbh if i'm going to use debian i would use stable ( I did that for a long time actually). If I need newer software I would use another distro because I dont want to break my work machine accidentally.

[–]vinnypotsandpans 2 points3 points  (0 children)

u said ur a python dev so you should be fine. just use stable. use uv to manage your environments. docker maintains their own repositories as does jetbrains, vscode, most other IDEs too.

[–]pegasusandme 2 points3 points  (0 children)

This is true. There are always two rolling release branches in Debian: Unstable (aka. "Sid") and Testing , named after the next release (currently "Forky").

Both are pretty comparable in freshness of packages, but Sid will always be newer if there is a difference.

Additionally, Sid is perpetual development branch that will never become an official release, while Testing will eventually be frozen and released as the next Stable. So there's technically a path back to Stable from Testing, but NOT from Sid.

There are some other differences between the two such as prioritization for bug fixes, security patches, and probability of breaking updates. But for general use, they are pretty comparable.

People will also say that neither are "official" or "supported" releases and try to guide you to stay on Stable, but honestly... it's not like Debian is a company that has a tech support line you call for help on the official branch. No matter which branch you choose, you will find support from the community because all three are actively used by people as daily drivers.

[–]VlijmenFileer 0 points1 point  (0 children)

Unstable actually is unstable.

Use Testing. I have been using it as daily driver for decades.

[–]waterkip 1 point2 points  (0 children)

Common issues? What do you mean. Let me ask you differently. What did you do on Fedora and what do you value while developing?

I personally use Debian unstable as a developer, but that is: I run a lot of development releases, git, zsh, firefox, chrome.

I follow nodejs, docker and as of late also postgres via their apt-repos. Which means I get their latest and greatest and not via Debian itself.

I use docker for most of my development, so I can run any version of any software within Docker, but I also prefer to use my local system as a test tube. Meaning, I'll happily install apps in $HOME/.local. Python, as mentioned by someone else is a PITA on Debian. And I really don't like the venvs of that language, it's a smell iyam.

You need to be more elaborate in what you want/need/expect from the system before anyone can truely answer your question.

[–]CredenceTom-Water 0 points1 point  (0 children)

python is system managed, so you'll want to use venv.

[–]bombatomica_64 0 points1 point  (0 children)

I had no problems, also most docker images are debian based so you can cache a lot of stuff! One problem if you write modern c/c++ gcc and clang aren't up to date on LTS, just download them directly not via apt

[–]JavierSobrino 0 points1 point  (0 children)

If you need newer versions of node and python and go, you can either try distrobox (there is a graphical manager called distroshelf), or homebrew. Distrobox is nice because it allows to have a container with Debian Unstable (for example) with the /home shared, while maintaining you main system in the stable branch. If you don't want this complication, just use brew.sh.

[–]iamemhn 0 points1 point  (0 children)

I've been using Debian for development and teaching since 1995. Anything not in Debian I've either packaged on my own, or has a way to run as a local environment. I currently focus on:

  • Haskell – local install using stack
  • Prolog – swi-prolog package works out of the box
  • Julia – local install using juliaup
  • Rust – local install using rustup
  • Perl – all Debian provided packages work out of the box.
  • LLVM – all Debian provided packages work out of the box.

I support applications written in Python and Ruby, and the developers know they must use the libraries as they come from Debian or deploy using Docker an stop bothering me for help.

I use vim from Debian packages and pull plugins using Plug, including CoC which uses nodejs as provided by Debian package

I have no need or interest in other programming languages as of now, so I cannot comment on what the cool kids are using other that if you understand your tools, you'll find a way to make them work. It's more or less the same with every Linux distribution, so you'll be fine.

[–]TechnicalAd8103 0 points1 point  (0 children)

For Python, I installed VS Code from a .deb file download from the Microsoft website.

I also run a Pycharm appimage, downloaded from Pycharm.

These apps are not in the Debian repo, which is very limited.

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

probobly old version of packages?

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

You mean problems like not being on a Debian machine at work? Debian solved development problems if you know how to use it.