Skip to content
DevMeme
4695 of 7435
Rust and Haskell suggest books and papers instead of simple library docs
Documentation Post #5145, on Apr 21, 2023 in TG

Rust and Haskell suggest books and papers instead of simple library docs

Why is this Documentation meme funny?

Level 1: More Than You Asked For

Imagine you ask for something simple – say you just made a new toy and you wonder, “Should I write a little instruction sheet for it?” Now picture two friends giving you these responses: One friend, who loves to be super thorough, laughs and says, “No, that’s not enough – you should write a whole book of instructions!” The other friend, who’s always very scholarly, says, “Nah, even a book isn’t enough. You should write an actual research paper about how your toy works!” 😄 It’s like expecting a quick one-page how-to, but instead being told to create an entire encyclopedia or a science journal article. The joke is funny because the poor person only asked if they should write some normal instructions, and the friends responded with completely over-the-top suggestions. It highlights how some groups of people sometimes go way beyond what you’d expect. In the meme, the programmer just wanted to know about writing docs (a simple guide), but the Rust friend and Haskell friend comically insist on something much bigger. It’s as if you asked for a snack and they suggested cooking a seven-course meal! The humor comes from that extreme leap in expectations – turning a modest task into a monumental one. Even if you don’t know Rust or Haskell, you can relate to the silly scenario: sometimes experts love to make things a lot more complicated (or thorough) than needed, and that contrast is what makes this cartoon situation so amusing.

Level 2: Not Just a README

In this meme, we have three cartoon characters representing a scenario familiar in programming. The character on the left (in the green hoodie, holding a laptop marked “Harder Bugs”) is a developer who’s just created a code library – a reusable collection of code that others might use. She asks, “I just wrote a library, should I write some docs?” In everyday software development, writing documentation (“docs” for short) for your library is a common and recommended practice. Documentation usually means a README file or web pages that explain how to install the library, use its functions, and maybe some examples. It’s typically concise and to the point so users can quickly learn what they need. The humor kicks in with the responses she gets from the other two characters, who personify the Rust and Haskell programming language communities.

The middle character is wearing an orange shirt emblazoned with Rust’s gear-like logo (a cogwheel with an “R”). This signifies he’s a Rust developer (Rust fans often call themselves Rustaceans, a playful term since Rust’s mascot is a crab). Rust is a systems programming language that emphasizes performance and memory safety. It’s relatively young (first stable release was 2015) and quickly became famous not just for its features but for its excellent learning resources. Rust’s official documentation is presented as a comprehensive online book titled “The Rust Programming Language.” That’s right – the primary Rust docs feel like a complete textbook, starting from “Hello World” and delving into advanced concepts. The Rust community has embraced this style. They often create book-length guides for libraries or themes. So, when the Rust character in the meme says, “No, just write a book,” he’s jokingly reflecting the real Rust culture: they love extensive documentation. Instead of a simple docstring or a few pages of notes, Rust folks might suggest writing a full guide or manual. This doesn’t literally mean a printed book, but an in-depth documentation website structured like chapters of a book. For example, if you made a Rust library for handling network calls, a Rustacean might encourage you to also create a thorough tutorial covering setup, usage, examples, common pitfalls, etc., often using a tool like mdBook to generate a multi-page, navigable “book” out of markdown files. It’s an exaggeration – not every Rust project has its own book – but it’s common enough that the joke rings true. Rust developers are proud of how well-documented their ecosystem is. They joke that any important project ends up with so much documentation that calling it a book isn’t far off. So in the meme, the Rust guru’s answer teases this tendency: why settle for basic docs when you can author a whole guidebook?

On the right, we have the character in a purple shirt with Haskell’s logo (an abstract sideways lambda λ and arrow). She represents a Haskell developer. Haskell is a purely functional programming language that has been around since the 1990s. It’s known for its strong static type system (with features like monads, which are a way to handle things like I/O or state in a pure functional way) and for using a lot of abstract math and computer science theory under the hood. Haskell’s community has a reputation for academic roots – many Haskell contributors and users learned it through university or research. Because of this background, Haskell documentation can sometimes read like academic literature. When our Haskell character says, “No, just write a paper,” she’s referring to an academic paper. In a literal sense, an academic paper is what researchers write to describe new discoveries or technologies, usually around 8-15 pages with an abstract, sections, formulas, and references. Of course, not every Haskell library comes with an actual published paper, but the joke is pointing out that Haskell people often prefer very deep, theoretical explanations. It’s not unusual for Haskell library docs to include references to research or for the authors to have written a blog post or thesis-like article about the approach they took. For instance, if you create a new Haskell library for a data structure or algorithm, instead of just writing a quick usage guide, a Haskeller might think in terms of “What scholarly information can we provide?” They might compare it to previous research, prove why it works, or use formal terminology. The result can feel like an academic treatise rather than a how-to manual. So the meme exaggerates this by having the Haskell rep suggest writing a paper as documentation – implying the documentation should be as thorough and rigorous as a university research paper! This reflects the haskell_academic_tradition: a cultural quirk where Haskell documentation leans toward the formal and mathematical.

