1. 23
  1.  

  2. 26

    I love it.

    Low-level programming is so often filled with arrogance: Stuff like “I work on hard low level things, only above-average programmers like me can do it”. Don’t believe me? This is literally one of the first pages you read on the Os dev wiki: https://wiki.osdev.org/Required_Knowledge

    In fact, writing an OS is usually considered the most difficult programming task. You will need above-average programming skills before even considering a project like this. Failure to comply will make you look silly.

    ugh. “Failure to comply will make you look silly” Did a 7 year old write this? We don’t want to be taunting beginners or making them feel stupid, we want to be empowering them.

    And that’s the position Rust is taking: Rust helps anyone be a systems programmer. Maybe systems programing isn’t particularly well defined, but many people reading this will think “scary part of programming” and then “oh wait, Rust let’s me do that”. That’s awesome: A clear path forward to doing something scary.

    Lastly, I really do like the design. That’s obviously personal preference though, what I really like is that there is design at all. Again low level programming is littered with bad design or lack thereof: having put work into their design is another way of being more inclusive.

    1. 12

      Low-level programming is so often filled with arrogance: Stuff like “I work on hard low level things, only above-average programmers like me can do it”.

      At a previous workplace, there was a cohort of strong systems programmers who would emphasize the difficulty and attainability of systems programming skills. It was out in the open - this is hard, you can do it, with practice, let’s work on it together.

      This was accompanied with a culture of regular talks, sharing of projects, ideas, workshops to get all devs interested in systems ideas - building a shell, using flamegraphs, writing data structures, cache locality. Frontend, SRE, sysadmins, everybody was welcome. That was real great stuff, the opposite of the more common “hey, Joe Frontend, get out of here and go bang some legos together.”

      Anyway, not sure where I’m going with this - I guess my point is:

      “Systems programming is hard - if you’re willing, you can do it. Here’s some resources” is a more welcome attitude vs. “Let’s scare off these morons”.

      Who knows, one of those morons might get motivated, do some learning, and become a good systems programmer some day.

      1. -9

        Writing an operating system is an enormously difficult task. Scaring off people that are not ready to even begin, that so lack the fundamentally required skills that they can’t even follow basic tutorials? That’s a service to the community.

        It’s simply not the case that everyone can be a systems programmer. Rust is an extremely complicated language, and if someone can’t do systems programming in C they certainly won’t be able to do it in the much more complex language Rust.

        Systems programming is complicated and scary and difficult and it should be. People should be scared to release low level software, because of the massive implications of them getting that software wrong.

        Certainly we do not want to be ‘empowering’ people.

        1. 22

          Writing an operating system is an enormously difficult task.

          Writing an operating system is an enormously large task. It’s not obvious the problems posed by OSs are substantially harder than those posed by distributed systems, compilers, machine learning, UI design, game development, sys ops, etc. Certainly there is much worse tooling for os development! (Rust is one foray into making this better!) Part of the reason, I think, the tooling is bad is because there’s this notion that writing an operating system should be hard: it’s a self-fulfilling prophecy.

          Scaring off people that are not ready to even begin, that so lack the fundamentally required skills that they can’t even follow basic tutorials? That’s a service to the community.

          I am all for giving people basic tutorials! Scaring people, on the other hand, seems like the community is trying to weed out the weak and let only the best programmers in. That’s certainly a possible goal for a community, just not a community I want to be a part of.

          Rust is an extremely complicated language, and if someone can’t do systems programming in C they certainly won’t be able to do it in the much more complex language Rust.

          I guess we’ll see about that! Rust is making the claim that it’s easier to do systems programming in Rust than it is in C.

          Certainly we do not want to be ‘empowering’ people.

          I do :)

          1. 18

            Multiple universities offer a “write an operating system” class in the CS1XX level.

            1. 4

              I couldn’t disagree more, and one of my favorite things about the rust community is how we reject gatekeeping like this. Portraying it as a binary choice a la “either we deter people or they will write bad systems code” is intellectually dishonest at best. As @sevagh noted, it’s possible to both acknowledge the difficulty of writing good low-level code AND encourage people to learn how to do it. Providing good tools, good documentation, good learning resources, and good mentorship is, in my opinion, the best way to accomplish this, and that’s what I see the rust community pursuing

          2. 17

            I don’t like it, but I guess I’m not the target audience anymore.

            Previously it was important to introduce the language. What is it about? “Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.”

            Today you can probably assume that people either know what makes Rust unique or they don’t care. Instead people are kind of hesitant to try it. Why should you try Rust? “Rust: The programming language that empowers everyone to become a systems programmer.” Hm, “empowers” sounds nice. I want to be empowered…

            I don’t think it’s perfect as a tag line though. First, it assumes you know what “systems programming” is and that you want to do that. Second, it suggests that you are not a rockstar programmer. You are just one of everyone.

            1. 4

              Scroll down a bit and they’ve still got a description of the language proper, though they seem to have rephrased it as “Performance, Reliability, Productivity” (which seems like a good description).

              My biggest complaint is that white-on-maroon kind of hurts my eyes.

            2. 4

              While the new design looks really good, is there a reason why the contents of the ‘community’ pages differs so much? In particular the omission of IRC channels (likewise for the ‘Social’ at the bottom of the page). Is this indicative of an official shift away from IRC to Discord?

              1. 4

                Seeing the discord logo at the footer was probably the most saddening part of this design.

                1. 2

                  I’m not a fan, but there’s ton of practical advantages that Discord gave us. I prefer Zulip, but they lacked crucial features when we evaluated. (Now fixed)

                  Also note that we only publish resources our moderation team can cover and that one is stretched thin currently.

                  1. 2

                    Not everyone on Discord is a gamer Nazi. Joining a community that’s actually filled with decent people gave me an insight into the good parts of Discord, compared to IRC and compared to Slack (granted I don’t have that much experience of Slack).

                    Good stuff includes:

                    • pinnable topics with multiple lines
                    • a great mobile interface
                    • persistent identities (not 100% if this is universal thing though)

                    The game-centric stuff is a bit off-putting but if it helps keep the servers running I’m fine with it.

                    1. 4

                      I don’t care about the other users on discord. I care that its a proprietary memory hog application that connects to a centralized server.

                      1. 1

                        Thanks for clarifying your viewpoint.

                      2. 3

                        Seeing people assume that the biggest problem with Rust’s adaptation of Discord is that it’s also used by “gamer Nazis” was probably the saddest part of this comment thread.

                        (The biggest problem with Discord is that it is a closed-source proprietary platform used as a primary means of communication for an open-source project, that the developers of that project don’t seem to have a problem with. There’s no reason in principle why it’s bad for Rust-related chat to use the same technology that gamers with politics that some people don’t like use.)

                        1. 2

                          The funny thing is that I don’t even know what “gamer Nazi” is even referencing in the context of Discord. (A Google search shows some interesting results.) To my uneducated eye, Discord is just another chat platform. I like IRC personally, but it’s a weakly held preference that probably has more to do with familiarity. Although, one of my favorite things about IRC is that I can keep logs in a plain text format and easily grep them. I use that functionality a lot. I don’t know how to do that with Discord. Nevertheless, I hang out there because other people are there, and we make sure it’s just as friendly as any other official Rust space.

                          1. 2

                            As sad as I am to say it, the reason for most working groups (not all!) ending up on Discord is literally: it works and has mobile clients that notify properly. It’s better than Slack, exposes less personal information and actually has moderation features.

                      3. 2

                        A huge part of the community page was outdated and frequently checking it became unfeasible. This includes a lot of the IRC channels. With Mozillas IRC channel becoming more and more a target for spammers and such, there is also a move away from them, especially for project members. You can chat there, but there is a high likeliness that you can’t interact with the project if you want. It’s indicative of a practical shift. By policy, the Rust project does not enforce any place to chat.

                        Also, the old style of the community page was great for a young community. We could literally show everything on there. Paradoxically, that becomes unfeasible when the community grows. A lot of things have moved to other places.

                        We felt that a lot of the things now present on the page were not well presented before. For example, conferences were not well presented.

                        Is there anything you absolutely miss from the old page?

                        1. 3

                          Hello, there is not something that I miss per se, but I just found it interesting that the contents differed so much - thank you for your clarification on that.

                          I was not aware of the shift towards Discord. It came as bit of a shock, and while I understand that this is not the correct place to further the discussion, I must confess to be a bit saddened by it (especially with open source alternatives).

                          Regardless, congratulations once again on the new design!

                          1. 2

                            I’m fine with having that discussion, but the short version is: we evaluated a lot of chats and they ranged from functionally broken to lacking features that we need (most notably: moderation). For example, when we evaluated it, Zulip had some very glaring flaws making it hard to use for open projects. (Zulip fixed those in 1.9)

                            Discord fares surprisingly well there. I’m not happy with the state, but there’s almost no good FOSS tools with a thought through moderations story that work well.

                            I have a very rough writeup of our experiences there: https://yakshav.es/from-the-rider-down/

                        2. 1

                          It’s already been discussed to death. And the answer is: yes, there is an official shift from IRC to Discord. irc.mozilla.org#rust is probably never going away, but having built-in logging and persistence is a big enough deal to recommend it as the default.

                          1. 2

                            Matrix/Riot also does these things. Over the last year they have made it a whole lot faster as well.

                        3. 4

                          Wow, the new website is stunning. Those underlines are so nice I want to steal them for my own website. The website honestly makes me want to try rust again and I’ll have some time to do that over the christmas holidays.

                          1. 2

                            Thanks <3

                          2. 4

                            I hope they change the tag line: “Rust: The programming language that empowers everyone to become a systems programmer.”

                            In my experience, “systems programmer” is used to mean “I write programs that are hard, so I can look down on people who do mere ‘scripting’ programming”

                            1. 9

                              I think Wikipedia sums it well:

                              […] application programming aims to produce software which provides services to the user directly (e.g. word processor), whereas systems programming aims to produce software and software platforms which provide services to other software, are performance constrained, or both […]

                              Source: https://en.wikipedia.org/wiki/System_programming

                              1. 3

                                I’ve just now realized that to me, “systems programming” is basically equivalent to “not having to care about unicode”.

                                I really like this.

                                1. 1

                                  So an alternative to find would not have to deal with filenames or directory names that contain Unicode?

                                  Or if you’re writing a database engine, you don’t have to support Unicode?

                                  I’m being a tiny bit sarcastic, but it’s also interesting to investigate the boundary between “user” and “systems” programming.

                                  Edit wording

                                  1. 1

                                    It’s certainly a matter of perspective to a large degree (one developer’s platform is another developer’s application), but from where I sit, yes, find, databases and such are definitely more in the “applications” direction.

                                    The “systems programming” I deal with consists of things like filesystems (please please please don’t shove unicode in there), block storage layers, thread scheduling, memory allocators, etc.

                                    1. 2

                                      The “systems programming” I deal with consists of things like filesystems (please please please don’t shove unicode in there)

                                      Hah, doesn’t one of the new macOS file systems do this? IIRC, they require valid UTF-8 and I think even do normalization. With that said, I am not knowledgeable about file systems, so I don’t actually know at which level of abstraction these rules are implemented.

                                      Anyway, I love Unicode. A significant fraction of the work I’ve done in Rust land has involved Unicode in one form or another. But my area of interest is text search, so that makes sense. Whether that’s “systems” or not, I dunno. ¯\_(ツ)_/¯

                                      1. 3

                                        Hah, doesn’t one of the new macOS file systems do this?

                                        I haven’t really been paying too much attention to Apple recently, though it certainly seems believable – their filesystems have been case-insensitive since time immemorial, so madness of that sort was already well-established there…

                              2. 6

                                I thought this was a really great description of both the ambiguity of the term and its origin.

                                http://willcrichton.net/notes/systems-programming/

                                1. 4

                                  Thanks for sharing. This article does a good job of exploring why this is such an ill-defined term. In particular I find the early pre-Osterhout definitions to make much more sense than the modern usage. His dichotomy really seems to have set the discourse back significantly.

                                  1. 1

                                    Huh, I thought the definitive treatise on the nature of systems programming was this.

                                  2. 6

                                    We’re not fully happy with the tag line currently and happily take suggestions. “systems programming” being a fuzzy term is one of the problems. The spirit is definitely what we want, but if someone were to find a better way to phrase it, I’d be very happy.

                                    1. 6

                                      My translation of “systems programmer” is “we don’t do GUIs”. ;)

                                      1. 3

                                        Yet many GUIs outside of the web context are written in systems programming languages :)

                                        1. 1

                                          Sounds like rust alright.

                                        2. 4

                                          I like the spirit of the tagline. Systems programming is a real thing, it’s genuinely difficult to do correctly - and Rust is helping make that situation better, so that more people can write less buggy systems code.

                                          1. 1

                                            This is cynical, although sometimes true.

                                            1. -6

                                              Systems programming is genuinely difficult in a way that, frankly, GUI programming just isn’t.

                                              1. 10

                                                If you just switch “GUI programming” and “Systems Programming”, this statement checks out, too. Modern GUI programming with backends and networks is a complexity beast. Add translation and such on top and it becomes incredibly hard.

                                            2. 2

                                              Focusing on what Rust is good at building is probably wise, it helps you envision using the features you read about toward some productive end, instead of trying to find a problem that fits your neat feature.