#[1]GitHub

  [2]Skip to content

  (BUTTON) Toggle navigation
  [3]Sign up
  (BUTTON)

    * (BUTTON) Product
         + Actions
           Automate any workflow
         + Packages
           Host and manage packages
         + Security
           Find and fix vulnerabilities
         + Codespaces
           Instant dev environments
         + Copilot
           Write better code with AI
         + Code review
           Manage code changes
         + Issues
           Plan and track work
         + Discussions
           Collaborate outside of code
         + Explore
         + [4]All features
         + [5]Documentation
         + [6]GitHub Skills
         + [7]Blog
    * (BUTTON) Solutions
         + For
         + [8]Enterprise
         + [9]Teams
         + [10]Startups
         + [11]Education
         + By Solution
         + [12]CI/CD & Automation
         + [13]DevOps
         + [14]DevSecOps
         + Case Studies
         + [15]Customer Stories
         + [16]Resources
    * (BUTTON) Open Source
         + GitHub Sponsors
           Fund open source developers
         + The ReadME Project
           GitHub community articles
         + Repositories
         + [17]Topics
         + [18]Trending
         + [19]Collections
    * [20]Pricing

  ____________________
    * Search All GitHub RET
      Jump to RET

    * No suggested jump to results

    * Search All GitHub RET
      Jump to RET
    * Search All GitHub RET
      Jump to RET
    * Search All GitHub RET
      Jump to RET

  [21]Sign in
  [22]Sign up

  (BUTTON)
  {{ message }}

  Featured Article

What we can learn from vintage computing

  Thanks to open source, nothing is ever obsolete.

  Klint Finley // December 13, 2022

  The ReadME Project amplifies the voices of the open source community:
  the maintainers, developers, and teams whose contributions move the
  world forward every day.
    *
    *
    *

  [23]The ReadME Project (BUTTON)
  Menu

  (BUTTON)
  Close
  Browse by story type
    * [24]Featured Articles
    * [25]Developer Stories
    * [26]Guides
    * [27]The ReadMe Podcast

  Explore Topics [28]See all
    * [29]Open Source
    * [30]Culture
    * [31]Security
    * [32]DevOps

    * [33]Nominate a developer//
    * [34]Support the community

  The Apple Newton was already old when [35]Morgan Aldridge bought one in
  2005. But the pre-iPhone handheld computer that Apple first sold in
  1993--and discontinued in 1998--was the best tool for his needs.

  "I'd used Palm Pilots, which were still the go-to digital organizers at
  the time, and I knew they had syncing issues," he explains. Plus, most
  other handhelds then on the market used inexpensive RAM memory that
  would lose data if you lost power, requiring you to restore from
  desktop backups.

  Aldridge's research led him to the Newton, which used solid-state
  storage that allowed it to retain data indefinitely, much like modern
  smartphones. Users reported leaving Newton devices in drawers and
  closets for years and finding they still had all their data when they
  finally powered them on. Plus, he found that the Newton community was
  still actively developing drivers and software for the platform. So he
  bought a Newton Message Pad that he continued using well into the
  smartphone era. These days, Aldridge uses an iPad as his primary
  digital organizer, but he still participates in the community as the
  maintainer of the [36]NewtonScript resource website and the [37]United
  Network of Newton Archives.

  Thanks to open source, no technology ever has to become obsolete, so
  long as a community remains to support it. You can sync Newtons and
  Palm Pilots with modern desktops, download web browsers for
  long-discontinued operating systems, or connect vintage computers like
  the Apple IIe [38]to the modern internet via WiFi. Every year, new
  cartridges are released [39]for old-school video game consoles like the
  Nintendo Entertainment System and Game Boy.

  People keep old software and online platforms alive as well. The
  [40]Dreamwidth team forked an old version of the early social network
  [41]LiveJournal's source code and built a community around it. The
  dial-up bulletin board system software [42]WWIV is still maintained and
  there are [43]plenty of BBSes still around. Teams are working to
  restore aspects of early online services like AOL and Prodigy. And you
  can still use Gopher, the hypertext protocol that was -- for a brief
  period in the early 1990s -- bigger than the web.

  Developers spend countless hours on these sorts of projects, often with
  little, if any, hope of financial reward. So why dedicate so much
  effort keeping these technologies alive, or reviving them, long after
  they were discontinued by the companies that created them? Nostalgia
  and the urge to escape today's often exhausting digital environments
  are obvious reasons. But there's more to it than that. Working with
  vintage technologies is fun, helps developers learn more about computer
  science, and preserves computing history. And in many cases there are
  lessons to be learned from the "old ways."

  There's nothing quite like actually navigating through a service's menu
  structure and interacting with its various features to understand these
  services and their place in computing history.