In simpler terms, each of the two communities is known for overshooting the usual documentation scope:

  • Rust: Known for book-like documentation. The meme joke “write a book” riffs on the fact that Rust’s learning materials are often the size of a small book. The community encourages very detailed tutorials and guides.
  • Haskell: Known for academic-style documentation. “Write a paper” jokes that Haskell folks treat new code as if it might be presented at a conference, with all the depth that implies.

The top caption “I JUST WROTE A LIBRARY, SHOULD I WRITE SOME DOCS?” is the setup. It’s a perfectly normal question for a developer to ask. Writing docs is typically a straightforward task – you’d write about how to use the library in a README or generate some reference docs from comments. But the two answers twist that expectation. They highlight how these two language communities uniquely answer that question:

  • Rust’s answer is effectively, “Don’t just write some docs, write a whole book about it!”
  • Haskell’s answer: “Don’t just write some docs, write a formal paper on it!”

This is an inside joke among developers (dev_community_in_jokes) about how different programming cultures handle things like documentation. Anyone familiar with Rust or Haskell will likely chuckle, recognizing the slight absurdity and truth in those answers. It also subtly comments on language tribalism: each language group thinks their approach (be it exhaustive books or rigorous papers) is the “right” way to do things. If you’re new to these languages, just know: they really do place a high value on documentation – sometimes to an intimidating extent. The meme is a light-hearted way of saying “Rust and Haskell take documentation so seriously, it’s almost comical compared to other languages.”

Level 3: Tomes & Treatises

On the surface, this meme pokes fun at documentation culture in different programming language communities, but to an experienced developer it hits a very real vein of truth. The scene: a programmer proudly says, “I just wrote a library, should I write some docs?” In most circles, the obvious answer would be “Yes, of course, write clear docs so others can use it.” But here our two respondents – representing the Rust and Haskell communities – give over-the-top answers:

Dev: I just wrote a library, should I write some docs?
Rust Developer (orange Rust gear logo): No, just write a book.
Haskell Developer (purple lambda logo): No, just write a paper.

The humor lands because it exaggerates a stereotype that is grounded in reality. Seasoned engineers know that Rust folks famously love extensive documentation. The Rust community prides itself on comprehensive guides – so much so that writing a “mini-book” has become the norm for significant projects. It’s a running joke (and point of pride) that there’s a book for everything in Rust. New to asynchronous Rust? There’s “The Async Book.” Learning embedded development in Rust? Check out “The Embedded Rust Book.” The pattern is clear: Rust developers believe in teaching through narrative and examples, often starting from first principles and building up. This is fantastic for thorough learning, but it means the “documentation” can be hundreds of pages. The meme riffs on this by imagining a Rustacean immediately suggesting more than just some docs – instead, go author an entire volume. It’s funny because it’s only a slight exaggeration. In Rust circles, it’s common to hear, “Did you read The Book?” as a response to newbies’ questions. The community has even turned RTFM (“Read The Fine Manual”) into a much friendlier practice: they’ve actually written a great manual and they earnestly expect you to read all of it! So the Rust character saying “No, just write a book” playfully mocks how Rust devs document everything as if they’re crafting a textbook. It’s a wink at the rustacean_culture of going the extra mile (or ten) in documentation. Because who doesn’t have time to write a complete 300-page manual whenever they release a new library, right? 😉

