8 views
<style> details { margin-top: 0.5em; margin-bottom: 0.5em; } summary { //font-weight: bolder; } summary:hover { text-decoration: underline; } blockquote { font-size: 16px; } .todo { color: #ff00ff; border: 2px dashed #ff00ff; padding: 0em 1em; border-radius: 5px; margin-top: 1em; margin-bottom: 1em; //display: none; // UNCOMMENT TO HIDE TODOs } </style> **[&laquo; Back to the main CS 300 website](https://csci0300.github.io/)** # SRC Project: Time Machine **Partner Choice Due Friday, April 4th at 11:59 PM** **(fill out [this form](https://forms.gle/Y4Y4PunQChfB2A8H6))**<br /> **Part 1 Due Friday, April 11th at 8:00 PM**<br /> **All Parts Due Friday, April 18th at 8:00pm** --- <!-- [TOC] --> # Introduction Each of us produces immense amounts of digital data today, and we all use software in doing so. In particular, if you use a note-taking app, that app might store your notes in its own proprietary file format, and the app itself will assume that it runs on a current operating system (e.g., iOS, Android, macOS, or Windows) and widely-used hardware architecture (e.g., x86-64). But what happens if you, a few decades from now, decide to look at your old CS 300 notes to relive your college days? The app may be long since defunct, your laptop or smartphone from your college days may have moved on to greener pastures, and you’ll probably be using devices that run a different operating system on a different hardware architecture (e.g., ARM64 or one of its successors). If your college notes aren’t exciting enough, consider [NASA’s lost Apollo guidance software](https://thenewstack.io/how-a-programmer-recreated-apollo-10s-lost-software/) and [their hunt for old processors on eBay](https://www.nytimes.com/2002/05/12/us/for-parts-nasa-boldly-goes-on-ebay.html): despite enabling some of humanity’s greatest technological achievements, NASA faced difficulty maintaining their space shuttles with antiquated software. Nowadays, there is a massive amount of open source software that is critical for our increasingly digital society, and much of its source code is stored on GitHub (e.g. [Linux](https://github.com/torvalds/linux), [Docker](https://github.com/docker), and [Python](https://github.com/python/cpython), just to name a few). To safeguard the world's open source software for future generations, GitHub launched the [GitHub Arctic Code Vault](https://www.youtube.com/watch?v=fzI9FNjXQ0o&ab_channel=GitHub) in 2020. This project preserves a significant portion of GitHub repositories by storing them in an archive inside an abandoned coal mine deep in the Arctic Circle, on the Norwegian archipelago of Svalbard. (If a repo of yours was public and had at least 1 star and 1 commit on 02/02/2020, it exists on a reel of film deep underground in Svalbard!) The preservation of digital artifacts and the software needed to access them is already an acute challenge, and will grow in importance as more critical infrastructure comes to depend on software. In this assignment, you’ll explore some of the motivations behind software preservation, and do a hands-on exploration of the challenges of software preservation. ## Partners: 🚨 Action Required 🚨 :::success You will choose a partner for part 3 of the project. Alternatively, if you would prefer to be randomly assigned a partner, we will pair you with a classmate. **To help us determine groups, *everyone* should fill out [this form](https://forms.gle/Y4Y4PunQChfB2A8H6) by 11:59pm on Friday, April 4!** Within the form, you will either write down your chosen partner's CS login, or opt into random assignment. ::: ## Learning Objectives and Answer Expections This project will help you: * Understand how maintaining old software is critical to digital data preservation. * Develop hands-on experience with software emulators used to keep decades-old applications running on modern computers. * Reason about the societal context of software preservation: who should engage in it, how we create the right incentive structures to preserve our digital heritage, and whether we should even preserve everything. <div id="answer-expect"> <strong>Answer Expectations: </strong> Strong answers to the written questions in this assignment will be characterized by the quality of your arguments. You can ensure you get full credit by following the instructions, making explicit claims, and supporting them with evidence along clear lines of reasoning. </div><br> <div id="partner-expect"> <strong>Partner Expectations: </strong> You will work with a partner for the written section of this assignment only. <strong>Please note that you should still submit your project individually!</strong> Feel free to discuss any of the written questions with your partner. <em>However, you should only submit the same response for questions that you have been instructed to complete together.</em> </div> --- # Assignment installation To get started on the project, you will need to pull some additional stencil code into your project repo. You can do this as follows: 1. Open a terminal in your container environment and `cd` into the directory you set up as your project repo from Lab 0 (e.g., `cd projects`) 2. Run the following command to pull the latest code from the `handout` remote (see below if you get errors): ``` cs300-user@9899143429a2:~/projects$ git pull handout main ``` If this reports an error, run: ```bash git remote add handout git@github.com:csci0300/cs300-s25-projects.git ``` followed by: ```bash git pull git pull handout main ``` This will merge our `timemachine` stencil code with your repository. :::warning **Note: If you see a warning about "divergent branches"...** <details> <summary><b>Expand for instructions</b> </summary> ![](https://i.imgur.com/BeYsMKC.png) This means you need to set your Git configuration to merge our code by default. To do so, run (within the same directory in your labs repository workspace): ```console $ git config pull.rebase false $ git pull handout main ``` </details> ::: :::danger **If your terminal window changes to something like this**: ![](https://cs300-beta.cs.brown.edu/uploads/5618b1a0-dcbc-4abd-8e17-1b9a48c9b951.png) <details> <summary><b>Expand for instructions</b> </summary> Your terminal has asked you to add a commit message to explain what code was merged in, and opened a text editor so you can write the message. The top line is a default message, which you can use as-is. To use the message and finish the commit, do the following: - **If your terminal looks like the image above**, press `Ctrl+s` to save, then `Ctrl+q` to quit. (These are shortcuts for the text editor `micro`, which is the program that is running now) - **If your terminal instead has a bar at the top that says `GNU nano`**, you are using a text editor called `nano`. To save your commit and exit, press `Ctrl+x`, then press `y`, and then press `Enter`. </details> ::: Once you have a local working copy of the repository that is up to date with our stencils, you are good to proceed! You should now see a new directory called `timemachine` inside your projects repo: you should do all your work for this project in this directory. # Part 1: Reading an old file You, a budding digital preservationist, start browsing digital collections (as one does), and stumble upon an archive with an interesting file: :::success **Task**: To download the file, do the following: 1. Make a folder on your host system (**NOT** inside your container) in a place we can refer to later. The best place will differ depending on your host operating system: - **On MacOS or Linux**: make a folder on your Desktop or Downloads folder, e.g., `~/Downloads/timemachine`. - **On Windows**: make folder directly on your `C:` drive, e.g., `C:\timemachine` 3. **[Download this zip file](https://drive.google.com/file/d/1g16_NyvCHifOdwc52VOiN1hCyCx80bi9/view?usp=sharing)** and extract the contents into the folder you just created. Your `timemachine` folder from step 1 should now contain exactly one file called `CS300REF.WPD`. **Don't bother trying to open the file yet.** While you *could* try this, you'd quickly find that there's no program on your computer that can read it successfully. See the next steps to see what would happen if you were to open it now, and instructions on how to proceed! ::: Eager to make your mark on history, you take a peek at what it is... and are met with almost complete gibberish. What’s going on? ![oh no!](https://i.imgur.com/O5hMjYp.png) The problem you’re facing is one that is all too common in the digital preservation world. Until recently, much of the focus has been on **data** preservation; but preserving data alone can often miss key components of the environment that are necessary to interpret the data meaningfully. Be it notes or 3D modeling, data formats are often integrated with the software used to create, view, and manage them, rendering them useless without this necessary software. Digital preservationists have increased their focus on software to address this problem. After some research, you discover that **the file is actually a [WordPerfect](https://en.wikipedia.org/wiki/WordPerfect) file**. Since the file doesn't seem to be working with your current software, you deduce that it's from an earlier time: the [DOS](https://en.wikipedia.org/wiki/DOS) era (mid-1980s to mid-1990s), named for the [DOS operating system](https://en.wikipedia.org/wiki/DOS) that was widespread at the time. ## How to run DOS in the modern era How do we run a program that was written for MS-DOS in the 1980s on today's computers? First of all, we need a processor and hardware that can run the program. Fortunately, WordPerfect ran on x86 machines (amongst other architectures in use at the time), so as long as we can get a copy of a WordPerfect executable, we should be good, right? Not so fast. The WordPerfect executable, like all programs, makes assumptions about the system calls available and the kernel that runs underneath. Therefore, we also need a DOS kernel and the ability to run it on modern hardware! In this instance, we'll **emulate** a DOS kernel, rather than actually installing an ancient operating system on your computer. Emulators are one of the most common methods of interacting with legacy software. Essentially, an emulator recreates the original environment needed by the software, allowing it to run on a modern computer. In our case, we will use **[DOSBox](https://www.dosbox.com)** to emulate a DOS environment, which will give us a platform to run WordPerfect and open our file. So many steps! :::warning :eyes: **Heads up!** For this, and all following installation steps, you should NOT use the course container. ::: ### Installing DOSBox :::success **Task:** To install DOSBox on your system, do the following: 1. Go to the **[DOSBox downloads page](https://www.dosbox.com/download.php?main=1)** and select the version for your operating system 2. Expand the set of instructions below to install DOSBox on your system: <details> <summary> <b>Instructions for MacOS</b> </summary> To finish installing DOSBox on your system: 1. Open up the `.dmg` file you downloaded 2. Copy the DOSBox app (the file with the colored icon) into your computer's Applications folder. The easiest way to do this is usually by opening a separate Finder window to your Applications folder, and then dragging the app there. 3. </details> <details> <summary> <b>Instructions for Windows</b> </summary> Run the installer you downloaded and follow the prompts. You should be able to use all of the default settings. When you are done, open DOSBox from your start menu. </details> 3. After you're done with the installation process, start DOSBox as you'd normally open an app on your computer. You should see a window with a command-prompt, like this: ![](https://cs300-beta.cs.brown.edu/uploads/2a507a98-7c43-42e5-9bed-deaaab926e65.png) **The command prompt you're seeing (`Z:\>`) is an MS-DOS command prompt.** This is similar to opening up a terminal on your own system, but, in the days of MS-DOS, this was the whole system! When your system booted up, the first (and only) thing it showed was a terminal, which you used to launch other applications... which is what you'll now do to run WordPerfect! ::: If you have a command prompt open like the following, your DOSBox is now installed, yay! ### Configuring the DOSBox keymapper Before we can use DOSBox, we need to configure it slightly. By default, the DOSBox emulator maps your computer's function keys (F1, F2, F3, F4, ...) to do modern emulator-specific things like taking screenshots, changing settings, and so on. However, it turns out that WordPerfect, the program we're trying to run, *also* relies on function keys, so we need to change DOSBox's key mappings so they don't conflict! This is an all-to-common problem with emulating programs--especially old terminal programs from before the mouse/trackpad existed: every program had different conventions for keyboard shortcuts, and so it's easy for these to conflict with each other! :::danger :warning::warning::warning: **Super important note**: **If your computer normally assigns things like volume/brightness/etc. to your function keys**, you will need to press `Fn+<key>` each time you need to press a function key in this project. For example, when we say "press `F1` or `Ctrl+F1`", you should instead press `Fn+F1` or `Fn+Ctrl+F1`. This is yet another example of the function keys being used for different things! <br /> If you have Windows, some Windows systems have a "Fn lock" feature that will automatically add the `Fn` modifier when turned on (usually, you toggle it with `Fn+Esc`). You might want to turn it on while working on this part! ::: ::::success **Task**: To configure your DOSBox keyboard shortcuts, do the following: 1. In DOSBox, press `Ctrl+F1`. Again, if your `F1` normally does some system function like volume/brightness, press `Ctrl+Fn+F1` instead. This should display the DOSBox keymapper, which looks like this: - If you don't see the keymapper, try adding other modifier keys (`Alt`, `Shift`) as well. For example, try presing `Ctrl+Alt+F1` or `Ctrl+Alt+Fn+F1` instead. - If you can't get your keymapper to show up, see [this section](#Appendix-Help-I-messed-up-my-keymapper) ![](https://cs300-beta.cs.brown.edu/uploads/8f05115e-a89a-4865-8524-389d71be1afa.png) 2. In the key mapper, we need to change the system functions, which are in grid in the lower-right. **For each system function *except* `Fullscreen` and `Mapper`**, do the following (as shown in the figure below): - Click on that function's space in the grid - In the buttons that appear on the left, select **both `mod1` and `mod2`** - Repeat this process for each box in the grid (except `Fullscreen` and `Keymapper`, which are greyed-out in the figure) ![](https://cs300-beta.cs.brown.edu/uploads/790815d7-cd02-43eb-a173-f3afd55eae5b.png) 3. Once you have adjusted all of the system functions, press **Save** and then **Exit**. Once your exit the keymapper, your keys should be fully set up! **If you encounter issues pressing function keys later, return to this part to check your mappings.** If you encounter problems, see [this section](#Appendix-Help-I-messed-up-my-keymapper). :::: ## Installing WordPerfect Now that your DOSBox is setup, it's time to install WordPerfect! We will be installing WordPerfect 5.1, which was first released in 1989. To install WordPerfect back then would have required using several physical floppy disks, like this one: <table> <tr> <td> <div style="text-align: center"> ![](https://ia801806.us.archive.org/26/items/word-perfect-5.1-plus-5.1-1993-03-english-3.5-720-kb/WP51Plus.jpg =300x) </div> *A floppy disk of the 1990s, which has persisted into modern times as the save icon (💾). A floppy disk of this size had a capacity of 1.44MB, about one-fifth of an image from a smartphone camera. WordPerfect would have been installed from several floppy disks.* <br /> *Image from the [Internet Archive](https://archive.org/details/word-perfect-5.1-plus-5.1-1993-03-english-3.5-720-kb).*<br /> </td></tr> </table> Since modern computers no longer have floppy disk drives, we can cut some corners and download the same files online from archives that specialize in software preservation. In particular, the [Internet Archive](https://archive.org) has a large collection of old DOS software, to help make it accessible for those who need it--like us! It can be tricky to work with these files (called "floppy disk images", which use special formats), so we've pre-downloaded the files for WordPerfect for you and packaged them as a zip file for you to install. :::success **Task**: To install WordPerfect, do the following: 1. Download the **[WordPerfect installation files](https://drive.google.com/file/d/1RV17_F2GRKmbq4jks9z7FUKnolfZtzvp/view?usp=drive_link)**. This zip file contains a folder with a bunch of files for installing WordPerfect. To download the whole zip file, click the download button in the top-right, like this: ![](https://cs300-beta.cs.brown.edu/uploads/87574b79-9286-4873-8945-32ba2c19d3f1.png) 2. Extract the contents of the zip file into the `timemachine` folder you created when you downloaded the secret file. When you are done, your folder should now contain a new folder `wpsetup` (from the zip file), which should have several files inside it, like this: ``` |--(your downloads folder, C: drive, etc.) | |--timemachine/ | |--CS300REF.WPD | |--wpsetup/ <----- FOLDER FROM ZIP FILE | |--INSTALL.EXE | |--(... many more files ...) |--... ``` 3. To load these files in DOSBox, we need to "mount" your `timemachine` folder on your host system into the emulator. (This feature is similar to how shared folders work in your container--it would not have been present in *real* MS-DOS, but it helps us when using the emulator, since we don't have a physical floppy drive. Yay, digital preservation!) To mount your folder, run the following command: ``` Z:\> mount C: <FULL-PATH-TO-YOUR-FOLDER> Drive C is mounted as local directory ... ``` where `<FULL-PATH-TO-YOUR-FOLDER>` is the full path to the `timemachine` folder you created earlier. The path will differ based on your host system: - **On MacOS**, your path will point to your desktop or downloads folder (whatever you decided) and will look like this: `mount C: ~/Downloads/timemachine` - **On Windows**, your path will point to a folder on your host's C: drive: <br />`mount C: C:\timemachine` **If the mounting process worked**, you should see a message "Drive C is mounted as local directory ...". If you get an error, check the path and try again. 4. Your folder should now be mounted inside DOSBox! This is the first step to being able to access your file. To see this, and to give you feel for another terminal environment, run the following two commands in DOSBox: ```bash Z:\> C: # Switch to C: drive C:\> dir # List directory contents (DOS version of `ls`) Directory of C:\. . <DIR> 20-03-2025 15:44 .. <DIR> 20-03-2025 15:33 WPSETUP <DIR> 20-03-2025 14:06 CS300REF WPD 4,357 20-03-2025 14:12 1 File(s) 4,357 Bytes. 3 Dir(s) 262,111,744 Bytes free. ``` The last command, `dir`, is DOS's version of `ls`. After running `dir`, you should see a directory listing containing the contents of your folder, including the WordPerfect installation files and the secret file. Now that DOSBox can access the files, we can go ahead and install WordPerfect! 5. To start the WordPerfect installer, run the following: ```bash C:\> cd wpsetup # Enter the 'wpsetup' directory C:\wpsetup> install.exe # Run the installer ``` After starting the installer, you should be greeted with the (once-considered-fancy) installer program! Which should look like this: ![](https://cs300-beta.cs.brown.edu/uploads/72172c41-dc57-402b-82f0-df774ad1c082.png) 6. To continue, **follow the prompts to install WordPerfect, using the features from the list below**. For most questions, you will be prompted to answer yes (press `y`) or no (press `n`). **Expand this list for the set of features to install**: <details> <summary> <b>✨Click here for feature list!✨</b></summary> - **Color support**: answer **Yes** - **Install to hard disk**: answer **Yes** - At the menu, install the **basic version** only (**Option 1**) - For the **Utility files**, **Learning files**, and **Help file**: answer **Yes** - At various times, a prompt may appear at the bottom of the screen to **insert another diskette**--when this happens, just press **Enter**. This message may appear multiple times for the same option. (30 years ago, this is when you would have had to swap floppy disks :wink:) - When asked about installing the **WordPerfect program**: answer **Yes** - **For everything else** (printer files, graphics drivers, etc.), you can answer **No** - At the end, you will be prompted with a **list of printers**. At this step, just enter the default choice (`0`) and cancel printer selection. - You may get some warnings about `CONFIG.SYS` and `AUTOEXEC.BAT` not being found. These were DOS system files that aren't needed in DOSBox, so you can ignore these warnings and skip creating any extra files. - Finally, when the installer returns to the main screen, just enter the option to exit. WordPerfect should now be installed! </details> 7. The installer WordPerfect into the `C:\WP51` directory, so we first need to copy our secret file there. To do this, run the following commands (as described below): ```bash C:\WPSETUP> cd .. # Go back to the C drive C:\> copy CS300REF.WPD WP51 # Copy secret file into WordPerfect folder CS300REF.WPD 1 File(s) copied. ``` If your terminal said the file was not found, check your working directory (`dir` command) to see if the file exists. If the issue persists, restart DOSBox and try again. 8. At last, we can start WordPerfect! To do this, run the following commands in DOSBox (with your terminal at the C: drive): ```bash C:\> cd WP51 # cd to WordPerfect folder C:\WP51> WP CS300REF.WPD # Run WordPerfect (WP.EXE) on secret file! ``` When your WordPerfect first starts up, you should be greeted with a super-fancy welcome screen like this: ![](https://cs300-beta.cs.brown.edu/uploads/bbf9f37c-ef59-413e-aefe-95e6c32fa2b7.png) 9. As shown in the figure, the welcome screen may prompt you for a license key. **To continue, just press Enter.** You should now be able to see the document in WordPerfect! :tada: :sunglasses: Specifically, your WordPerfect should look like this: ![](https://cs300-beta.cs.brown.edu/uploads/79a0b013-8efd-4214-ac4a-df078579b972.png) :::warning <details> <summary> <b>If your file is blank</b> </summary> - First, make sure you typed the filename correctly: press `F7` to exit WordPerfect, then try the last command from the previous step again. - If you still have issues, exit WordPerfect again and run `cd ..` to go back to the C: drive, then run the `copy` command from the previous step. </details> ::: :::: ## Working with WordPerfect Now that we've opened the file in WordPerfect, we can actually use it to do what we intended to do: exporting the contents of this file so we can preserve it! To do this, and to give you a sense of what it was like to use an application from this era of computing, we've outlined some tasks for you to complete inside the WordPerfect document--look there for more details! :::success **Task**: **Follow the steps in the WordPerfect document** for instructions on how to export some information about the file. As you work on the instructions, **here are some general tips to keep in mind**, in case you need them: - :back: **If you get stuck in a WordPerfect menu or prompt, press `F7` (or `Fn+F7`) to exit**: this is the closest equivalent to a "back" button, so use it if you ever pick the wrong option. At the top-level edit window, you can also press `F7` to exit WordPerfect. - 📺 **Be sure to read the prompts, especially at the bottom of the screen!** WordPerfect comes from a time when there weren't standard conventions for keyboard shortcuts, so nothing will seem intuitive. Instead, WordPerfect adds text in menus or prompts (often at the bottom of the screen) to tell you what to do, so be sure to look for this! - 🖱️ **If your cursor gets stuck in the DOSBox window**, press `Ctrl+F10` (or `Ctrl+Alt+F10`, or `Ctrl+Alt+Fn+F10`, or some other combination of modifiers). WordPerfect can take control of your mouse, which can prevent you from switching out of DOSBox; `Ctrl+F10` tells DOSBox to steal back control of your mouse so you can use it normally. If this doesn't work, try switching windows with `Alt+Tab` (Windows) or `Command+Tab` (Mac) instead. <br /> **When you are done**, you should have created two files: 1. `cs300ref.txt` (Saved by WordPerfect; find in your shared folder in, e.g., Downloads) 2. `secret-code.txt` or a screenshot `secret-code.png` (You will make this manually) To submit these files, copy them to your `timemachine` directory of your CS 300 projects repo, and push them to your Github repository. Then, continue onto the next part! :::: ## Reflection Wahoo! We did it; the old documents were saved from disappearing forever into the void, and you now have a working DOS environment to experiment with more legacy software. (If you’re interested, websites like [DOSGames](https://www.dosgames.com) and [WinWorld](https://winworldpc.com/home) contain numerous DOS-era software and games; try one out, and experience what technology felt like in the 90s[^3].) Now, if someone discovers a stash of George R. R. Martin’s unfinished novels, you’ll be adequately equipped to handle his [WordStar](https://www.theverge.com/2014/5/14/5716232/george-r-r-martin-uses-dos-wordstar-to-write) files[^4]. The process you went through, albeit very simplified, is a real problem digital archivists face every day when handling decades-old data formats. As we explore additional challenges to and alternative methods of software preservation, keep in mind some of the difficulties you faced while setting up preservation software and interacting with legacy applications. [^3]: One application that we found particularly interesting was Sid Meier’s [Civilization 1](https://vetusware.com/download/Civilization/?id=93); even in the 90s, games were truly quite sophisticated! [^4]: WordStar was the first word processor that offered textual [WYSIWYG](https://en.wikipedia.org/wiki/WYSIWYG) functionality; it preceded WordPerfect, and dominated the market until WordPerfect eventually took over. # Part 2: Personal Throwback <!-- ![Malte 1](https://csci0300.github.io/projects/assets/timemachine-experience1.jpg =x250) ![Malte 2](https://csci0300.github.io/projects/assets/timemachine-experience2.jpg =x250) <p style="text-align: center;">Pictures of young Malte at the computer!</p> <br /> --> As we all know, technology moves fast! Within just this year, an immeasureable amount of digital content has been lost. Some of that lost content has been archived, rewritten, or emulated and some, lost to the void. Even beyond "content," the way we interact with technology is constantly changing! (How many of you still use a physical alarm clock?) While we all like to reminisce about our pasts at some points, it may be difficult or even impossible to relive those past experiences for any number of reasons. One such example for Nick and Malte is [LAN Parties](https://en.wikipedia.org/wiki/LAN_party). In the late 90s to early 2000s, groups of people -- often students -- would pack up their home desktop computers or game consoles and gather together to set up local area networks (LANs) and play multiplayer video games. Playing games over the internet wasn't feasible yet, and because there was no ubiquitous WiFi infrastructure, they had to physically connect their computers to each other with ethernet cables via switches and routers. Because of the substantial overhead involved, people would get together and play video games for many hours or even days, hunkering down with snacks and energy drinks. However, trying to recreate that experience has proven difficult. There is something lost bringing a laptop and connecting to Wifi to play games together. **In this part of the assignment, we ask you to think back on experiences with technology from your childhood that may have become inaccessible.** You can consider a broad definition of "experiences": everything from an event like a LAN party to the look and feel of applications, lost websites, lost games, or anything else is fair game. In your weekly section, you will be given the chance to brainstorm experiences with a group, one of which you will explore further for the remainder of part 2. :::danger **Help, I can't think of an experience!** In your in-person section for week 6 (Virtual Memory and Pagetables) you will have the opportunity to brainstorm lost tech experiences with your classmates! We recommend that you wait until you've talked with others before beginning this part of the assignment. Part 3 is independent of this discussion, so you can skip forward to it if you would like to continue working. ::: :::success **Task:** Try to recreate a technology experience from your past! Broadly speaking, you have two options here: 1) Recreate an experience yourself and explore what it takes to recreate that experience (e.g. hosting a LAN party with modern technology) 2) Explore how others have preserved an experience that was meaningful to you (examples below) If the experience is still available in its original form, we ask that you find another experience to write about. (Note that while some experiences may appear unchanged, they may still be preserved in some way and thus are valid for this assignment! See: [Adobe Flash Player Games](https://flashpointarchive.org/)) :::warning <details> <summary> <strong>What does an attempt to recreate an experience look like?</strong></summary><br> For examples you think of, explore the internet to see if these experiences are still accessible, if they have been emulated or archived elsewhere, or if they appear to no longer be available. Some ways to start could include performing a simple Google search or using the [Wayback Machine](https://web.archive.org/) to explore the Internet Archive. **Example 1: (Limited/No preservation)** [Napster](https://en.wikipedia.org/wiki/Napster) was a peer-to-peer (P2P) file-sharing service founded in 1999 that enabled users to share music as so-called "MP3" files with each other. It became extremely popular for allowing easy, free access to a vast collection of music but faced significant legal challenges due to copyright infringement, leading to its shutdown in 2001. There [currently exists](https://www.napster.com/us) a music streaming platform that has the same name and branding as the original Napster but is not connected to it in any other way. There does not appear to be a rewritten version of Napster available online, and archived old versions of Napster available for download on the web are potentially unsafe and probably incompatible with modern operating systems. If you were writing about Napster, we would be looking for you to find information like the above to determine why you cannot (at least safely) recreate your experience. You would then reflect on how Napster could have been preserved and the resources required to realize that preservation. **Example 2: (Moderate preservation)** [Friendster](https://en.wikipedia.org/wiki/Friendster) was a popular social network in the early 2000s. Facing decline in June 2011, the company pivoted to being a social gaming site and discontinued its social network accounts. Friendster ultimately shut down all its services in June 2015. However, old snapshots of Friendster's homepage are accessible on the Internet Archive! [See this snapshot from June 2007](https://web.archive.org/web/20070603210934/http://friendster.com/). If you were writing about Friendster, we would be looking for you to discover this information about it and spend some time looking around at its modern incarnations as well as its preserved state (in this case, the Internet Archive). The site currently features a "Get early access" button and it looks like there may be the beginnings of an attempt to revive the service under the domain friendster.click as well. <br> On the Internet Archive, many features are not available. You cannot, for example, sign into an account, see specific friends, etc. We would want to see you determine what old features are and are not available in this archived form. **Example 3: (Extensive preservation)** [Toontown Online](https://en.wikipedia.org/wiki/Toontown_Online) was an early 2000s massively-multiplayer online role playing game published by the Walt Disney Company where players would play as cartoon animal avatars (Toons) and battle against corporate robots (Cogs) using whimsical slapstick-comedy-esque weaponry. Its servers were shut down in 2013. Since its closure, Toontown has seen significant preservation efforts through projects such as [Toontown Rewritten](https://www.toontownrewritten.com/help/faq/about-toontown), a fan-run, free-to-play revival of the game. Using original assets and publically available material from Toontown Online, the game has been restored in private servers with near-identical functioning to its original state. Many of these servers go beyond the preservation of Toontown Online to include new features, expanded storylines, etc. For example, Toontown Rewritten includes new playable deer and crocodile characters on top of many other additions. Efforts have also been taken to preserve the history of Toontown Online beyond the playable game through the [Toontown Preservation Project](https://toontown.notion.site/Toontown-Preservation-Project-4e9594a785724e4cb53458b8940afec0), a digital museum of old Toontown material such as artwork from game development or promotional materials. If you were writing about Toontown, we would look for you to find information on revival efforts such as the ones named here and play the game to see how it differs from your original experience with it. If you were not comfortable downloading the game, you may also look to re-experience it second-hand, e.g., by watching someone play Toontown Rewritten on YouTube or reading blogs discussing someone's experience with it. Ideally, we would really like you to gain first-hand experience, but we also want to make sure you are safe in completing this assignment! </details> ::: danger :warning: **NOTE: DO NOT DOWNLOAD FILES FROM SHADY WEBSITES** :warning: Err on the side of caution to avoid malware. If you find an archived file of an old software application on the internet but are unsure if it's safe to download, you do not need to download it for this assignment. ::: :::success **Task:** Answer the following questions in the file `timemachine/README.md`. **Q1.** What experience are you focusing on for the following questions? **Q2.** What difficulties did you have recreating your experience? (1-2 paragraphs) **Q3.** Answer the applicable question (1-2 paragraphs): - If you were able to recreate your experience: How did that experience differ from your original interactions with it (if at all)? What efforts have been taken/did you take to preserve it? - If you were not able to recreate your experience: What kind of resources might be required to make it accessible (e.g. servers, personnel to manage a service, emulators, etc.)? **Q4.** Do you think there is substantial benefit to the preservation of your experience? Do you think the costs for its preservation are warranted? (1-2 paragraphs) ::: # Part 3: Social Context (Partner) [Answer Expectations](#answer-expect) [Partner Expectations](#partner-expect) Society has plenty of experience with preserving valuable historical artifacts outside of the digital realm: whether art, architecture, film, or archaeological conservation, the importance and process of preserving our cultural heritage is well established. But preservation in the digital context is less well understood. :::success **Task:** First, familiarize yourselves with approaches to preserving our cultural heritage. 1. **Article 1**: Read [this article](https://www.ehri-project.eu/ethics-conservation-original-materials) about ethical considerations surrounding preservation; then, read [this case study](https://www.bloomberg.com/news/articles/2019-02-08/why-historic-preservation-needs-a-new-approach) about modern historical preservation techniques, priorities, and cultural and financial shortcomings. Next, consider the efforts and cultural implications in the digital domain. 2. **Article 2**: Read pages 12-22 of this [Library of Congress report](https://www.digitalpreservation.gov/multimedia/documents/PreservingEXE_report_final101813.pdf) (*An Executable Past: The Case for a National Software Registry*). As you’re reading, consider the justifications for and approaches to software preservation, and compare them with traditional notions of preservation in other contexts. ::: In the assignment, you explored a common way emulation assists software preservation; [while not the only option](https://www.software.ac.uk/guide/sustainability-and-preservation-framework), emulation has seen the most success as a preservation tool. As interest grows and we continue to improve our toolbox, our ability to tackle technical challenges as a software preservation community increases. However, technical difficulties are just one aspect to consider when dealing with preservation. ## Representation As we reckon with our digital legacy, it’s important to consider how preservation has been approached in other contexts. ::: success **Task:** With your partner, discuss the following and write up some key points from your conversation (again, in `timemachine/README.md`). **Q5:** How does software preservation compare to other forms of preservation that society already engages in today? What preservation standards *should* we apply, and how does this compare to the standards used for other types of preservation? For example, you could consider the preservation of art or architecture in your answer. How does preserving software compare to the ways society preserves other important cultural and historical materials, such as architecture (as described Article 1 (from the green box above))? What scholarly standards do you think should be employed for software preservation specifically, and how do you think it would compare to the preservation practices used in other fields? You should try to use specific examples from the provided articles, or other sources you find, to justify your response. Your answer should be a few sentences, at most one paragraph. ::: ## Legality Another challenge in software preservation is legality. If you look into it, WordPerfect was commercial software at the time when it was produced; to use it, you must [obtain a license](http://www.columbia.edu/~em36/wpdos/links.html#obtain) and/or purchase the software. Yet, preservation efforts have made it and programs like it freely available on the internet. Digital archivists who host such artifacts face legal uncertainties every day. Archivists frequently operate with *abandonware* — software that, while technically still proprietary and protected by copyright, has been ignored by a potentially defunct manufacturer. Some manufacturers (if they’re still around) actively help abandonware sites, or at least tolerate them. However, this is not always the case; some manufacturers, like Microsoft or Nintendo, have pursued legal challenges against digital archives, which resulted in some [major sites shutting down](https://arstechnica.com/gaming/2018/08/emuparadise-shuts-down-rom-downloads-amid-lawsuit-fears/). ::: success **Task:** For the following question, coordinate with your partner to take on opposing, or at least conflicting views. Then, **respond individually** in `timemachine/README.md`. When you are done, come together and discuss your responses! Together, write up 3-4 bullet points from your conversation (also in `timemachine/README.md`). If you are able to come to a consensus, make sure to include your conclusion and explain how you reached it. If not, explain where your positions clashed. **Q6:** Should digital libraries and preservationists receive legal protections, and if so, what might this look like? When supporting you answer, be sure to consider: * WordPerfect 5.1 for DOS can cost [hundreds of dollars](http://www.emsps.com/oldtools/wp.htm#wp51dos), and other preserved materials like Atari ROM images (see optional section below) can be [similarly expensive](https://atariage.com). Do you have an obligation to pay for legacy software and games? * Where should we draw the line between piracy and preservation in efforts to keep legacy software available? What criteria might we draw on to distinguish the two? ::: ## Deciding what to preserve As we have seen, digital preservation can be useful and meaningful. However, there are complications that arise when we consider which software should be preserved. Some would argue that because software preservation is expensive, some software should not be preserved because it is not important enough. Additionally, some might argue that some software should not be preserved because of the values it represents. This question is especially important when we consider that preservation is part of the way we tell history. Still other kinds of software might be deemed malicious and thus some would argue that it is irresponsible to preserve those kinds of code bases. For example, some historical software that might be considered offensive or harmful, or have the potential to do harm, such as: - Nintendo’s 1998 video game *Pokemon* Red/Blue featured a character many considered to be a racist caricature (read about it [here](https://greensboro.com/politically-incorrect-pokemon-one-of-the-pokemon-characters-reinforces-an-offensive-racial-stereotype/article_4f2b8a04-3690-5826-a85c-ec79d72664b7.html)). - Proof of concept buffer overflow attacks made as educational materials (such as the ones used in our course), or other examples of malicious software like computer viruses ::: success **Task:** As with Question 6, coordinate with your partner to take on opposing, or at least conflicting views on the next question. After you respond individually in `timemachine/README.md`, come together and share what you wrote! You should then write a few sentences responding to your partner's position, and include that in your `README.md` as well. **Q7**: Pick an example of piece of software (from the examples above, or something else you may be familiar with) that you believe would be consider problematic or harmful to preserve and describe why it might be considered that way. With your partner, advocate for why you think it should be preserved or should not be preserved, and then tell us what you talked about. Given that software preservation is tough to do, how do you think that potentially-offensive software should factor into the process? Should we try to preserve more software and risk reserving dangerous content, or spend more time curating what is preserved (at the expense of preserving more slowly)? ::: ## Final Remarks Congratulations! 🎉 You’ve completed the SRC project for CS 300. We hope you’ve developed an appreciation for the difficulty and importance of software preservation, as well as some common techniques and considerations, and how they relate to the technical operating systems and hardware topics we discuss in the course. # Handing In Please hand in the files and answers for this assignment via Git in your `cs300-s25-projects-YOURNAME` repository. **Put your answers into the `README.md` file in the `timemachine/` subdirectory of your project repository, and also put all other files from this assignment into that directory.** In total, your submission should have three files: - `README.md` - `cs300ref.txt` - `secret-code.txt` or a screenshot `secret-code.png` (other image formats are also fine) ==**Friday, April 18th at 8pm EDT**==, you must have filled in the file `README.md` in the `timemachine` directory in your projects repo, and pushed the files produced by Part 1 of this assignment. ### Grading breakdown This project is worth 3% of your total course grade. Socially-responsible computing is an important part of CS 300--and, indeed, an important part of learning computer science and existing in a digital world! We encourage you to take this project seriously, and we hope you enjoy it! Please note that all students are required to submit a reasonable attempt for all assignments in order to receive a passing grade in the course, including this one. For more details, please see the [syllabus](https://csci0300.github.io/syllabus.html#grading). # Appendix: Help, I messed up my keymapper! If you can't get your keymapper to open, or you changed some settings and now can't use it, use the following steps to reset your key mapper back to default settings: <details><summary>Instructions for MacOS</summary> To reset your key mapper: 1. Open a new terminal on your host computer (not in DOSBox, and not in your container) 2. Run the following command: ``` $ /Applications/DOSBox.app/Contents/MacOS/DOSBox -resetmapper ``` If the command results in `No such file or directory`, try changing `DOSBox.app` to `dosbox.app`. Once the command completes, DOSBox should restart back with default settings and you should be able to continue normally. If you receive security or accessibility warnings, it's safe to allow DOSBox to proceed. If you encounter issues, try re-launching DOSBox from your applications menu (ie, not from the terminal). </details> <details><summary>Instructions for Windows</summary> To reset your key mapper: 1. Find the folder in Program Files where DOSBox is installed (typically something like `C:\Program Files (x86)\DOSBox-0.74.`) 2. In this folder, double-click on the file `Reset KeyMapper.bat` 3. After running the script, you will see a terminal window open and close briefly. This is normal! If you don't see any errors, things should have worked successfully. After running this script, your keymapper should now be reset! </details> # Fun Extra Section: Hardware Emulation :::danger **THIS SECTION IS NOT REQUIRED** **THERE IS NO EXTRA CREDIT ASSOCIATED WITH IT** That said, if you are interested in hardware emulation or Atari Games, you may be interested in this section :blush: The emulator can be quite buggy and difficult to work with (think about what this means for hardware emulation as a whole). Because this section is not officially part of the assignment, course staff will likely *NOT* be available to help resolve issues. ::: In Part 1, we explored a solely *software* emulator, DOSBox. While DOSBox provides a DOS kernel emulation on an x86 machine, it is certainly possible to boot up DOS on modern machines, as DOS environments (e.g., MS-DOS or IBM PC DOS) are compatible with today's Intel x86 CPUs. However, it is not always so straightforward. For example, Library of Congress archivists who worked to preserve digital data of nobel laureate Nina Federoff [faced some serious challenges](https://blogs.loc.gov/thesignal/2020/11/an-archivists-perspective-on-legacy-files/): her data was created with the MacDraw Plus and Hypercard programs, which require an Apple Mac OS 9 environment. Mac computers prior to Mac OS 10 used the PowerPC instruction set, and software for them is incompatible with modern x86 or ARM64 computers. Indeed, with new hardware like Apple’s M1 chips and the accompanying transition to the ARM64 architecture, it is entirely possible that in a few years or decades, software applications written for our current x86 architectures will be incompatible with the hardware of the day. Apple silicon users are already acutely aware of this issue[^5]. [^5]: Indeed, our course Docker container originated in part to support the new M1 Macs; the old virtualization software, VirtualBox, worked only on x86 machines, and was incompatible with ARM. Of course, one option to access applications for specific architectures is to purchase a physical retro-computer; for instance, old PowerPC Macintoshes can be found on eBay. However, this is clearly neither durable nor feasible; physical hardware eventually breaks, and rare retro-hardware may be difficult for digital archivists to access—even [NASA](https://www.nytimes.com/2002/05/12/us/for-parts-nasa-boldly-goes-on-ebay.html) has had difficulty. What if, like software, we could achieve some sort of emulation, but instead of different hardware components (i.e., different CPU architectures)? Enter *hardware* emulation. In this part, we’ll explore one such example: Atari 2600! Released in 1977, the Atari 2600 quickly dominated the market, becoming synonymous with video games and sparking the growth of the entire industry; following its decline, its games have become favorites in retro gaming communities (and have even found use in a rather surprising modern application: [deep reinforcement learning](https://github.com/mgbellemare/Arcade-Learning-Environment)). ## Atari Emulation The Atari 2600 operating system used the MOS Technology 6502 instruction set, a long-since defunct CPU; thus, we’ll use the [Stella](https://stella-emu.github.io) emulator. :::warning <details> <summary><img src="https://csci0300.github.io/assign/labs/assets/apple.png"> <b>Apple M1/ARM64 notes</b></summary><br /> The Stella emulator for this part of the assignment is not officially compatible with M1 machines, and the download page says that it is "Intel only". However, our testing on M1 devices suggests that it works just fine. The reason for this is that Apple built an x86-64 emulation mode into the hardware of M1 processors ("Rosetta 2"). M1 processors can dynamically translate the machine code of x86-64 executables into ARM64 machine code as they run them (though this does come with some slowdown). So, if you have an M1, you're running one emulator (Rosetta 2) to run another emulator (Stella), and there are no fewer than three architectures involved: ARM64 (hardware), x86-64 (emulated by Rosetta 2), and MOS-6502 (emulated by Stella)! </details> ::: success **Steps to play Atari Games!** 1. [Download](https://stella-emu.github.io/downloads.html) the emulator for your operating system. 2. Acquire some ROMs for Atari 2600 systems (Stella provides some guidelines [here](https://stella-emu.github.io/docs/index.html#Games), or you can choose from [this list](https://atariage.com/software_list.php?SystemID=2600&orderByValue=Ascending&orderBy=Name&SystemID=2600&searchCompanyID=ALL&searchRegion=N&searchTvFormat=ALL&searchRarity=ALL&searchROM=checkbox&searchType=NORMAL&currentPage=0)). 3. If you are having trouble starting a game, don't be afraid to check the [Stella documentation](https://stella-emu.github.io/docs/index.html)! ::: Hardware emulation provides a complete infrastructure for digital preservation, but it is also technically difficult to execute: all technical specifications and digital logic, down to precise clock cycles and analog elements, must be recreated by a hardware emulator. Moreover, hardware is constantly changing. For example, Apple switched from Intel processors to [Apple Silicon](https://en.wikipedia.org/wiki/Apple_silicon) in 2020. If you have an M1 or M2 MacBook, your computer uses this new architecture! This means that many emulators designed for Intel hardware will not work on your device. --- <small>This assignment was created for CS 300.</small>