Interactive history

  Historic preservation is one of the most evident benefits of vintage
  computing. On one hand, software and digital content are among the
  easiest cultural artifacts to preserve because they can be copied and
  backed up easily. But the ability to actually run that software can be
  a challenge as platforms are discontinued.

  Emulators have long provided a way to run old software--written for
  discontinued hardware and operating systems that might be difficult or
  impossible to find today--on newer platforms. You can play retro games
  with [44]MAME or [45]RetroArch, manage your contacts with the
  cult-favorite [46]Lotus Agenda personal information manager in
  [47]DOSBox, or [48]run old Palm applications in your browser. The open
  source communities behind these projects endeavor to mimic the
  necessary hardware and software layers as accurately as possible.
  Networked software is inherently more difficult to preserve, however,
  because it relies on not only local software but server-side software
  as well. In the case of LiveJournal, the back-end code was open source
  until 2014, so it was easy enough to not only preserve that code but
  create forks like Dreamwidth. Rather than a centralized service, Gopher
  is a protocol, much like HTTP, which makes it straightforward to create
  modern Gopher clients and servers. But some of the biggest and most
  historically important networked services relied on lost proprietary
  software running on servers that have been long since scrapped.

  Early online services like AOL/Quantumlink, Compuserve, and Prodigy had
  millions of users at their peak and played host to software, games,
  artwork, and, of course, countless online discussions. Before the era
  of the smartphone and ubiquitous internet, these dial-up services
  provided access to many digital experiences we take for granted today,
  including online news, weather forecasts, sports scores, stock market
  quotes, multiplayer games, email, chat--even online encyclopedias.

  While screenshots can help document what these services were like,
  there's nothing quite like actually navigating through a service's menu
  structure and interacting with its various features to understand these
  services and their place in computing history.

  "When any sizable online service disappears, a piece of our
  civilization's cultural fabric goes with it," journalist and computer
  historian [49]Benj Edwards wrote in a 2014 [50]article in The Atlantic
  about efforts to restore lost Prodigy content.

  Prodigy is of particular historical interest. At a time when other
  online services were typically text-based and difficult to use, Prodigy
  offered a graphical interface and helped pioneer digital advertising,
  e-commerce, and online travel booking. Long before Amazon, Prodigy
  enabled you to buy clothes, housewares, electronics, and even groceries
  online. Prodigy enthusiast Jim Carpenter realized all of this was
  poorly documented, Edwards explained in his article. Even
  [51]screenshots of Prodigy were hard to come by. Fortunately, Carpenter
  discovered that Prodigy stored quite a bit of content in local cache
  files and he has been able to restore many images from old computers.
  More recently, a Prodigy demo disk was uploaded to the Internet
  Archive. This demo doesn't connect to a server, but you can [52]explore
  some of the features from your browser.

  In 2019, programmer [53]Phillip Heller came across Edwards's article
  and decided to get involved with the [54]Prodigy Preservation Project.
  He wanted to go a bit further than an offline demo and make it possible
  to actually use Prodigy today. "Benj and Jim felt that re-creating the
  Prodigy server was a distant and difficult goal," says Heller. "I
  thought it sounded like a fun challenge."

  The result is a Prodigy-compatible backend called [55]Prodigy Reloaded.
  In a demo for The ReadME Project, Heller connected to a Prodigy
  Reloaded server using an old copy of the Prodigy client running in
  DOSBox and walked through features such as the news and weather
  services. Heller populated those features with news headlines and
  forecasts culled from screenshots, but he hopes to be able to add live
  news, weather, and stock updates in the future.

  I think the biggest reason a lot of us are into retro-computing is that
  it harkens to an age when you could understand everything the computer
  was doing"
  Inline1_Feature_Vintage computing