Now consider the Haskell side of the joke. Haskell is an old-school functional programming language with a strong academic bent. Many Haskell enthusiasts have a computer science background, and they treat programming like a research endeavor. In practice, this means Haskell documentation can feel very… formal. Instead of a friendly step-by-step guide, you might get a link to a research paper on the library’s underlying theory or a blog post dense with equations. There’s a well-known bit of dev_community_in_jokes about Haskell: ask a simple question and get an answer that assumes you have a PhD. For instance, someone asks “How do I use this new Haskell library?” and the reply might be “Here’s a paper presented at Haskell Symposium that explains it.” The meme nails this tendency with the Haskell character saying “No, just write a paper.” It’s a playful jab at Haskell’s academic tradition – implying that to be taken seriously in that crowd, you’d better publish your ideas in an academic format. Seasoned devs laugh because they’ve seen it happen: the Haskell ecosystem often shares knowledge through lengthy papers or academic-style documentation. A real-world example is how many Haskell language features or libraries are introduced. Software Transactional Memory (STM) in Haskell? That came with a famous paper by Simon Peyton Jones. Arrow notation or some fancy new type system extension? Likely accompanied by a scholarly article. Even learning resources for Haskell sometimes read like college textbooks (take the venerable “Real World Haskell” book or the countless PDF tutorials floating around). So the joke is that writing a normal user-friendly doc might be almost too mundane for Haskell’s culture – instead, go submit a 15-page PDF with citations and footnotes! It’s making fun of that gentle elitism or lofty standard: documentation so heavy that it resembles academic research.

What really makes seasoned engineers smirk here is the tribalism and pride underneath the humor. This meme is a lighthearted jab in the ongoing LanguageWars – the friendly rivalry where each language community boasts about how they do things (often to a ridiculous extent). Rust and Haskell are both beloved in their niches, and part of their identity is “We do docs properly.” Of course, “properly” means different things: Rust’s notion of proper docs = a polished book with examples and exercises; Haskell’s notion = rigorous formal explanation possibly worthy of a publication. Each group sees the other and themselves with a mix of admiration and satire. A Rustacean might tease, “Those Haskell folks expect you to read research papers just to use a library,” while a Haskeller might retort, “Those Rust kids write an entire novel for Hello World.” DocumentationHumor like this resonates because anyone who’s bounced between communities has experienced the whiplash. In one language, documentation might be a sparse README.md on GitHub. In Rust, that same library would have an entire web-hosted book with chapters. In Haskell, the library’s creator might have written a paper or at least a lengthy academic blog post complete with type theory jargon. It’s all documentation, but the style and volume vary wildly. The meme captures that contrast in one succinct, exaggerated exchange.

From an insider perspective, there’s also an underlying truth about documentation woes. Writing good docs is hard and often neglected. Rust and Haskell, commendably, try to avoid the “no docs” problem by erring on the side of too much documentation. The joke suggests that if you ask these communities, they won’t let you off with just a brief reference or a few comments – oh no. They’ll encourage you to pour your soul into a comprehensive write-up. It’s funny because it’s so extra – like meeting two bookworm friends who respond to “Should I jot down a page of notes?” with “No, produce a whole novel or research essay.” But seasoned devs also nod knowingly: better overly thorough docs than no docs at all! In practice, many have felt both the pain and the payoff of these approaches. Sure, reading a whole book or paper is a commitment (we’ve all groaned at a 40-page spec at some point), but at least the information is there. The meme cleverly exaggerates this dynamic, and that’s why it’s so on point for those in the know. It gently roasts the Rust and Haskell communities for their documentation overkill, while simultaneously acknowledging (with a chuckle) that this overkill is kind of their hallmark. After all, these are the languages where documentation isn’t just an afterthought – it’s practically a literary genre.

Level 4: Academic Overtones

Both Haskell and Rust carry a deep intellectual lineage that seeps into how they handle documentation. Haskell was born in academia – it’s essentially the product of computer science researchers distilling lambda calculus and pure functional programming into a practical language. As a result, Haskell’s culture has a strong academic tradition. Many Haskell innovations debut as scholarly papers at conferences like ICFP, and new libraries often come paired with a research paper explaining the theory behind them. For example, the concept of a monad in Haskell was popularized through academic papers (Philip Wadler’s “Monads for functional programming” is a classic). In fact, Haskell encourages literate programming: you can write Haskell code in what looks like a LaTeX article, mixing prose and code. It’s not uncommon for Haskellers to describe a library in the style of a formal paper, complete with theorems or type laws. This means that writing documentation can feel like writing a mini thesis. The community is comfortable with dense notation and theoretical terms – a simple question about a Haskell feature might lead you down a rabbit hole of category theory and formal proofs. The haskell_academic_tradition is real – knowledge is often passed via PDFs and academic jargon. A tongue-in-cheek example: ask a Haskeller about a monad and you might hear, “A monad is just a monoid in the category of endofunctors” 😅 – basically a mathematically rigorous way of saying “it’s complicated, go read this paper.” This academic mindset sets the stage for why a Haskell dev in the meme would casually say “No, just write a paper.” It’s part of Haskell’s DNA to treat documentation as something you could publish at a symposium.

