1. 26
  1.  

  2. 30

    This is a constant language problem on HN and I see it here sometimes too… define the word “developer”. Alternatively define the word “professional”.

    Is it possible to use FreeBSD for a developer machine? Yes, if your definition lines up with the software available for FreeBSD. Otherwise no. You need to define developer first.

    Same argument as “is the 2019 MacBook Pro (or Mac Pro) a real professional machine?” Yes, if you are a professional and your needs line up with the capabilities of that machine. Otherwise no.

    But those terms are so broad that there cannot be one single answer. Yet that doesn’t stop people from arguing about it.

    1. 6

      Precisely this. There are many different ways to be a “developer” and some of them are easy on FreeBSD and some are impossible. Personally, as I spend most of my time in Emacs or Jupyter notebooks, it would work great for me. When I was doing CUDA development, or writing complicated media transformation pipeline using QuickTime, it was a no-go.

      1. 3

        Headlines are going to be like this. If you want specific definitions of every word in a headline, maybe we should increase the Lobste.rs headline character limit. If the author doesn’t address the headline in the article, I could understand your complaint, but in this case it’s well addressed.

        1. 4

          The article goes into detail about which development activities work well and which do not. This comment seems like needless nitpicking to me.

          I’m pretty disappointed this comment has more upvotes than the thoughtful, interesting, and informative article. What the heck is going on with Lobste.rs?

          1. 1

            Yes. I guess people online just want to argue about something, and the ambiguous definition of “developer” makes it “fun”.

            In all seriousness, the only thing I found that is completely impossible is CUDA on FreeBSD, but I guess this is not part of OP’s “developer” from what he said in replying another comment here. Does it prevent me from using FreeBSD? No. I just sshfs v100: /n/v100 and ssh v100 make run.

          2. 6

            It could be fun to ask the same thing about NetBSD, I’m installing it today on a UEFI machine. My plan is to have fun with C, Zig (maybe), Haskell and other languages I have a genuine interest pushed mainly by curiosity.

            1. 1

              Nice. I haven’t used NetBSD in a very long time, but it’s much like FreeBSD in that it’s tough to setup but folks who use it say it’s totally worth it.

            2. 6

              The article says pandoc is not available, but it is in freebsd ports: https://www.freshports.org/textproc/pandoc/ Is there something wrong with it?

              1. 3

                That was a mistake on my part, I took a lot of notes over 2 weeks, and I missed this. I’ll submit an edit.

                1. 1

                  I was thinking “surely GHC works fine on FreeBSD”

                2. 5

                  Yes.

                  1. 4

                    I spent years working as a professional developer, on FreeBSD. Until I went post-technical in 2018, it was my development OS of choice.

                    1. 4

                      Sorry for the intrusion but what do you mean by “post-technical”? You stopped coding? 🤔

                      1. 3

                        Professionally, yes. I’m still contracting, but doing a mix of engineering management (leading software development teams - managing managers) and technical product management (focusing especially on internal platform products).

                        I still code recreationally - Common Lisp is my go-to language these days.

                        1. 1

                          I’m still uncertain why you decided to use that term then.

                          That doesn’t sound post-technical.

                          1. 2

                            The term may be an Australian hacker culture in-joke.

                            In Melbourne circles at least, there’s a reasonable amount of good-natured teasing directed at developers who “go post-technical” - that is, whose careers now revolve more around management and strategy than hands-on coding.

                            E.g. one might interrupt a colleague in the midst of a detailed explanation of a bug to a manager with “use small words, he’s post-technical”.

                            1. 2

                              Ohh, that’s cool. Thanks for elucidating me :D

                              I’ll be staying in Melbourne for a couple of weeks and I hope to get a glimpse of such culture soon!

                              1. 4

                                Great! Drop me a line (duncan@bayne.id.au / 0420 817 082) if you’re anywhere near Southbank, happy to grab a beer / coffee and chat.

                      2. 3

                        What do you use now? I’m a Linux user so I’ve never really gotten the appeal of BSDs on the desktop, was there something about it that made you switch away?

                        1. 2

                          Currently, Ubuntu. My new laptop (ThinkPad W541) was struggling to boot FreeBSD for some reason and I didn’t have the time to address it then.

                          My plan for 2020 is to switch to a PineBook Pro for general use and programming, and leave my W541 for gaming and media.

                      3. 4

                        After that FreeBSD on ThinkPad post, I’ve god a usable FreeBSD 12 environment running in a VM. Trying it on actual hardware and reporting on that is the next step.

                        I still can’t find the docs on the process of creating and contributing packages though.

                        1. 4

                          The FreeBSD Porter’s Handbook has the details: https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/

                          1. 1

                            Ok, so binary packages used by pkg-ng are prebuilt ports? Or I’m still confused?

                        2. 3

                          I’ll admit to being somewhat FreeBSD curious, but my biggest takeaway from this is that it’s stable. Is that really it? Because I don’t think that’s much of a pain point on Linux today, either.

                          1. 2

                            I’ve been using it about a year. Agree there’s quite a bit of overlap/similarity.

                            Documentation is better on the BSD side, especially for ‘how do I adjust the machine to my preferred workflow’.

                            For instance, I didn’t need to start a web browser in order to figure out how to add an init script - not something I have ever been able to say about a linux machine I’ve used.

                            1. 5

                              For instance, I didn’t need to start a web browser in order to figure out how to add an init script - not something I have ever been able to say about a linux machine I’ve used.

                              Although I agree that Linux man pages are absolutely underwhelming compared to the BSDs, I don’t understand this particular example. systemd is really well-documented in terms of man pages. systemd.unit(5) describes the whole unit format, systemctl(1) how to enable, start, stop, and restart units.

                              1. 2

                                How do you find out which man page is relevant?

                                I tend to work from what already exists; my ubuntu machine had init scripts in three formats under /etc.

                                In freebsd there’s only one type. If you know find, grep, and the name of a running process, you can find the init script easily. From there you can copy the format pretty easily.

                                1. 2

                                  How do you find out which man page is relevant?

                                  man systemd

                                  I tend to work from what already exists; my ubuntu machine had init scripts in three formats under /etc.

                                  I don’t really use Ubuntu (except on some work servers). Maybe they still have some old SysV init scripts or upstart files around from before the previous switches?

                                  If you know find, grep, and the name of a running process, you can find the init script easily. From there you can copy the format pretty easily.

                                  Same with systemd, you do not even have to do some ad-hoc finding or greping:

                                  ❯ systemctl status $(pidof fwupd)
                                  ● fwupd.service - Firmware update daemon
                                     Loaded: loaded (/nix/store/90r6gfc2vimim57v21biq863pv5fnrrn-fwupd-1.3.7/lib/systemd/system/fwupd.service; linked; vendor preset: enabled)
                                     Active: active (running) since Thu 2020-02-20 10:06:18 CET; 2 days ago
                                       Docs: https://fwupd.org/
                                   Main PID: 2379 (.fwupd-wrapped)
                                         IP: 0B in, 0B out
                                      Tasks: 5 (limit: 4915)
                                     Memory: 15.5M
                                        CPU: 5.715s
                                     CGroup: /system.slice/fwupd.service
                                             └─2379 /nix/store/90r6gfc2vimim57v21biq863pv5fnrrn-fwupd-1.3.7/libexec/fwupd/fwupd
                                  

                                  (There are weird paths with hashes because I use NixOS ;).)

                                  1. 1

                                    man systemd

                                    Once you know it’s systemd, that’s a good starting point. The presence of a bunch of sysv and upstart init scripts might confuse you.

                                    man systemd will even tell you that you SysV init scripts are also supported, so you can actually use either format (Perhaps that explains why I have both).

                                    Upstart format is not supported, though I have a few files in /usr/share/upstart too.

                                    Same with systemd, you do not even have to do some ad-hoc finding or greping:

                                    The point of the ad-hoc find/grep was to figure out what exists - if you already know you have systemd you don’t have this problem.

                                    1. 1

                                      The point of the ad-hoc find/grep was to figure out what exists - if you already know you have systemd you don’t have this problem.

                                      Luckily, but to the dismay of some people, virtually every Linux distribution has switched to systemd ;).

                          2. 2

                            Something missed are benefits. Or at least I’d like to emphasize one of them. A big reason for using FreeBSD as a developer for me has been to get up to date, working, stable software packages en mass. Having a language framework, some server software, etc. available (nearly) the same day as a a maintakned package without messing with repositories, snap or a docker image is so nice.

                            It’s especially nice to be able to say “I want that latest version of PosrGIS with Postgres 10”. These things tend to be a mess. Either you need to fiddle around with repositories, use some often broken AUR packages or it simply won’t work.

                            Having the latest packages available without problems on a stable system is highly uncommon, just like package counts like in FreeBSD are uncommon. I think not having to do complicated setups for such things to get stuff from various places working nicely together is the biggest productivity advantage (for my use cases) of running FreeBSD.

                            In hate spending ages on configuration and then having to pray that it doesn’t stop working as soon as something changes or the Linux distro or macOS updates.

                            1. 2

                              You still can’t get CUDA/nvidia to work.

                              1. 2

                                I got my GeForce GTX 1650 working just fine. Haven’t tried gaming with it though.

                              2. 2

                                If VMware doesn’t run on FreeBSD, have you tried bhyve or jails?

                                I’m building a new Ryzen workstation which I intend to run 3-4 Linux VMs on Linux, but I’m open to either-on-either, any way to get it done, really. I used to run FreeBSD 5.3? back in the day, and it’s been a nice ~12 years on OS X, but I wanna get back to The Good Life. I used to worry about Flash player & 802.11b like 2 cacodemons, but it’s probably moot now.

                                What is the issue with Sublime Text? That might be my dealbreaker.

                                1. 2

                                  libvirt supports bhyve, so any GUI tool that works with libvirt should be usable with it. It would be nice to have something as easy to use as VirtualBox of course, and adding bhyve support to VirtualBox is a possibility now that it uses KVM on Linux and Hyper-V on Windows for its hypervisor—the abstraction is there. There “just” needs to be a sufficiently dedicated person to actually do it.

                                  1. 2

                                    If VMware doesn’t run on FreeBSD, have you tried bhyve or jails?

                                    I haven’t, but my current workflow uses VMWare. I’m open to trying Bhyve because I think it can solve my problem, at a later time.

                                    What is the issue with Sublime Text? That might be my dealbreaker.

                                    I couldn’t get it working in both stable and current on a few machines. Best I could do was get the icon in the start menu, but I clicked it and nothing happened. I will spend some time messing with it to see if I can get it to work.

                                  2. 1

                                    Where are the operating systems that run on top of any operating system? :) Inferno and NetBSD I think are the only ones.

                                    1. 3

                                      You can run nearly anything in VirtualBox/VMware. If you’re forced to use Windows by an employer but really want to use Linux/Unix (I’ve been there) it’s a decent alternative.

                                      1. 1

                                        Maybe Windows with WSL and WSL2 qualify?

                                      2. 1

                                        Out of curiosity: What problems did you experience with Vagrant? I have not used it in a while, but it always worked fine when I did. There’s also official FreeBSD releases for Vagrant on Vagrant Cloud - which doesn’t mean Vagrant works, but at least that there might be interest to have it working. Also next to the virtualbox backend there is a bhyve one.

                                        1. 1

                                          He mentions Java briefly in the article, but doesn’t go on to explain the setup for it.

                                          If you use FreeBSD, what version of JVM do you use and are you using some exotic setup or just installing from ports? Thanks

                                          1. 2

                                            OpenJDK as recent as 12 is available in the ports tree.

                                          2. 0

                                            If by developer you mean programmer then yes, You could use it for a developer machine in 2000.

                                            If you mean someone that just answers emails, and tells programmers there isn’t enough test coverage then no. Because that guy needs outlook for all of his meetings to interrupt programmers work.

                                            1. -3

                                              I know that it’s is possible to use FreeBSD for development, but I don’t think anyone should, practically speaking.

                                              A post like “Can you use Windows for a developer machine in 2020” would interest me more. Because it seems like everyone is either using Mac or Linux these days.

                                              1. 16

                                                I don’t think anyone should, practically speaking.

                                                Why?

                                                1. 1

                                                  The reason is sum up nicely in the article already. IMO, if the software selection is the same, if I still use Gnome, still use bash, still use Emacs there is little reason to choose the OS with inferior hardware and community supported.

                                                  1. 3

                                                    Why should the default assumption be that you use Linux unless you have some especially good reason to use BSD? If FreeBSD meets your needs and Linux meets your needs, why should that mean that you use Linux?

                                                    Personally, after using OpenBSD on one of my laptops for a couple of weeks I’m keen to use it wherever I can. It’s incredibly well documented, stable and simple. It’s just well designed through and through. OpenBSD vs Linux today feels like Linux vs Windows did 12-15 years ago: limited laptop hardware support (only really thinkpads can be relied upon to work) and poor power/thermal management in exchange for much better design, system layout and understandability.

                                                    1. 3

                                                      If FreeBSD meets your needs and Linux meets your needs, why should that mean that you use Linux?

                                                      Speaking just for myself, if both are equally goods for my needs, I’ll surely go with the more popular option.

                                                    2. 3

                                                      The software selection being the same is only part of the story. If you can get the same software packages you need for Linux in FreeBSD, you’ll likely see the underlying system is far more stable and performs better. That’s the big advantage.

                                                      1. 4

                                                        Debian/Ubuntu is stable enough for daily usage, I wouldn’t ask for more stability. As in your article

                                                        Once you get it configured, it can “stay out of your way” while you get real work done

                                                        I has the same experience with Debian/Ubuntu. Maybe I’ll need to seriously gave BSD a try some day (I never manage to get it fully working on any hardware I had), but I’m pretty happy with Linux today.

                                                        1. 3

                                                          If you can get the same software packages you need for Linux in FreeBSD, you’ll likely see the underlying system is far more stable and performs better. That’s the big advantage.

                                                          This is only anecdotal evidence, but the last time I had a kernel panic it was when I tried FreeBSD. Do you have any quantitative evidence that FreeBSD is more stable and performs better?

                                                    3. 3

                                                      True! Though with WSL the Windows world is catching up. It’s not the same as actual Linux, but a step in the right direction.

                                                      1. 1

                                                        Why is it not the same? WSL2 actually runs a Linux kernel under HyperV. You can even run an X server and have the same graphical programs. The only thing that does not really work are Wayland applications (AFAIK).

                                                        1. 1

                                                          I think certain issues still exist (AFAIK?), but hopefully will be resolved soon.

                                                          1. 1

                                                            For me, filesystem issues are a complete deal breaker. I have no OS options at work and can only use Windows and while its a decent work machine, I still feel that my Linux workstation and laptop at home run rings around it.