The joys of vintage computing

  Heller says that historical preservation is just one reason he built
  Prodigy Reloaded. "It's also just a lot of fun," he says. "It's like
  putting together a really tough puzzle, where I have some of the edge
  pieces but not the middle pieces. I have to use the shapes I have to
  fill in the rest of the picture."

  Fun and learning are commonly cited reasons for working on these sorts
  of projects. "I think the biggest reason a lot of us are into
  retro-computing is that it harkens to an age when you could understand
  everything the computer was doing," says [56]Cameron Kaiser, a vintage
  computing enthusiast who maintains [57]Floodgap, a server and website
  that hosts one of the [58]most well-known modern Gopher servers, as
  well as the PowerPC web browser [59]TenFourFox and [60]many other
  projects.

  "Today's machines are so complex that you could spend the rest of your
  life understanding them," says [61]Matthias Melcher, a contributor to
  the Newton emulator [62]Einstein. "The Newton or the Game Boy are some
  of the last systems where you can understand the whole thing, from the
  CPU to the machine code."

  "If you really want to understand computers, first start off with one
  of the old classic machines," game developer [63]Rebecca Heineman said
  on a [64]recent episode of the podcast Corecursive. "When you truly
  understand the instruction sets, how the stack works, how memory
  management works, how the hardware works, how it all interacts, then
  you have a true understanding of the limitations of computers."

  Indeed, many computer science courses use Game Boy documentation to
  teach microprocessor architecture because its architecture is small and
  simple enough for students to learn thoroughly. "The Game Boy is a
  great way to learn assembly and low-level programming with real
  hardware and real output," says [65]Antonio Vivace, who leads the open
  source Game Boy development initiative [66]gbdev. "You learn computer
  science concepts that are hard to grasp while doing something cool. It
  makes what otherwise might not be very interesting into something fun."

  The [67]growing complexity of today's technology extends beyond
  computing architectures to software and the web. Modern browsers
  support cryptographic protocols, JavaScript rendering, a variety of
  multimedia formats, and much more. "It can be hard to understand
  everything that's going on in the browser," says technologist and
  entrepreneur Jan Kammerath. That's part of what drew him to the modern
  Gopher scene.

  Gopher first appeared in 1991 and provided an experience similar to a
  text-based version of the web. Files on a Gopher server could be linked
  together, or linked to files on other servers. There were even Gopher
  search engines. It's difficult to convey how novel all of this was at
  the time. It was exciting to connect to someone else's computer,
  whether that was a dial-up server like a BBS or an FTP server over the
  internet. It was even more exciting to hop from server to server,
  following links from one set of files to another, winding up in places
  you never anticipated. Gopher gave the world the first glimpse of many
  things we now associate with the web. Anyone, at least in theory, could
  host their own Gopher server to host whatever content they wanted and
  other people might find their way to it.

  The platform [68]burned brightly for a moment before fading away as
  HTTP and web browsers became more powerful and popular. But Gopher has
  managed something of a comeback in recent years. The number of active
  servers indexed by Kaiser's Gopher search engine Veronica-2 nearly
  doubled between 2017 and 2018, from 133 to 260. As of November 15,
  2022, the engine indexes 343 gopher servers, slightly down from a peak
  of 395 in 2020 but still going strong.

  Kaiser points to all the challenges of digital life--from cluttered
  interfaces to the overwhelming crush of information--as reasons that
  some people are turning to Gopher and other older internet platforms.
  "A lot of people are looking for alternatives to the modern web, but I
  don't think there is any single reason that the number of Gopher
  servers surged," Kaiser says. "I think it's more of a network effect."
  In other words, the more Gopher servers there are, the more people use
  Gopher, and the more people use Gopher, the more people create their
  own Gopher servers.

  Kaiser's Floodgap Gopher server provides daily news feeds, weather
  updates, links to other Gopher sites, and the Veronica-2 search engine.
  Using Floodgap gives a little taste of what the early internet was
  like. Kammerath was intrigued, but he says he found the experience of
  browsing "Gopherspace" a little cumbersome by modern standards. "So I
  thought it would be fun to write my own Gopher client as a little
  exercise," he says. The result is [69]Gophie, a simple, cross-platform
  Gopher client.

  "Building a Gopher client, or just studying the protocol, is good for
  people to learn the basics of how networking works," Kammerath says.
  "It's a lot simpler than HTTP/3, the current version of HTTP, so it's
  easier to understand how the different layers interact."

  Working with Gopher, which lacks support for many modern web features
  like cookies and headers, can also help developers understand why many
  of those features were added in the first place. "If you spend some
  time developing with older tools for older platforms, you'll fall in
  love with your modern tools all over again," Kammerath says.

  If you spend some time developing with older tools for older platforms,
  you'll fall in love with your modern tools all over again"

  Lessons from the past

  Many users find more than just educational benefits in vintage
  computing. Alridge didn't buy that Apple Newton in 2005 out of
  nostalgia or an urge to preserve a part of tech history. He bought it
  because it better suited his needs than other digital organizers
  available on the market at the time. Sometimes old tech provides value
  that contemporary counterparts don't.

  "I don't run Gopher servers to learn about history, I like Gopher for
  its own sake," Kaiser says. "I use it on a daily basis. There are
  things I can't do on Gopher, like logging into my bank account. But for
  a lot of use cases it's more efficient, like checking the weather and
  reading the news. And because it's so simple, I can run a Gopher client
  on pretty much any device, even old and low-powered computers."

  Vintage tech enthusiasts often discuss how working within the
  constraints of these older devices forces them to think more about
  resource efficiency. "The Prodigy developers did so much with so
  little," Heller says. "They implemented not one but two virtual
  machines that could run in less than 640 kilobytes of memory. The mail
  program is only about five kilobytes. It's really eye-opening in terms
  of how much more efficient we could be."

  Today's hardware is so powerful in comparison that much less attention
  is paid to optimizing software performance. "There's a saying:
  `[70]hardware is cheap and programmers are expensive,'" Kaiser says. "I
  can sympathize with that view. Most of us don't hand-code assembly
  today, even though it might be the best way to squeeze more power out
  of our hardware. It's a valid trade-off." But he points out that
  increasingly powerful computers don't just lead to the inefficient use
  of processing power and RAM.

  "There's a tendency to add more and more features and that makes
  software interfaces busier and harder to use," he says. "I think users
  are cognitively overloaded." That's a big part of the appeal of Gopher:
  its text-based interfaces are much simpler than many of today's web
  applications.

  Hardware performance wasn't the only thing that kept older applications
  relatively simple. Older devices were also limited in the sorts of
  interfaces they could display. "Newton and Palm applications only had
  small, black and white or grayscale screens to work with," Melcher
  says. "Designers had to be thoughtful about what to include."

  Chris Maltby, the creator of the point-and-click Game Boy game maker
  GB-Studio, points out that games for the original black and white Game
  Boy games likewise had to work on small screens with simple graphics
  and sounds, while still being fun. Maltby found lessons there. "Part of
  my job when building software is about taking these things that are
  very complex and creating simple ways to interact with them," he says.
  "Game Boy programming has made me a better developer."

More stories

  Photo of Featured Article

[71]Decisions, decisions: Principles for making important choices in open
source

  Featured Article
  Photo of Featured Article

[72]Chaos engineering helps DevOps cope with complexity

  Featured Article
  Photo of Featured Article

[73]What hacking AOL taught a generation of programmers

  Featured Article

About The
ReadME Project

  Coding is usually seen as a solitary activity, but it's actually the
  world's largest community effort led by open source maintainers,
  contributors, and teams. These unsung heroes put in long hours to build
  software, fix issues, field questions, and manage communities.

  The ReadME Project is part of GitHub's ongoing effort to amplify the
  voices of the developer community. It's an evolving space to engage
  with the community and explore the stories, challenges, technology, and
  culture that surround the world of open source.

Follow us:

    *
    *
    *
    *
    *

[74]Nominate a developer

  Nominate inspiring developers and projects you think we should feature
  in The ReadME Project.

[75]Support the community

  Recognize developers working behind the scenes and help open source
  projects get the resources they need.

Sign Up For Newsletter

  Every month we'll share new articles from The ReadME Project, episodes
  of The ReadME Podcast, and other great developer content from around
  the community.
  ____________________ (BUTTON) Subscribe
  Thank you!

Product

    * [76]Features
    * [77]Security
    * [78]Team
    * [79]Enterprise
    * [80]Customer stories
    * [81]The ReadME Project
    * [82]Pricing
    * [83]Resources
    * [84]Roadmap

Platform

    * [85]Developer API
    * [86]Partners
    * [87]Electron
    * [88]GitHub Desktop

Support

    * [89]Docs
    * [90]Community Forum
    * [91]Professional Services
    * [92]Skills
    * [93]Status
    * [94]Contact GitHub

Company

    * [95]About
    * [96]Blog
    * [97]Careers
    * [98]Press
    * [99]Inclusion
    * [100]Social Impact
    * [101]Shop

    * [102]Twitter icon GitHub on Twitter
    * [103]Facebook icon GitHub on Facebook
    * [104]Linkedin icon GitHub on LinkedIn
    * [105]YouTube icon GitHub on YouTube
    * [106]Twitch icon GitHub on Twitch
    * [107]TikTok icon GitHub on TikTok
    * [108]GitHub mark GitHub's organization on GitHub

    * © 2022 GitHub, Inc.
    * [109]Terms
    * [110]Privacy ([111]Updated 08/2022)
    * [112]Site Map
    * [113]What is Git?

  (BUTTON) You can't perform that action at this time.

  You signed in with another tab or window. [114]Reload to refresh your
  session. You signed out in another tab or window. [115]Reload to
  refresh your session.

  (BUTTON)

References

  Visible links
  1. https://github.com/opensearch.xml
  2. https://github.com/readme/featured/vintage-computing#start-of-content
  3. https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2Freadme%2Ffeatured%2Fvintage-computing&source=header
  4. https://github.com/features
  5. https://docs.github.com/
  6. https://skills.github.com/
  7. https://github.blog/
  8. https://github.com/enterprise
  9. https://github.com/team
 10. https://github.com/enterprise/startups
 11. https://education.github.com/
 12. https://github.com/solutions/ci-cd/
 13. https://resources.github.com/devops/
 14. https://resources.github.com/devops/fundamentals/devsecops/
 15. https://github.com/customer-stories
 16. https://resources.github.com/
 17. https://github.com/topics
 18. https://github.com/trending
 19. https://github.com/collections
 20. https://github.com/pricing
 21. https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Freadme%2Ffeatured%2Fvintage-computing
 22. https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2Freadme%2Ffeatured%2Fvintage-computing&source=header
 23. https://github.com/readme
 24. https://github.com/readme/featured
 25. https://github.com/readme/stories
 26. https://github.com/readme/guides
 27. https://github.com/readme/podcast
 28. https://github.com/readme/topics
 29. https://github.com/readme/open-source
 30. https://github.com/readme/culture
 31. https://github.com/readme/security
 32. https://github.com/readme/devops
 33. https://github.com/readme/nominate
 34. https://github.com/sponsors
 35. https://github.com/morgant
 36. http://newtonscript.org/
 37. http://www.unna.org/
 38. https://github.com/FujiNetWIFI/
 39. https://github.com/readme/featured/open-source-democratizing-video-games
 40. https://github.com/dreamwidth/dreamwidth
 41. https://github.com/apparentlymart/livejournal
 42. https://github.com/wwivbbs/wwiv
 43. https://www.telnetbbsguide.com/bbs/list/detail/
 44. https://github.com/mamedev/mame
 45. https://github.com/libretro/RetroArch
 46. http://www.bobnewell.net/nucleus/bnewell.php?itemid=186
 47. https://www.dosbox.com/
 48. https://archive.org/details/softwarelibrary_palm
 49. https://vintagecomputing.com/
 50. https://www.theatlantic.com/technology/archive/2014/07/where-online-services-go-when-they-die/374099/
 51. https://www.flickr.com/photos/149332336@N06/albums
 52. https://archive.org/details/prodigydemo_SoftwareLibrary
 53. https://github.com/pheller
 54. http://www.vintagecomputing.com/index.php/archives/1063
 55. https://github.com/ProdigyReloaded
 56. https://github.com/classilla
 57. https://www.floodgap.com/
 58. https://tedium.co/2017/06/22/modern-day-gopher-history/
 59. https://github.com/classilla/tenfourfox
 60. http://oldvcr.blogspot.com/
 61. https://github.com/MatthiasWM
 62. https://github.com/pguyot/Einstein
 63. https://github.com/burgerbecky
 64. https://corecursive.com/doomed-to-fail-with-burger-becky/
 65. https://github.com/avivace
 66. https://gbdev.io/
 67. https://github.com/readme/featured/open-source-minimalism
 68. https://www.minnpost.com/business/2016/08/rise-and-fall-gopher-protocol/
 69. https://github.com/jankammerath/gophie
 70. https://blog.codinghorror.com/hardware-is-cheap-programmers-are-expensive/
 71. https://github.com/readme/featured/oss-decision-making
 72. https://github.com/readme/featured/chaos-engineering
 73. https://github.com/readme/featured/aol-programming-culture
 74. https://github.com/readme/nominate
 75. https://github.com/sponsors
 76. https://github.com/features
 77. https://github.com/security
 78. https://github.com/team
 79. https://github.com/enterprise
 80. https://github.com/customer-stories?type=enterprise
 81. https://github.com/readme
 82. https://github.com/pricing
 83. https://resources.github.com/
 84. https://github.com/github/roadmap
 85. https://docs.github.com/
 86. https://partner.github.com/
 87. https://www.electronjs.org/
 88. https://desktop.github.com/
 89. https://docs.github.com/
 90. https://github.community/
 91. https://services.github.com/
 92. https://skills.github.com/
 93. https://www.githubstatus.com/
 94. https://support.github.com/?tags=dotcom-footer
 95. https://github.com/about
 96. https://github.blog/
 97. https://github.com/about/careers
 98. https://github.com/about/press
 99. https://github.com/about/diversity
100. https://socialimpact.github.com/
101. https://shop.github.com/
102. https://twitter.com/github
103. https://www.facebook.com/GitHub
104. https://www.linkedin.com/company/github
105. https://www.youtube.com/github
106. https://www.twitch.tv/github
107. https://www.tiktok.com/@github
108. https://github.com/github
109. https://docs.github.com/en/github/site-policy/github-terms-of-service
110. https://docs.github.com/en/github/site-policy/github-privacy-statement
111. https://github.com/github/site-policy/pull/582
112. https://github.com/site-map
113. https://github.com/git-guides
114. https://github.com/readme/featured/vintage-computing
115. https://github.com/readme/featured/vintage-computing

  Hidden links:
117. https://github.com/
118. https://github.com/features/actions
119. https://github.com/features/packages
120. https://github.com/features/security
121. https://github.com/features/codespaces
122. https://github.com/features/copilot
123. https://github.com/features/code-review
124. https://github.com/features/issues
125. https://github.com/features/discussions
126. https://github.com/sponsors
127. https://github.com/readme
128. https://github.com/readme/featured/vintage-computing
129. https://github.com/readme/featured/vintage-computing
130. https://github.com/readme/featured/vintage-computing
131. https://github.com/readme/featured/vintage-computing
132. https://github.com/readme
133. https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Freadme%2Ffeatured%2Fvintage-computing&text=The%20%E2%80%9Cold%20ways%E2%80%9D%20are%20actually%20a%20prime%20opportunity%20to%20learn%2C%20escape%20today%E2%80%99s%20exhausting%20digital%20environments%2C%20and%20get%20inspired
134. https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fgithub.com%2Freadme%2Ffeatured%2Fvintage-computing&quote=The%20%E2%80%9Cold%20ways%E2%80%9D%20are%20actually%20a%20prime%20opportunity%20to%20learn%2C%20escape%20today%E2%80%99s%20exhausting%20digital%20environments%2C%20and%20get%20inspired
135. https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgithub.com%2Freadme%2Ffeatured%2Fvintage-computing
136. https://github.com/readme
137. https://github.com/readme/featured/oss-decision-making
138. https://github.com/readme/featured/chaos-engineering
139. https://github.com/readme/featured/aol-programming-culture
140. https://twitter.com/github
141. https://www.facebook.com/GitHub
142. https://www.linkedin.com/company/github
143. https://www.instagram.com/github
144. https://github.com/readme.rss
145. https://github.com/