Rust, on the other hand, emerged from industry (originally a Mozilla project) but with heavy influences from programming language research. Rust aimed to blend low-level systems programming with strong safety guarantees – something that hadn’t been done in quite this way before. To achieve that, Rust introduced concepts like the borrow checker and lifetimes, which have parallels to academic ideas (like affine/linear types and region-based memory management from research). Explaining these nuanced concepts required a thorough approach. The Rust community responded by writing book-length documentation. The official Rust guide, fondly called “The Rust Programming Language”, is literally structured as a book – because a few wiki pages wouldn’t cut it for teaching Rust’s complex rules. This set a precedent. Now many Rust libraries come with extensive, book-style guides. There’s even the Rustonomicon, a tome for unsafe Rust, and countless supplementary books (async programming, embedded Rust, etc.). This is Rust’s flavor of thoroughness, which you could say has formal foundations too: the language designers care about correctness so much that they document why things are the way they are in exhaustive detail. Writing an RFC (design proposal) for Rust often feels like writing a scientific paper complete with motivations and considered alternatives. So while Rust isn’t as “ivory tower” as Haskell, it has its own obsessive documentation streak. It’s not about jotting quick notes – it’s about writing narrative guides, almost like textbooks, to educate every developer on the rustacean_culture and best practices. In both ecosystems, there’s this in-depth, scholarly vibe to documentation. That’s why the meme’s scenario arises: the naive question “Should I write some docs?” meets answers influenced by each language’s pedigree. For these communities, a mere README file feels inadequate – instead you get a tome from Rust or a treatise from Haskell. The heavy theoretical and historical context behind each language directly feeds this expectation that documentation should be comprehensive and authoritative enough to be bound as a book or submitted as a paper.

Description

Cartoon-style meme on a pale green background. Top caption in large capitals reads: "I JUST WROTE A LIBRARY, SHOULD I WRITE SOME DOCS?" A developer seen from behind (green hoodie, laptop under arm labeled "HARDER BUGS") poses the question. Two other characters face her: the middle one wears an orange shirt with the gear-shaped Rust logo and replies in smaller text above, "NO, JUST WRITE A BOOK"; the rightmost wears a purple shirt with the Haskell lambda-arrow logo, holding a coffee cup, and says "NO, JUST WRITE A PAPER." The humor riffs on how certain language communities (Rust’s extensive book-level guides and Haskell’s academic papers) sometimes prefer heavyweight literature over straightforward API documentation, poking fun at documentation culture and language tribalism familiar to seasoned engineers

Comments

9
Anonymous ★ Top Pick Rust and Haskell don’t skip docs; they just embed the API in a 400-page book or a peer-reviewed PDF so that by the time you find the function signature, you’ve earned the lifetime
  1. Anonymous ★ Top Pick

    Rust and Haskell don’t skip docs; they just embed the API in a 400-page book or a peer-reviewed PDF so that by the time you find the function signature, you’ve earned the lifetime

  2. Anonymous

    The eternal documentation dilemma: Rust devs will write you a 500-page book explaining ownership semantics before adding a single README example, while Haskell devs publish category theory papers that require a PhD to understand why your monad transformer stack won't compile. Meanwhile, your users just want to know what parameters your function takes

  3. Anonymous

    Ah yes, the classic open-source maintainer's guide to documentation: Step 1 - Write a brilliant library. Step 2 - Publish a 400-page O'Reilly book and three peer-reviewed papers. Step 3 - Wonder why adoption is slow when your README just says 'see the book.' Meanwhile, developers are desperately grepping through your test suite trying to figure out how to instantiate your main class. It's the academic equivalent of 'the code is self-documenting' - technically impressive, commercially impractical, and guaranteed to spawn a dozen 'Awesome X' lists trying to reverse-engineer your API from conference talks

  4. Anonymous

    Docs? Nah, drop a 400-page tome or arXiv paper - users make great peer reviewers

  5. Anonymous

    Library release checklist: docs if it’s sane, a book if your API leaks lifetimes, and a paper if the type signature is the proof

  6. Anonymous

    Rust points you to Chapter 8; Haskell hands you a DOI - somewhere between rustdoc and Haddock, your onboarding estimate just slipped from hours to quarters

  7. @ZgGPuo8dZef58K6hxxGVj3Z2 3y

    Lmao

  8. @misesOnWheels 3y

    javascript: no, just write an endlessly scrolling webpage

    1. @LeslieFn 3y

      no, just write undefined

Use J and K for navigation