davideisinger.com

My personal website
Log | Files | Refs | README

jeffhuang-com-njdbjn.txt (16342B)


      1 A Manifesto for Preserving Content on the Web
      2 
      3 This Page is Designed to Last
      4 
      5 By [1]Jeff Huang, published 2019-12-19, updated 2021-08-24
      6 
      7 The end of the year is an opportunity to clean up and reset for the upcoming
      8 new semester. I found myself clearing out old bookmarks—yes, bookmarks: that
      9 formerly beloved browser feature that seems to have lost the battle to 'address
     10 bar autocomplete'. But this nostalgic act of tidying led me to despair.
     11 
     12 Bookmark after bookmark led to dead link after dead link. What's vanished:
     13 unique pieces of writing on kuro5hin about tech culture; a collection of
     14 mathematical puzzles and their associated discussion by academics that my
     15 father introduced me to; Woodman's Reverse Engineering tutorials from my high
     16 school years, where I first tasted the feeling of control over software; even
     17 my most recent bookmark, a series of posts on Google+ exposing usb-c chargers'
     18 non-compliance with the specification, all disappeared.
     19 
     20 This is more than just link rot, it's the increasing complexity of keeping
     21 alive indie content on the web, leading to a reliance on platforms and
     22 time-sorted publication formats (blogs, feeds, tweets).
     23 
     24 Of course, I have also contributed to the problem. A paper I published 7 years
     25 ago has an abstract that includes a demo link, which has been taken over by a
     26 spammy page with a pumpkin picture on it. Part of that lapse was laziness to
     27 avoid having to renew and keep a functioning web application up year after
     28 year.
     29 
     30 I've recommended my students to push websites to Heroku, and publish portfolios
     31 on Wix. Yet every platform with irreplaceable content dies off some day.
     32 Geocities, LiveJournal, what.cd, now Yahoo Groups. One day, Medium, Twitter,
     33 and even hosting services like GitHub Pages will be plundered then discarded
     34 when they can no longer grow or cannot find a working business model.
     35 
     36 The problem is multi-faceted. First, content takes effort to maintain. The
     37 content may need updating to remain relevant, and will eventually have to be
     38 rehosted. A lot of content, what used to be the vast majority of content, was
     39 put up by individuals. But individuals (maybe you?) lose interest, so one day
     40 maybe you just don't want to deal with migrating a website to a new hosting
     41 provider.
     42 
     43 Second, a growing set of libraries and frameworks are making the web more
     44 sophisticated but also more complex. First came jquery, then bootstrap, npm,
     45 angular, grunt, webpack, and more. If you are a web developer who is keeping up
     46 with the latest, then that's not a problem.
     47 
     48 But if not, maybe you are an embedded systems programmer or startup CTO or
     49 enterprise Java developer or chemistry PhD student, sure you could probably
     50 figure out how to set up some web server and toolchain, but will you keep this
     51 up year after year, decade after decade? Probably not, and when the next year
     52 when you encounter a package dependency problem or figure out how to regenerate
     53 your html files, you might just throw your hands up and zip up the files to
     54 deal with "later". Even simple technology stacks like static site generators
     55 (e.g., Jekyll) require a workflow and will stop working at some point. You fall
     56 into npm dependency hell, and forget the command to package a release. And
     57 having a website with multiple html pages is complex; how would you know how
     58 each page links to each other? index.html.old, Copy of about.html, index.html
     59 (1), nav.html?
     60 
     61 Third, and this has been touted by others already (and even [2]rebutted), the
     62 disappearance of the public web in favor of mobile and web apps, walled gardens
     63 (Facebook pages), just-in-time WebSockets loading, and AMP decreases the
     64 proportion of the web on the world wide web, which now seems more like a
     65 continental web than a "world wide web".
     66 
     67 So for these problems, what can we do about it? It's not such a simple problem
     68 that can be solved in this one article. The Wayback Machine and archive.org
     69 helps keep some content around for longer. And sometimes an altruistic
     70 individual rehosts the content elsewhere.
     71 
     72 But the solution needs to be multi-pronged. How do we make web content that can
     73 last and be maintained for at least 10 years? As someone studying
     74 human-computer interaction, I naturally think of the stakeholders we aren't
     75 supporting. Right now putting up web content is optimized for either the
     76 professional web developer (who use the latest frameworks and workflows) or the
     77 non-tech savvy user (who use a platform).
     78 
     79 But I think we should consider both 1) the casual web content "maintainer",
     80 someone who doesn't constantly stay up to date with the latest web
     81 technologies, which means the website needs to have low maintenance needs; 2)
     82 and the crawlers who preserve the content and [3]personal archivers, the
     83 "archiver", which means the website should be easy to save and interpret.
     84 
     85 So my proposal is seven unconventional guidelines in how we handle websites
     86 designed to be informative, to make them easy to maintain and preserve. The
     87 guiding intention is that the maintainer will try to keep the website up for at
     88 least 10 years, maybe even 20 or 30 years. These are not controversial views
     89 necessarily, but are aspirations that are not mainstream—a manifesto for a
     90 long-lasting website.
     91 
     92  1. Return to vanilla HTML/CSS – I think we've reached the point where html/css
     93     is more powerful, and nicer to use than ever before. Instead of starting
     94     with a giant template filled with .js includes, it's now okay to just write
     95     plain HTML from scratch again. CSS Flexbox and Grid, canvas, Selectors,
     96     box-shadow, the video element, filter, etc. eliminate a lot of the need for
     97     JavaScript libraries. We can avoid jquery and bootstrap when they're not
     98     needed. The more libraries incorporated into the website, the more fragile
     99     it becomes. Skip the polyfills and CSS prefixes, and stick with the CSS
    100     attributes that work across all browsers. And frequently validate your
    101     HTML; it could save you a headache in the future when you encounter a bug.
    102  2. Don't minimize that HTML – minimizing (compressing) your HTML and
    103     associated CSS/JS seems like it saves precious bandwidth and all the big
    104     companies are doing it. But why not? Well, you don't save much because your
    105     web pages should be gzipped before being sent over the network, so
    106     preemptively shrinking your content probably doesn't do much to save
    107     bandwidth if anything at all. But even if it did save a few bytes (it's
    108     just text in the end), you now need to have a build process and to add this
    109     to your workflow, so updating a website just became more complex. If
    110     there's a bug or future incompatibility in the html, the minimized form is
    111     harder to debug. And it's unfriendly to your users; so many people got
    112     their start with HTML by smashing that View Source button, and minimizing
    113     your HTML prevents this ideal of learning by seeing what they did.
    114     Minimizing HTML does not preserve its educational quality, and what gets
    115     archived is only the resulting codejunk.
    116  3. Prefer one page over several – several pages are hard to maintain. You can
    117     lose track of which pages link to what, and it also leads to some system of
    118     page templates to reduce redundancy. How many pages can one person really
    119     maintain? Having one file, probably just an index.html, is simple and
    120     unforgettable. Make use of that infinite vertical scroll. You never have to
    121     dig around your files or grep to see where some content lies. And how
    122     should your version control that file? Should you use git? Shove them in an
    123     'old/' folder? Well I like the simple approach of naming old files with the
    124     date they are retired, like index.20191213.html. Using the ISO format of
    125     the date makes it so that it sorts easily, and there's no confusion between
    126     American and European date formats. If I have multiple versions in one day,
    127     I would use a style similar to that which is customary in log files, of
    128     index.20191213.1.html. A nice side effect is then you can access an older
    129     version of the file if you remember the date, without logging into the web
    130     host.
    131  4. End all forms of hotlinking – this cautionary word seems to have
    132     disappeared from internet vocabulary, but it's one of the reasons I've seen
    133     a perfectly good website fall apart for no reason. Stop directly including
    134     images from other websites, stop "borrowing" stylesheets by just linking to
    135     them, and especially stop linking to JavaScript files, even the ones hosted
    136     by the original developers. Hotlinking is [4]usually considered rude since
    137     your visitors use someone else's bandwidth, it makes the user experience
    138     slower, you let another website track your users, and worse of all if the
    139     location you're linking to changes their folder structure or just goes
    140     offline, then the failure cascades to your website as well. Google
    141     Analytics is unnecessary; store your own server logs and set up [5]GoAccess
    142     or cut them up however you like, giving you more detailed statistics. Don't
    143     give away your logs to Google for free.
    144  5. Stick with native fonts – we're focusing on content first, so decorative
    145     and unusual typefaces are completely unnecessary. Stick with either the 13
    146     web-safe fonts or a [6]system font stack that matches the default font to
    147     the operating system of your visitor. Using the system font stack might
    148     look a bit different between operating systems, but your layout shouldn't
    149     be so brittle that an extra word wrap will ruin it. Then you don't have to
    150     worry about the flashing font problem either. Your focus should be about
    151     delivering the content to the user effectively and making the choice of
    152     font be invisible, rather than getting noticed to stroke your design ego.
    153  6. Obsessively compress your images – faster for your users, less space to
    154     archive, and easier to maintain when you don't have to back up a humongous
    155     folder. Your images can have the same high quality, but be smaller. [7]
    156     Minify your SVGs, losslessly compress your PNGs, generate JPEGs to exactly
    157     fit the width of the image. It's worth spending some time figuring out the
    158     most optimal way to compress and [8]reduce the size of your images without
    159     losing quality. And once [9]WebP gains support on Safari, switch over to
    160     that format. Ruthlessly minimize the total size of your website and keep it
    161     as small as possible. Every MB can cost someone real money, and in fact, my
    162     mobile carrier (Google Fi) charges a cent per MB, so a 25 MB website which
    163     is fairly common nowadays, costs a quarter itself, about as much as a
    164     newspaper when I was a child.
    165  7. Eliminate the broken URL risk – there are [10]monitoring services that will
    166     tell you when your URL is down, preventing you from realizing one day that
    167     your homepage hasn't been loading for a month and the search engines have
    168     deindexed it. Because 10 years is longer than most hard drives or operating
    169     systems are meant to last. But to eliminate the risk of a URL breaking
    170     completely, set up a second monitoring service. Because if the first one
    171     stops for any reason (they move to a pay model, they shut down, you forget
    172     to renew something, etc.) you will still get one notification when your URL
    173     is down, then realize the other monitoring service is down because you
    174     didn't get the second notification. Remember that we're trying to keep
    175     something up for over 10 years (ideally way longer, even 30 years), and a
    176     lot of services will shut down during this period, so two monitoring
    177     services is safer.
    178 
    179 After doing these things, go ahead and place a bit of text in the footer, "The
    180 page was designed to last", linking to this page explaining what that means.
    181 The words promise that the maintainer will do their best to follow the ideas in
    182 this manifesto.
    183 
    184 Before you protest, this is obviously not for web applications. If you are
    185 making an application, then make your web or mobile app with the workflow you
    186 need. I don't even know any web applications that have remained similarly
    187 functioning over 10 years so it seems like a lost cause anyway (except Philip
    188 Guo's python tutor, due to his [11]minimalist strategy for maintaining it).
    189 It's also not for websites maintained by an organization like Wikipedia or
    190 Twitter. The salaries for an IT team is probably enough to keep a website alive
    191 for a while.
    192 
    193 In fact, it's not even that important you strictly follow the 7 "rules", as
    194 they're more of a provocation than strict rules.
    195 
    196 But let's say some small part of the web starts designing websites to last for
    197 content that is meant to last. What happens then? Well, people may prefer to
    198 link to them since they have a promise of working in the future. People more
    199 generally may be more mindful of making their pages more permanent. And users
    200 and archivers both save bandwidth when visiting and storing these pages.
    201 
    202 The effects are long term, but the achievements are incremental and can be
    203 implemented by website owners without being dependent on anyone else or waiting
    204 for a network effect. You can do this now for your website, and that already
    205 would be a positive outcome. Like using a recycled shopping bag instead of a
    206 taking a plastic one, it's a small individual action.
    207 
    208 This article is meant to provoke and lead to individual action, not propose a
    209 complete solution to the decaying web. It's a small simple step for a complex
    210 sociotechnical system. So I'd love to see this happen. I intend to keep this
    211 page up for at least 10 years.
    212 
    213 If you are interested in receiving updates to [12]irchiver, our project for a
    214 personal archive of the web pages you visit, please [13]subscribe here.
    215 
    216 Thanks to my Ph.D. students Shaun Wallace, Nediyana Daskalova, Talie Massachi,
    217 Alexandra Papoutsaki, my colleagues James Tompkin, Stephen Bach, my teaching
    218 assistant Kathleen Chai, and my research assistant Yusuf Karim for feedback on
    219 earlier drafts.
    220 
    221 See discussions on [14]Hacker News and [15]reddit /r/programming
    222 
    223 Also in this series
    224 
    225 [16]Behind the scenes: the struggle for each paper to get published
    226 
    227 [17]Illustrative notes for obsessing over publishing aesthetics
    228 
    229 Other articles I've written
    230 
    231 [18]My productivity app is a never-ending .txt file
    232 
    233 [19]The Coronavirus pandemic has changed our sleep behavior
    234 
    235 [20]Extracting data from tracking devices by going to the cloud
    236 
    237 [21]CS Faculty Composition and Hiring Trends
    238 
    239 [22]Bias in Computer Science Rankings
    240 
    241 [23]Who Wins CS Best Paper Awards?
    242 
    243 [24]Verified Computer Science Ph.D. Stipends
    244 
    245 This page is [25]designed to last.
    246 
    247 References:
    248 
    249 [1] https://jeffhuang.com/
    250 [2] https://gomakethings.com/the-web-is-not-dying/
    251 [3] https://archivebox.io/
    252 [4] https://webmasters.stackexchange.com/questions/25315/hotlinking-what-is-it-and-why-shouldnt-people-do-it
    253 [5] https://goaccess.io/
    254 [6] https://systemfontstack.com/
    255 [7] https://victorzhou.com/blog/minify-svgs/
    256 [8] https://evilmartians.com/chronicles/images-done-right-web-graphics-good-to-the-last-byte-optimization-techniques
    257 [9] https://caniuse.com/#feat=webp
    258 [10] https://uptimerobot.com/
    259 [11] https://pg.ucsd.edu/publications/Python-Tutor-scalable-sustainable-research-software_UIST-2021.pdf
    260 [12] https://irchiver.com/
    261 [13] https://docs.google.com/forms/d/e/1FAIpQLSeTCgnwF1gjrc1O8mfJ_5TmT_TLowFQ2DUhsollmqPG84pAFQ/viewform?usp=pp_url&entry.1299571007=irchiver:+your+full-resolution+personal+web+archive+and+search&entry.1760653896=designed_to_last
    262 [14] https://news.ycombinator.com/item?id=21840140
    263 [15] https://www.reddit.com/r/programming/comments/ed88ra/this_page_is_designed_to_last_a_manifesto_for/
    264 [16] https://jeffhuang.com/struggle_for_each_paper/
    265 [17] https://jeffhuang.com/illustrative-notes-for-publishing-aesthetics/
    266 [18] https://jeffhuang.com/productivity_text_file/
    267 [19] https://jeffhuang.com/covid_sleep/
    268 [20] https://jeffhuang.com/extracting_data_from_tracking_devices/
    269 [21] https://jeffhuang.com/computer-science-open-data/#cs-faculty-composition-and-hiring-trends
    270 [22] https://jeffhuang.com/computer-science-open-data/#bias-in-computer-science-rankings
    271 [23] https://jeffhuang.com/computer-science-open-data/#who-wins-cs-best-paper-awards
    272 [24] https://jeffhuang.com/computer-science-open-data/#verified-computer-science-phd-stipends
    273 [25] http://jeffhuang.com/designed_to_last/