Threads for jaypatelani

  1. 2

    Nice ..

    1. 1

      Did you consider any other language? Especially Ada?

      1. 16

        I’ve been looking into this lately, and Ada is cool but if you look online the only jobs for it are at, like, Lockheed Martin and Raytheon. If I could learn Ada and work on train control software or something that would be cool. But it seems my only option in the US is using it to more effectively murder people around the world. When selecting a programming language at your job your employability elsewhere is an important factor. Network effects, I guess.

        1. 2

          Your point is spot on recently there’s been post on reddit with same question https://www.reddit.com/r/ada/comments/11qov17/ada_developer_looking_for_a_job_as_software/

      1. 2

        Gnome software center is good in look wise but needs lot of improvements. Same operation on cli with dnf goes smoothly and fast and via software center takes lot of time.

          1. 2

            Would be a bit challenging given how the author wished Rust safety features to be optional.

          1. 1

            Awesome news.

            1. 2

              Why not OpenBSD? I do lots of server stuff, so I’m more likely to get use out of being familiar with it.

              1. 3

                Probably author was not familiar with it - but to be honest any BSD will do for a desktop/laptop today.

                1. 2
                  1. 2

                    Well OpenBSD also worth but author is used to or using these two BSDs mainly :)

                  1. 15

                    In my teenage years I have used all of the bigger BSDs (FreeBSD, NetBSD, OpenBSD, DragonFly) as my main desktop for at least half a year each. They worked for what was typical desktop use back then.

                    Whit it has gotten better at some fronts it got worse on other (for Linux as a desktop as well though). I am not sure why, but lately I think it might be that the browser became the OS. Even when not strictly speaking using a browser you likely do, in form of Electron apps, etc. While hardware support has become really good, I think it’s really sad that one now has to jump through hoops, for example due to DRM making their way in the browser. Even getting Flash to run seemed nicer back then. Even though I’ve heard there’s good work-arounds now if you have to watch Netflix on it.

                    I haven’t used any of the BSDs in a long time, but at this point it’s mostly due to having this Arch Linux installation for over a decade and I am too lazy to set up something new.

                    If you are however not in such a state, I think I’d agree with the article. Just don’t expect it to be Linux. That can be helpful. If you are expecting just another Linux distro (and you will do that at some points) you will be mistaken. It’s a different OS with different trade-offs. In fact the BSDs are all pretty different OSs. And while people say things like “OpenBSD for security” they are all general-purpose OSs. Every one of them supports hardware that another one doesn’t (not just due to some install time difference, like on Linux). Each one of them is a daily driver for people. And one last thing that’s nice about the BSDs compared to people using Linux on the desktop, is that they tend to be pragmatic and not ideological. There also is very little in terms of “being a missionary to Windows users” or things like that. That article as far as it typically goes. People tend to be surprised ask the community “Why should I use BSD?” only to not hear any advertisements or even reasons.

                    If you want to try it I’d just like with programming languages give the advice to use it seriously for at least half a year before you judge it. Just like with programming languages things won’t make sense or seem weird in the beginning. I also want to repeat that while they are all called BSDs they are pretty different and you can’t expect really anything to be the same as the other. They are not just distros and they are not just kernels. Also I’d advise to start with the OSs, not some LiveCD or some pre-made desktop. In my experience people are extremely disappointed and never touch the BSDs again with any of those ready made systems. For some reason they tend to be a lot worse than what you’ll come up with if you even follow the simplest guides you found via Google. Even though it’s out-dated I think this one is worth mentioning. I think it would largely still work (and still will in a few years). Some stuff might not be necessary anymore.

                    https://cooltrainer.org/a-freebsd-desktop-howto/

                    Vermaden’s guide desktop guide is great, but I think also really intimidating. It goes into specifics of basically a perfect system for them with where specific application. If you want to just setup your KDE/GNOME/XFCE/… desktop I think it’s probably too much.

                    https://vermaden.wordpress.com/

                    1. 4

                      I haven’t used any of the BSDs in a long time, but at this point it’s mostly due to having this Arch Linux installation for over a decade and I am too lazy to set up something new.

                      I totally understand you. I use (and improve) my Openbox setup and I am happy about it - but when I would have to move to new WM (od even DE) it would rather be something like MATE/XFCE then FVWM3 … although I always wanted to try FVWM and configure it my own way :)

                      Vermaden’s guide desktop guide is great, but I think also really intimidating. It goes into specifics of basically a perfect system for them with where specific application. If you want to just setup your KDE/GNOME/XFCE/… desktop I think it’s probably too much.

                      It is not intended - to be intimidating - but wanting to explain how all things work in details just takes some space and time.

                      I also try to provide easier/simpler guides with XFCE or GNOME for example such as these:

                      Sometimes even based on GhostBSD to have faster and easier start/install … to be honest after GhostBSD moved back from OpenRC to rc(8) sussystem that FreeBSD uses there are really no obstacles why no to use it if you want to have fast and easy FreeBSD desktop. Its really great and it also has GUI for updating the system and managing ZFS Boot Environments. I look really forward of its future and development.

                      Regards.

                      1. 2

                        Sorry, I think I worded it badly with “intimidating”. What I really mean is that they are extremely detailed because you detail also non-FreeBSD application in detail and in fact that’s why I also like to read them. You explain how to go from 0 to a complete setup that is also really nice.

                        What I meant with intimidating is that someone jumping into a new OS and wanting to quickly set up an OS often wants to basically see how to get this and that running quickly. That’s what I like about the other guide.

                        It wasn’t meant as a criticism, not even a productive one. Yours is an in-depth guide on how to set up a really good nice FreeBSD desktop, while the other is a guide to quickly get X running on FreeBSD. So they to me have different goals.

                        I’ve read your guides and they are amazing. What I meant with intimidating is the detail. And also yours is a guide to set up a specific, well configured system, while the other is more like “And this is how you should get sound running”, “This are the commands to get KDE installed”, which for some people is how they start out with a new OS.

                        I hope that clarifies it. Intimidating was just as you say. Having a really good guide to set something up in detail. I’ve used them, I’ve recommended them.

                        But I do like the other one mentioned because if you start out with an OS you might want to speed through “now I have that standard desktop”, so you have your browser and stuff and then can work through details. For example if someone actually wants to play with jails, but wants to have KDE and a browser and be able to watch YouTube or something like that, not really considering the setup part of the learning process yet.

                        The reason why I explicitly mentioned it is because I wanted to use it as a contrast. Yours is in great detail and specific, the other one is a bit more like a cheat sheet.

                        I haven’t used GhostBSD at all. I just know that there have been FreeBSD desktop projects with the best intention, but they have a tendency to make people think things are a FreeBSD-problem when they are a problem specific to the “FreeBSD distribution” (distribution as opposed to derivative, so like GhostBSD is to FreeBSD, not OpenBSD and FreeBSD for example) so to say. And sometimes things that you can easily work well feel next to impossible on one of them to work well for some configuration reason for example. And the bigger Linux desktop distributions all had a lot more people working exclusively on that than any FreeBSD desktop distribution ever had.

                        1. 1

                          Sorry, I think I worded it badly with “intimidating”.

                          None offense taken - I got the idea.

                          Also I really like (and try) to improve - so any hints are welcome … and what better place for them then comments? :)

                          I haven’t used GhostBSD at all.

                          I know that You are happy with your Arch setup - but IMHO next time when I will think of trying (or just weekend tinkering) about FreeBSD - start with GhostBSD. After they (GhostBSD) went back from OpenRC to rc(8) that FreeBSD uses it really is more or like FreeBSD STABLE with graphical GTK installer and MATE GTK GUI (XFCE option/ISO is also available).

                          It just takes a lot less effort to start playing with it.

                          The only thing that I still do not like about GhostBSD is that by default it uses fish(1) shell … and to be honest its quite good interactive shell … its just that zsh(1) is a lot better :) There are some objections against ZSH that i takes a lot to config it right … same for Openbox I think :)

                          I gathered quite nice ZSH config for all these years and I shared it here (also with fish(1) like coloring and syntax completion):

                          With this guide its really pointless to use fish(1) as comparing to that zsh(1) setup the fish(1) shell is just limited :)

                          Regards.

                      2. 3

                        Agreed. Very well written.

                        1. 2

                          I haven’t tried it, but one of @vermaden’s articles linked to a script that installed the Linux version of Chrome and ran it with the Linux ABI layer. I’m not sure how good an idea this is (I think a bunch of the Linux security features are not implemented), but apparently it now works well enough for things like Netflix to work.

                          1. 3

                            Hi.

                            Its this one:

                            … and yes it works as desired :)

                            I also really like that it also covers updating that environment with this command:

                            # ./linux-browser-installer chroot upgrade
                            

                            So you do not end up with some old insecure bloat after a year and need to reinstall it again.

                            Hope that helps.

                            Regards.

                            1. 3

                              Thanks. It would be nice if it installed in a jail with a ZFS ruleset that exposed the /dev/drm and /dev/pcm interfaces (or the PulseAudio socket, if it’s using a native sound server?) and mounted users’ downloads directories, so it didn’t interfere with other Linuxulator uses. As I understand it, the Linuxulator does not currently support seccomp-bpf, SELinux policies, or Linux namespaces, so Chromium-based browsers will lose most of their security features. That would make me a bit nervous about using it for anything that required credentials or dealt with sensitive information.

                              1. 3

                                To be honest I would love to see a paper/document how Linux Compat Layer security compares to a FreeBSD Jail or a Linux Jail - and if Capsicum is used and where for example. Unfortunately I was not able to find such information …

                                About Chrome sandboxing on FreeBSD - FreeBSD developers sent patches to Chrome to add Capsicum sandboxing to it - but they were refused:

                                I also once did a guide on ‘secure’ Jailed browser here:

                                Hope that helps.

                                1. 1

                                  To be honest I would love to see a paper/document how Linux Compat Layer security compares to a FreeBSD Jail or a Linux Jail - and if Capsicum is used and where for example

                                  On Linux, Chromium uses seccomp-bpf to limit the system calls that the renderer sandbox can make namespaces to restrict what it can do in terms of access to the host filesystem and network access.

                                  Capsicum provides a more principled approach to both of these. It blocks all system calls that allow access to global namespaces and limits all of the ones that allow access to anything outside of the process’ address space to operating on file descriptors that carry the correct (fine-grained) permissions. This makes it trivial to implement the Chromium sandboxing model (less than a tenth of the code of the Linux approach).

                                  Jails and Capsicum have very different usage models. Jails are intended to isolate programs from the rest of the system, Capsicum is intended to allow programs to run with minimal privilege or to run parts of themselves with minimum privilege. If you run Chromium in a jail, it’s hard (requires a kernel bug, not impossible - the kernel is a massive C codebase, after all) for it to touch anything on the host system. That doesn’t really help much with the threat model for web browsers, where often the browser is the target for attackers. If you use webmail, for example, an attacker who compromises the jail that runs Linux Chrome can still get your webmail credentials and can then do password resets on other accounts and so get control over a lot of your digital life, even if they can’t touch other files that you have locally. This is why Chromium separates each renderer process into something separately isolated: if it’s compromised then the attacker gains only data associated with the current site. That’s still not wonderful because a compromise from some HTML embedded in a email opened in gmail can compromise your gmail, for example.

                                  Unfortunately, the effort from the ChromeOS team to upstream Capsicum support to Linux failed and so there’s no Linux build that supports Capsicum.

                                  I believe some folks are thinking about adding seccomp-bpf and namespaces to the Linux ABI layer. I’m not a huge fan of this because seccomp-bpf is a terrible idea. It makes it very easy for an attacker to inject gadgets into the kernel that can be used to exploit speculative execution vulnerabilities. Any system that allows arbitrary seccomp-bpf policies at the moment should assume that nothing in the kernel is secret.

                        1. 3

                          But what’s in it for me? I actually didn’t even know I could do that and now I ask - why would I want to get my packages from there and not via apt? What are the benefits except one more tool and repo?

                          1. 2

                            pkgsrc has quarterly releases.

                            1. 2

                              Not every application, hardware appliance, or even general-purpose server is ideally suited to having a Linux kernel and userland underneath it.

                              Docker masquerades as a cross-platform packaging and distribution tool, but what it really provides is a cross-distro abstraction for a subset of modern-ish Linux environments. Windows and Mac hosts only get support by way of a VM managed by Docker or containerd.

                              Even more frustrating to me is the fact that Docker actually strengthens the dominance of 2-3 distros (Alpine, Ubuntu, and CoreOS) because they’re the standard base for most other images.

                              So: pkgsrc and other “ports” systems are important to keep software running in places other than that very limited set of environments. (I likewise think that Firefox and other non-Chromium browsers are critically important so that “portable applications” don’t just mean, “runs in Electron or a browser tab.”)

                              1. 1

                                Well one of the things is it can be bootstrapable to majority of OSes.

                                https://pkgsrc.smartos.org/

                                1. 2

                                  The problem is that this is not a use case a great many people have. If you use a linux distro, you already have a package manager. If you use a BSD, it has one too. MacOS has brew (and macports, even nix). Everyone already has all the software they need so it is very hard to make a case for pkgsrc.

                                  A couple of years aog I got interested and played around with pkgsrc on debian to learn a thing or two. It’s cool that it exists, but it is not really all that new or useful so that people would get excited.

                                  I believe the reason why there is not much mindshare is that it is perceived as yet another package manager with no immediately obvious value.

                                  1. 2

                                    pkgsrc is the native package manager on one of the BSDs (used to be 2) and SmartOS. On macOS, it is up there with brew and macports. On Linux, it is useful for distros that do not have their own package managers (Oasis comes to mind). Could be useful even on mainstream distros like Debian when you are stuck on the stable release and you need newer versions. That said, not all packages are up-to-date in pkgsrc but I’m glad it exists and people continue to work on it.

                                    1. 2

                                      How many users does SmartOS have? It is the niche of the niche of the niche. How many people really care about NetBSD? Very few, it seems.

                                      pkgsrc is not up there with brew and macports. Everybody and their mom use brew, a few people - including me - use macports and a very few people use nix. I have never met anyone using pkgsrc on a Mac and I have been working in “every dev has a mac company for the last decade”.

                                      I am not saying pkgsrc is bad, I am saying almost nobody cares b/c there is not much to gain for someone not running NetBSD (or SmartOS) where it is the native package manager.

                                      1. 1

                                        Smartos people also provides Binary for MacOS using pkgsrc https://pkgsrc.smartos.org/install-on-macos/

                                        1. 2

                                          I understand all that. You are not reading what I am saying.

                                1. 8

                                  Why do you run it? Why not $OtherBSD? What’s the point?

                                  They don’t actually try to offer any answers to these questions though, and, having played around with different operating systems a fair amount in my life, it is… you know, kinda an important question. You need a pitch you can make, maybe even with some data to back it up. Even among BSD’s, why is NetBSD interesting instead of FreeBSD, OpenBSD, or DragonflyBSD? Apart from “portable to lots of systems that don’t exist anymore”, which is the only actual pitch I’ve heard anyone make for it.

                                  1. 6

                                    Well here are some thoughts of NetBSD users why they use it : https://www.unitedbsd.com/d/90-netbsd-users-why-do-you-use-it-over-freebsd-and-openbsd

                                    1. 5

                                      You need a pitch you can make

                                      Or maybe people could just not question other people’s choices?

                                      1. 3

                                        People question partly out of insecurity for their own choices, but partly out of curiosity.

                                        Why do you get that brand? is opening the questioner to change their mind about a brand. This question is a confused questioner asking “Ok, so when I need a new box with an OS… why might I choose NetBSD?”

                                        1. 1

                                          But how am I supposed to judge them on the internet if I do that? /s

                                          More helpfully, every technical design is a set of tradeoffs. Those tradeoffs need to be guided by goals. What goals does NetBSD have that guides its design tradeoffs? I question people’s choices because I’m interested in the topic and want to know the answers!

                                          1. 2

                                            heh :-)

                                            As for the design goals, NetBSD is somewhat known for looking for good abstractions. From that, ideas like rump kernel follow naturally.

                                        2. 3

                                          I maintain several small sites for friends (OJS, Drupal etc.) and IME NetBSD runs much better on low-spec VMs than Debian. I’d often run into MySQL crashes due to low memory which went away after switching to NetBSD. Have a bunch of ARM SBCs and NetBSD runs quite well unlike Debian which is a hit or miss and often one has to pull kernels from random GitHub repos.

                                          TBH, FreeBSD is more complete and is arguably the best Linux alternative nowadays but NetBSD is not bad, especially for small servers. pkgsrc has a good selection of packages, updated quarterly. ZFS is stable (not OpenZFS 2 yet, I think). DTrace works (only a subset of providers). Xen is fairly stable (lags Linux), NVMM is the homegrown hypervisor that seems to have found a new home in DragonflyBSD. RUMP and ATF are unique to NetBSD (ok, FreeBSD has ATF ported). Even though many of the features are incomplete there is enough to make it an interesting system to study and work on.

                                          Being much smaller, NetBSD is a good base for learning and experimenting. The build system is a key enabler. You just need to checkout the source tree and run build.sh. It takes care of building the cross-compilation toolchain, base system, kernel, and generating a bootable image which can then be run on the hypervisor for testing. See [0] for an example setup.

                                          Jan Schaumann teaches a couple of courses that use NetBSD [1, 2]. The “Advanced Programming” course is highly recommended and can be seen as an updated version of Stevens’s classic APUE. However, for kernel development, documentation is not much beyond the man pages and mailing list posts (the kernel internals parts of the handbook are woefully incomplete).

                                          Looking forward to 10.0 which is shaping up to be a great release!

                                          [0] - https://t.pagef.lt/working-with-the-netbsd-kernel/ [1] - https://stevens.netmeister.org/615/ [2] - https://stevens.netmeister.org/631/

                                          1. 1

                                            The other problem is: How much do I gain versus what things I have to work around with. I’m probably one of the bigger Linux-on-the-desktop fans in the circles I frequent and still… some things are just better on Windows or OSX. So far, 90% of the time the same things have been even worse on the BSDs. I admit this is probably an end-user point of view and not a developer’s, but still.

                                            1. 1

                                              Does it not block any servers or does it just not list the ones it blocks?

                                              Looking at https://bsd.network/about/more

                                              1. 2

                                                The latter. I just moved off it because it blocked journa.host and I wanted to follow some journalists.

                                            1. 2

                                              I am intrigued by the portability of pkgsrc. Is anyone here using it beyond netbsd? Does it work well for you?

                                              1. 3

                                                Last i know is NASA using it for their NAS : https://www.nas.nasa.gov/hecc/support/kb/using-software-packages-in-pkgsrc_493.html

                                                Joyent is using for their SmartOS, CentOS and MacOS https://pkgsrc.joyent.com/

                                                1. 1

                                                  I knew about joyent. I was more looking for indiviual users here

                                                2. 2

                                                  I used it for a while on MacOS, mostly because I was using NetBSD on my server and liked that I could run the exact same programs on both (and IIRC there was some awkwardness around MacPorts and Fink - and Homebrew didn’t exist yet).

                                                1. 2

                                                  As always a very nice and elaborate writeup of the changes for Ada 2022. Every feature in Ada feels well-thought-out and fits into place, which leads to a high consistency.

                                                  Without specific mentions, big parts of the language community can learn a lot from how AdaCore et. al. do their language development.

                                                  1. 2

                                                    Agreed. Wish more people use it for software development

                                                    1. 2

                                                      Without a permissively licensed compiler, it’s hard to recommend the language. AdaLabs was trying to build an Ada front end for LLVM, but I don’t think they made progress.

                                                      1. 2

                                                        I’m not up to date on my Ada, but what’s the problem with GNAT?

                                                        1. 2

                                                          What’s the problem with a GPLv3 compiler? The FSF’s GNAT/GCC license allows linking the runtime with proprietary software.

                                                          1. 1

                                                            If any of your workflow involves distributing the compiler (for example, if you want to create a developer container to allow quick onboarding for a project) then you need to comply with all of the GPLv3 conditions. If you own any patents, for example, then you must carefully audit the code to ensure that no one has snuck in any code that infringes them because otherwise you’ve just accidentally granted everyone a perpetual license. This is why a lot of companies have a no-GPLv3-code policy. In some cases, it’s more liberal (you can use, but not contribute back to or redistribute), but in a modern world using code that you can’t redistribute is painful. You also can’t use the compiler front end in any additional tooling unless you’re willing to release under a GPLv3-compatible license.

                                                            I don’t mind having a GPL’d or proprietary compiler as a second source but I wouldn’t want to build a business depending on it.

                                                            1. 3

                                                              If any of your workflow involves distributing the compiler

                                                              I was going to write a rebuttal, but thinking more about it this is a valid point. However here are a few things that I think weaken it:

                                                              • Distributing the compiler is a very niche use case that I don’t see many businesses need (and in the case of GNAT, I’d argue that paying AdaCore to do it is a better use of money/engineer time since their business literally is maintaining and distributing GNAT).
                                                              • A successful stage 3/4 bootstrap from a clean environment (e.g. a VM) is a fairly strong guarantee that you’re not shipping anything you don’t want to leak.
                                                              • GCC frontends usually are a poor fit for creating new tooling anyway. In the specific case of Ada, you should go with libadalang (soon to be re-licensed under Apache 2.0) instead.

                                                              So overall, despite it being correct, I don’t find your argument about finding it hard to recommend Ada due to the main compiler being GPLv3 very convincing :). Still, this was interesting to think about, thanks for sharing your point on view!

                                                              1. 2

                                                                Distributing the compiler is a very niche use case that I don’t see many businesses need

                                                                I think that absolutely was true a year ago, but it increasingly isn’t. A lot of development is now moving to containers, where you provide a container layer with all of your default tooling so that folks can easily contribute to your project. Even if your project is closed source, you may distribute this to consumers and so on. Similarly, you will distribute it to the folks running any outsourced CI system and so on.

                                                                A successful stage 3/4 bootstrap from a clean environment (e.g. a VM) is a fairly strong guarantee that you’re not shipping anything you don’t want to leak.

                                                                That doesn’t help. The issue is:

                                                                • I file a patent on technique A that I don’t want competitors to use.
                                                                • Someone contributes an infringing patch to GNAT.
                                                                • I distribute GNAT.
                                                                • I sue someone else for infringing my patent.
                                                                • The person points to the implementation of A in GNAT and I discover that I’ve accidentally licensed it.

                                                                This is why big companies are incredibly wary about distributing GPLv3 code. A clean-room build doesn’t solve this, only a complete code audit does and that’s too expensive.

                                                                The fact that it’s GPLv3 and an FSF project also makes me much more hesitant because the FSF relicensed GCC from a license that was mostly fine to a license that had a bunch of things that made corporate lawyers nervous. I have no idea what GPLv4 will look like and if I have to either fork GCC or migrate to a different compiler when GCC 15 moves to GPLv4, that’s not something I want in my long-term risk planning.

                                                          2. 2

                                                            What is the importance of a permissively licensed compiler?

                                                            1. 1

                                                              Is there a commercial option? I’m allergic to GPL3, but commercial is OK.

                                                              1. 2

                                                                GNAT is both GPL3 and available commercially :). There’s also a bunch of other proprietary compilers, such as Green Hill’s or PTC’s. GNAT is however usually the most up to date one.

                                                              2. 1

                                                                Recently they have changed that

                                                                https://blog.adacore.com/a-new-era-for-ada-spark-open-source-community

                                                                I think LLVM one is available through alire

                                                                1. 2

                                                                  GNAT-LLVM uses GNAT’s frontend, which is GPLv3 and thus contaminates LLVM, if I’m not mistaken.

                                                                  1. 1

                                                                    It only means that if you ship both in one distribution, the LLVM part is not allowed to be shipped in a way that gives you lesser rights than the GPLv3 part - which essentially means if someone requests the source code to their binary, they need to get it for both components. That’s quite okay.

                                                                    The LLVM bits will still remain permissibly licensed, it’s not “contaminated”.

                                                                    The other alternative is shipping the LLVM part as a dynamic library and the frontend separately (e.g. in 2 zip files) for the user to install independently. It’s not uncommon.

                                                                    1. 4

                                                                      Compilers stretch the GPL somewhat because a compiler, intrinsically, embeds some of its code in its output and so can taint the output. GCC has a specific runtime exemption for things like libgcc for this. I’m very grateful to the FSF for doing this. I flagged it as a problem when I started working on clang support for Objective-C in 2008 and realised that I would not be able to use the GCC Objective-C runtime with clang. I ended up writing an MIT-licensed replacement but the GCC project did a fantastic job writing a license exemption that allowed other compilers to use their run-time libraries. I presume all of the relevant bits of GNAT are also covered by this.

                                                                      1. 1

                                                                        I understand this (I used to be in the core team of Rust, among other things dealing with licensing concerns), but that does not change depending on the GNAT frontend running on top of GCC or on top of LLVM.

                                                                      2. 1

                                                                        the LLVM part is not allowed to be shipped in a way that gives you lesser rights than the GPLv3 part

                                                                        That’s what I meant by “contaminates” :).

                                                                        The other alternative is shipping the LLVM part as a dynamic library and the frontend separately (e.g. in 2 zip files) for the user to install independently. It’s not uncommon.

                                                                        Interesting, I didn’t know some entities actually bothered with that. I’m curious to know more, if you’re allowed to share information :).

                                                                        1. 2

                                                                          I‘m not a friend of „contamination“ language. The GPL clause involved in this triggers on distribution, but after that, you can totally go and use both components separately, under their respective licenses.

                                                                          Interesting, I didn’t know some entities actually bothered with that. I’m curious to know more, if you’re allowed to share information :).

                                                                          It‘s a common thing for distribution licenses - you go to „some assembly required“ and the user makes the free choice to assemble those things together. E.g. if you use rustc on Windows, you need to either install mingw (gnu/GPL) or Visual Studio CLI (license-encumbered, for pay for commercial applications) for the compiler to actually work. It‘s inconvenient, but keeps the „can we ship these things together“ question neatly outside of the distributors scope.

                                                                          The same mechanism can be used here.

                                                              3. 2

                                                                It would be nice if more languages took such care when adding new features!

                                                              1. 6

                                                                I’ve been rather out of touch with the Ada world for a while,

                                                                We chose the Apache License 2.0 because we consider it to be the best option for our customers and the Ada/SPARK ecosystem at large.

                                                                I would have been happy with GPL, but I can see how some people may not be. My only Ada project is GPL because it had to be, but given a choice, I might have used a more permissive license (or not, not sure).

                                                                This results in a decision by AdaCore to stop further releases of GNAT Community and have the community handle its successor.

                                                                This is confusing. Will GNAT FSF become the only option, apart from GNAT Pro? How often will they make new releases?

                                                                Alire is a source-based package manager for the Ada and SPARK programming languages.

                                                                It has grown quite a bit it seems!

                                                                1. 1

                                                                  From post ( https://blog.adacore.com/ada-202x-support-in-gnat )’s author said Both will exist.

                                                                1. 0

                                                                  This site is more ads than content— is there a better source?

                                                                  1. 2

                                                                    Sorry I didn’t see ads due to uBlock origin. Tried finding other sources but all have adverts :(

                                                                  1. 5

                                                                    Yes it matters.

                                                                    At least with C++ developers can slowly learn the more arcane part of the language language while they use it. A bit more difficult with Rust.

                                                                    Furthermore, it might be possible to implement some form of borrow checking for existing languages.

                                                                    Any language should be easy to learn. That’s true for C and python. Language popularity is highly correlated with ease of learning. And this is true for all the new languages out there that try to do fancy things: most developers do not care.

                                                                    Personally, all I would ever want, is something mostly like C/C++, with pythonic features, easier to read and use, faster to compile, without a GC, statically compiled, without sophisticated things.

                                                                    1. 17

                                                                      I wouldn’t call C easy to learn. It probably has less essential complexity than Rust has, but there’s still a lot of fiddly details to learn that wouldn’t come up in languages created decades later with garbage collection and better tooling and syntactic defaults.

                                                                      1. 9

                                                                        A couple issues I found when wanting to learn C is all of the variation because of its history. What tooling should I use? Which conventions should I follow? Which version is the current version?

                                                                        The various C standards are not conveniently discoverable and even when you map them out, they’re written in reference to past standards. So to get the set of rules you have to mentally diff K&R C with a handful of other standards published over 40 years, etc. Starting completely from no knowledge and trying to figure out “What are the complete set of rules for the most modern version of C?” is nearly impossible. At least that has been my experience and biggest struggle when trying to get started with C multiple times over the years.

                                                                        Then I constantly see veteran C programmers arguing with each other about correct form, there seems to be far less consensus than with modern languages.

                                                                        1. 5

                                                                          I’d say C is easy to learn but hard to master. But that could be said about a lot of languages.

                                                                          1. 2

                                                                            I think there is a big difference to what is the absolute minimum you can learn.

                                                                            You can “learn” C with programs that compile and run the happy path mostly correctly. The probably have tons of bugs and security issues but you are using the language.

                                                                            Rust forces you to handle these issues up front. This does make the minimal learning longer but the total learning to be a “production ready coder” is probably actually shorter.

                                                                          2. 15

                                                                            Man, I was terrified when I was learning C++. I would stick to the parts I was “comfortable” with, but when I would call someone else’s code (or a library) I couldn’t reliably know how the features they used would intersect with mine. And the consequences very often were debugging core dumps for hours. I’m no Rust fanboy, but if you’re going to have a language as complicated as Rust or C++, I’d rather learn with one that slaps my hand when doing something I probably oughtn’t do.

                                                                            1. 11

                                                                              So, Nim once ARC lands?

                                                                              1. 3

                                                                                Is that not the case already ? I unfortunately do not use Nim often these days so I might be out of touch, but if I recall correctly arc/orc are available but not the default.

                                                                                EDIT: Yeah, It seems to use ref counting by default currently but the doc advise to use orc for newly written code Cf: https://nim-lang.github.io/Nim/mm.html

                                                                              2. 8

                                                                                Any language should be easy to learn. That’s true for C and python. Language popularity is highly correlated with ease of learning.

                                                                                All other things being equal, yes, ease of learning is good. But at some point one may have to sacrifice ease of learning to make the expert’s work easier or more reliable or faster or leaner. Sometimes that’s what has to be done to reach the level of quality we require.

                                                                                If it means some programmers can’t use it, so be it. It’s okay to keep the incompetents out.

                                                                                1. 8

                                                                                  I was mostly with you, but “incompetents” is harsh.

                                                                                  1. 4

                                                                                    Can we at least agree that there is such a thing as incompetent programmers? I’m all for inclusivity, but at some point the job has to get done. Also, people can learn. It’s not always easy, but it’s rarely impossible.

                                                                                    1. 4

                                                                                      There are, but generally they’re not going to be successful whether they use Rust or another language. There are inexperienced developers who aren’t incompetent but just haven’t learned yet who will have an easier time learning some languages than Rust, and there are also experienced programmers who simply don’t know Rust who will also have an easier time learning other languages than Rust. Since the incompetent programmers will fail with or without Rust, it seemed like you were referring to the other groups as incompetent.

                                                                                      1. 5

                                                                                        Ah, the permanent connotation of “incompetent” eluded me. I was including people who are not competent yet. You only want to keep them out until they become competent.

                                                                                        My original point was the hypothesis that sometimes, being expert friendly means being beginner hostile to some extent. While it is possible (and desirable) to lower the learning curve as much as we reasonably can, it’s rarely possible to flatten it down to zero, and in some cases, it just has to be steep.

                                                                                        Take oscilloscopes for instance. The ones I was exposed to in high school were very simple. But the modern stuff I see now is just pouring buttons all over the place like a freaking airliner! That makes them much scarier to me, who have very little skill in electronics. But I also suspect all these buttons are actually valuable to experts, who may have lots of ways to test a wide variety of circuits. And those button give them a more direct access to all that goodness.

                                                                                        In the end, the question is, are steep learning curve worth it? I believe that in some cases, they are.

                                                                                        1. 3

                                                                                          That makes sense. Thanks for clarifying. I don’t know if I have a strong opinion, but I do believe that there are cases that require extreme performance and that often requires expertise. Moreover, having been a C++ programmer for a time, I’m grateful that where C++ would accept a broken program, Rust slaps my hand.

                                                                                  2. 2

                                                                                    True. Ada Programming language easy to learn but not widely accepted or used

                                                                                  3. 4

                                                                                    At least with C++ developers can slowly learn the more arcane part of the language language while they use it. A bit more difficult with Rust.

                                                                                    I’m not sure what parts of Rust you consider “arcane”. The tough parts to learn, borrow checking and lifetimes, aren’t “arcane” parts of Rust; they are basically it’s raison d’être.

                                                                                    Any language should be easy to learn.

                                                                                    Ideally languages would be as simple/easy as they can be to meet their goals. But a language might be the easiest-to-learn expression of a particular set of goals and still be tough to learn – it depends on the goals. Some goals might have a lot of inherent complexity.

                                                                                    1. 3

                                                                                      If carefully aware of escape analyses as a programmer, you might realize that with Go, and, while programming Go for several years, I’m by no means a Go fanboy.

                                                                                      In particular, I conjecture that you could write a program in Go that does not use GC, unless the standard library functions you use themselves use GC.

                                                                                      I need to learn Rust, i realize, having written that prior sentence, and having been originally a C fan.

                                                                                      1. 6

                                                                                        Personally, I would strongly recommend the O’Reilly “Programming Rust, 2nd ed.” For me it was a breakthrough that finally allowed me to write Rust and not get stuck. It may not be “perfectly shiny” what I write, but before that, I often stumbled into some situations I just couldn’t get out of. Now I understand enough to be able to at least find some workaround - ugly or not, but it lets me go on writing.

                                                                                        Also, coming from Go (with a history of C++ long ago beforehand), one thing I had to get over and understand “philosophically” was the apparent lack of simplicity in Rust. For this, my “a ha” moment was realizing, that the two languages make different choices in a priorities triangle of: simplicity vs. performance vs. security. Go does value all 3, but chooses simplicity as the highest among them (thus GC, nulls, etc; but super approachable lang spec and stdlib APIs and docs). Rust does value all 3 too, but chooses performance AND security as the highest. Thus simplicity necessarily is just forced to the back-seat, with a “sorry, man; yes, we do care about you, but now just please stay there for a sec and let us carry out the quarrel we’re having here; we’ll come back to you soon and really try to look into what you’d like us to hear.” And notably the “AND” here is IMO a rather amazing feat, where before I’d assume it just has to often be an “or”. Also this theory rather nicely explains to me the sparking and heated arguments around the use of unsafe in the community - it would appear to happen around the lines where the “AND” is, or looks like it is, kind of stretching/cracking.

                                                                                      2. 2

                                                                                        Personally, all I would ever want, is something mostly like C/C++, with pythonic features, easier to read and use, faster to compile, without a GC, statically compiled, without sophisticated things.

                                                                                        I think you’re looking for Myddin (still WIP) or possibly Hare. Whether they’re “pythonic” is debatable though.

                                                                                        1. 1

                                                                                          Any language should be easy to learn.

                                                                                          Not only easy to run. Easy. Because why would one make it difficult if it clearly can be made easy? The whole point of programming languages is providing simoler alternatives to the targets of their compilers.

                                                                                        1. 3

                                                                                          looking forward to it!

                                                                                          I have tried to use it as my dev env (for java backend, postgres) – but could not get a typical Java dev toolchain to work on NetBSD 9.x (gradle in our case [1])

                                                                                          [1] https://github.com/gradle/gradle/issues/16568

                                                                                          1. 3

                                                                                            Will try it out once 10.0 is released.

                                                                                          1. 4

                                                                                            It seems like a fairly sensible direction for their local chip development. The software development toolchains (especially GNU) and QEMU tend to follow closely behind the extension standards. So by the time someone’s got hardware actually shipping, there is already software available for it.

                                                                                            The main challenge for India’s SoC development in general will be all the peripherals needed for a modern SoC. DDR memory controllers, PCIe bus implementations, audio, video, and GPU core designs. There been some work on the RISC-V GPUs, but I haven’t heard of a serious push for that yet, open-source or closed source. I’m sure someone will try it at some point.

                                                                                            1. 5

                                                                                              Fingers crossed. And hope other countries folo similar steps. IIT has been developing Shakti processor based on RISC-V for sometime maybe they will collaborate on the same https://shakti.org.in/software.html

                                                                                            1. 3

                                                                                              This is a really well-written and interesting 3-part-article. I think Ada gets much less attention than it deserves.

                                                                                              1. 2

                                                                                                Agreed :)