<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Documenting DocNow - Medium]]></title>
        <description><![CDATA[News from the Documenting the Now Project - Medium]]></description>
        <link>https://medium.com/documenting-docnow?source=rss----fbfcadb24046---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Documenting DocNow - Medium</title>
            <link>https://medium.com/documenting-docnow?source=rss----fbfcadb24046---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 03:18:55 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/documenting-docnow" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Looking Forwards]]></title>
            <link>https://medium.com/documenting-docnow/looking-forwards-64cee8436640?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/64cee8436640</guid>
            <category><![CDATA[social-media]]></category>
            <category><![CDATA[archive]]></category>
            <category><![CDATA[research]]></category>
            <dc:creator><![CDATA[Ed Summers]]></dc:creator>
            <pubDate>Wed, 19 Jul 2023 18:54:57 GMT</pubDate>
            <atom:updated>2023-07-19T18:54:56.982Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*E5w9yUhtD3GUO3B_uMlLlw.jpeg" /><figcaption><a href="https://commons.wikimedia.org/wiki/File:Fork_in_path,_Holkham_woods_-_geograph.org.uk_-_4814592.jpg">Fork in path, Holkham woods</a> by Derek Harper</figcaption></figure><p>Since 2014 the <a href="https://www.docnow.io/">Documenting the Now</a> project has worked to develop tools and cultivate a community of practice for collecting social media. Documenting the Now began as a collective memory project amidst the protests following the murder of Mike Brown in Ferguson. Informed by early work studying the political and social significance of social media (Freelon, McIlwain &amp; Clark, 2016) the Documenting the Now project hosted workshops, a Slack forum for discussing how to collect social media data, and developed several specialized tools specifically for Twitter, including:</p><ul><li><strong>twarc</strong>: for collecting data from the Twitter v1.1, v2 and Enterprise APIs</li><li><strong>Catalog</strong>: a clearinghouse for sharing tweet id datasets</li><li><strong>Hydrator</strong>: a desktop application for converting tweet id datasets into JSON and CSV</li><li><strong>DocNow</strong>: a web application for collecting Twitter data and obtaining consent from content creators</li></ul><p>According to Google Scholar, twarc has been cited over 500 times as a tool for collecting and hydrating Twitter datasets. It has been starred 1,300 times and forked 250 times on GitHub as it has been part of other software tools such as the Social Feed Manager. Numerous guides have been independently prepared by data scientists, Software Carpentry, and even Twitter themselves as part of their Twitter Research outreach. Enhanced access under Twitter’s Academic Research Product Track enabled searching the full archive of public tweets back to Twitter’s beginning in 2006.</p><p>After the acquisition of Twitter by Elon Musk, the changes to the Twitter API have resulted in the complete dismantling of DocNow’s tools. While it still technically functions (if you still have API keys), twarc is basically useless unless you want to pay $100/month to retrieve 10,000 tweets ($0.01 per tweet), or $5000/month for up to 1 million tweets. These prices and the new policies around deletion of Twitter data are designed for commercial use, and to terminate academic research and study of the platform. The DocNow application, which was built around Academic Research Product Track quotas and historical search no longer functions with the new API regime. Twitter has revoked the keys for Hydrator and the instance we have been running at <a href="http://community.docnow.io/">community.docnow.io</a>.</p><p>The truth is that the writing has been on the wall for access to corporate social media platform APIs for some time (Freelon, 2018 ; <a href="http://twitter.com/Bruns">Bruns</a>, 2019). Twitter and Reddit have been anomalies more than examples of the norm when it comes to access to platform data. Scraping practices are widespread, but are fraught with fragility due to interface changes, lack of documentation, and also present major reproducibility and provenance challenges. While social media APIs have typically been layered on top of the web, their key management, authentication, URL routes, and data representations have required the development of specialized tooling, that also has fragmented methods and diminished cooperation amongst projects.</p><p>With these challenges, and the shuttering of API access except for the most powerful, we believe that the social media and web research community needs to embrace the use of general-purpose web archiving technology and practices to preserve and study social media platforms and the web. As divergent as they are most platforms still have some kind of web surface as an interface. Service providers such as the Internet Archive’s Wayback Machine, and tools such as those provided by the <a href="https://webrecorder.net/">Webrecorder</a> project need support from the research community. Tools for analyzing web archive data such as those by the <a href="https://archivesunleashed.org/">Archives Unleashed Project</a> and specialized methodological approaches to using WARC data in research (<a href="http://twitter.com/Proferes">Proferes</a>, 2019) need to be further developed and socialized. Expertise in using WARC data needs to become more commonplace through curriculum development, training, and community workshops.</p><p>In addition to supporting existing tools and service providers, we should foster a more diverse community of people who can use web and social media archiving tools to create data collections. A more diverse set of users beyond academic researchers and the handful of archivists at academic and national libraries, will allow us to grow the number of collections available for research. A more diverse set of users of these tools also creates the possibility to envision new types of tools and practices for collecting this data, brings new meanings to what is valuable as web data, and builds a more inclusive historical record. Documenting the Now and the <a href="https://archivingtheblackweb.org/">Archiving the Black Web</a> project will be working more towards this community-building and education approach in the coming years.</p><p>Some aspects of <a href="https://medium.com/on-archivy/were-all-bona-fide-f502bdaea029">traditional archiving practices</a> also present a way forward, for example, working with individuals to donate their collections (or social media data), respecting an individual’s right to consent to have their information collected, building publicly accessible digital repositories of archival materials, and collaborative collection development, are useful practices and can help us imagine new ways forward for working with social media data in this post open API era.</p><p>No matter the path, the preservation of social media and the web will require not only our willingness to collaborate and share but also our recognition that its preservation is our responsibility. These platforms will not protect us in the physical world or the worlds we’ve created online.</p><p><strong>References</strong></p><p>Bruns, A. (2019). After the `APIcalypse’: Social media platforms and their fight against critical scholarly research. <em>Information, Communication &amp; Society</em>. <a href="https://www.tandfonline.com/doi/abs/10.1080/1369118X.2019.1637447">https://www.tandfonline.com/doi/abs/10.1080/1369118X.2019.1637447</a></p><p>Freelon, D. (2018). Computational research in the post-API age. <em>Political Communication</em>. <a href="https://www.tandfonline.com/doi/abs/10.1080/10584609.2018.1477506?journalCode=upcp20">https://www.tandfonline.com/doi/abs/10.1080/10584609.2018.1477506</a></p><p>Freelon, D., McIlwain, C. D., &amp; Clark, M. D. (2016). <em>Beyond the Hashtags: #Ferguson, #BlackLivesMatter, and the struggle for online justice.</em> Center for Social Media and Impact. <a href="http://www.cmsimpact.org/sites/default/files/beyond%20_the%20_hashtags%20_2016.pdf">http://www.cmsimpact.org/sites/default/files/beyond _the _hashtags _2016.pdf</a></p><p>Proferes, N., &amp; Summers, E. (2019). Algorithms and agenda-setting in Wikileaks’ #Podestaemails release. <em>Information, Communication &amp; Society</em>, <em>22</em>(11), 1630–1645. <a href="https://doi.org/10.1080/1369118X.2019.1626469">https://doi.org/10.1080/1369118X.2019.1626469</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=64cee8436640" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/looking-forwards-64cee8436640">Looking Forwards</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introducing DocNow 1.0]]></title>
            <link>https://medium.com/documenting-docnow/introducing-docnow-1-0-12ebc0011cdf?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/12ebc0011cdf</guid>
            <category><![CDATA[social-media-research]]></category>
            <category><![CDATA[archive]]></category>
            <category><![CDATA[archiving-digital-content]]></category>
            <category><![CDATA[social-media]]></category>
            <category><![CDATA[consent]]></category>
            <dc:creator><![CDATA[Zakiya Collier]]></dc:creator>
            <pubDate>Mon, 04 Apr 2022 18:22:21 GMT</pubDate>
            <atom:updated>2022-04-04T18:22:21.454Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ukitjxcQjLYxKIdO05Mk0A.png" /></figure><p><em>Today the Documenting the Now project announces the release of </em><a href="https://www.docnow.io/docnow-app/"><em>DocNow</em></a><em>, an application for appraising, collecting, and gathering consent for Twitter content. DocNow reimagines the relationship between content creators and social media analysts (archivists and researchers) by addressing two of the most challenging issues of social media archiving practice — the issues of </em><strong><em>consent and appraisal. The Documenting the Now Project is happy to release version 1.0 of our open-source tool freely for anyone to use. </em></strong><em>Read all about the app, what it does, and how to engage with the DocNow project team for support and providing feedback.</em></p><p>Over the last seven years, Documenting the Now has helped to foster an environment where a more broad sector of cultural memory workers can learn about web archiving tools and practices and can become involved with web archiving networks. This has largely been achieved by practicing transparency and inviting people who have traditionally been left out of established web content archiving networks into the project to participate, namely students, activists, and archivists who represent marginalized communities and who work in community-centered organizations, HBCUs, public libraries, community-based archives, and tribal libraries and archives</p><p>Documenting the Now was a response to the need among scholars, activists, archivists, and other memory workers for new tools that would provide easily-accessible and user-friendly means to collect, visualize, analyze, and preserve web and social media content to better document public events. In addition, it aimed to respond to questions and concerns related to ethics, safety, intellectual property, and access issues for the collection, preservation, and dissemination of Twitter data in particular.</p><p>Documenting the Now has also developed community-centered web and social media archiving tools that both prioritize care for content creators and robust functionality for users:</p><ul><li><a href="https://twarc-project.readthedocs.io/">Twarc</a> — a command-line tool and Python library for collecting tweet data from Twitter’s official API</li><li><a href="https://github.com/DocNow/hydrator/releases">Hydrator</a> — a desktop application for turning Tweet ID datasets back into tweet data to use in your research</li><li><a href="https://www.docnow.io/social-humans/">Social Humans</a> — a label system to specify the terms of consent for social media content</li><li><a href="https://catalog.docnow.io/">The Catalog</a> — a community-sourced clearinghouse to access and share tweet identifier datasets</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/919/1*qhfZLMWN6rXu3PuTdL_yoA.png" /></figure><p>In continuing to support and develop tools that embody ethical practices for social media archiving, the DocNow app joins this suite of tools. DocNow is an application for appraising, collecting, and gathering consent for Twitter content and includes several new features including:</p><ul><li><strong>Trends</strong> tab to view trending topics across the globe in real-time</li><li><strong>Explore</strong> tab to view content by users, media, URLs, and related hashtags all on one screen</li><li><strong>Live testing</strong> and refining of collecting parameters on recent tweets</li><li><strong>Tweets per hour calculator</strong> to easily identify Twitter bot accounts</li><li><strong>Search</strong> and <strong>Collect</strong> tweets back in time via Search API and forwards with Stream API</li><li><strong>Activate </strong>toggle to start collecting tweets and send a notification tweet to encourage transparency and communication in Twitter data collection</li><li><strong>Collections</strong> tab to share information about your collection with the public</li><li><strong>“Find Me” </strong>and<strong> Insights Overview </strong>features to specify and gather<strong> consent </strong>using <a href="https://www.docnow.io/social-humans/">Social Humans labels</a></li><li><strong>Download </strong>Tweet ID archive for sharing following Twitter’s terms of service</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*09D6v8BF0lFQnLj0hQHUoQ.png" /></figure><p>The DocNow app also works in concert with other Documenting the Now tools, creating for users, a 4-step social media archiving journey:</p><p><strong>Step 1: </strong>Collect content with the DocNow App by activating a search. Set collection limits and explore insights as your collection grows.</p><p><strong>Step 2:</strong> Download your archive from the DocNow App, which includes a Tweet Viewer, Tweet IDs, and media files.</p><p><strong>Step 3:</strong> Hydrate your Tweet IDs from the archive’s tweets.csv file back into full tweets using DocNow’s Hydrator desktop application.</p><p><strong>Step 4: </strong>Describe your collection and share your Tweet IDs with other researchers by adding them to the DocNow Catalog.</p><h4>Ways to Use DocNow</h4><p>There are 3 different ways to use DocNow including joining the community instance, running DocNow locally on a computer, and installing an instance of DocNow in the cloud. The Community Instance is a great way to get familiar with the tool before committing to running an instance but those with development skills may want to administer their own instance of DocNow locally or in the cloud.</p><ol><li><a href="https://community.docnow.io/">Join Documenting the Now’s hosted community instance</a></li><li><a href="https://docnow.readthedocs.io/en/latest/local/">Run DocNow locally on your machine</a></li><li><a href="https://docnow.readthedocs.io/en/latest/cloud/">Install your own instance in the cloud</a></li></ol><p>For help with installation and getting started, the Documenting the Now team will host community conversations. Dates will be announced soon! More information about the DocNow App can be found at <a href="https://www.docnow.io/docnow-app/">https://www.docnow.io/docnow-app/</a>.</p><p>Documenting the Now is seeking community input on all of our features as we continue to develop DocNow. Please join our slack channel by going to our website at <a href="http://docnow.io/">docnow.io</a> or email us at <a href="http://info@docnow.io/">info@docnow.io</a>. We welcome all feedback!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=12ebc0011cdf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/introducing-docnow-1-0-12ebc0011cdf">Introducing DocNow 1.0</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Counting Tweets]]></title>
            <link>https://medium.com/documenting-docnow/counting-tweets-8070b255a864?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/8070b255a864</guid>
            <category><![CDATA[archive]]></category>
            <category><![CDATA[research]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[twitter]]></category>
            <dc:creator><![CDATA[Ed Summers]]></dc:creator>
            <pubDate>Fri, 25 Jun 2021 01:23:30 GMT</pubDate>
            <atom:updated>2021-09-15T19:42:32.145Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9ix6Cqc9Dih0Ow0f-9F6FQ.jpeg" /><figcaption><a href="https://commons.wikimedia.org/wiki/File:Abacus_6.jpg">Chinese abacus</a> by David R. Tribble — displaying the decimal number 2,048</figcaption></figure><p>Today Twitter <a href="https://twittercommunity.com/t/introducing-new-tweet-counts-endpoints-to-the-twitter-api-v2/155997">released a new API endpoint</a> that allows you to fetch the number of tweets that match a query (like a hashtag) over time.</p><blockquote>… we’re excited to launch two new endpoints, recent Tweet counts and full-archive Tweet counts, to the Twitter API v2. These endpoints are valuable for a number of reasons, but most commonly, to understand the size of the conversation, or the amount of data a query will return, prior to submitting a search request.</blockquote><p>Thanks to some light coordination between Twitter and software developer <a href="https://twitter.com/IgorBrigadir">Igor Brigadir</a> a <a href="https://github.com/DocNow/twarc/releases/tag/v2.3.0">new version</a> of the <a href="https://twarc-project.readthedocs.io/en/latest/">twarc utility</a> was released today with <a href="https://twarc-project.readthedocs.io/en/latest/twarc2/#counts">a new command</a> for collecting data from the counts endpoint.</p><p>This is significant news for researchers because these aggregate statistics can be critical for data gathering activities, and these numbers were previously really only known to Twitter themselves.</p><p>For example, it’s now possible to use a single twarc command to get the number of #blacklivesmatter tweets per day since the <a href="https://twitter.com/biz/status/21">very first tweet</a>, and save it as a CSV file, that you can then use to create a graph of the hashtag’s usage over time:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lYMtc8Z6cN3CUopYBCID2g.png" /><figcaption>#blacklivesmatter hashtag usage by day</figcaption></figure><p>This admittedly dull graph is really quite remarkable, because it clearly shows that on May 28, 2020 there was a huge increase in the number of #blacklivesmatter tweets. There’s really no need to look any closer at the data to realize what happened that day:</p><p><a href="https://www.nytimes.com/video/us/100000007161078/george-floyd-minneapolis-protests.html?smid=url-share">Video: George Floyd Protests Escalate in Minneapolis</a></p><p>The results are a bit surprising however because the total number of #blacklivesmatter tweets is 71,190,571. That’s a large number, but it’s not as big as you might expect.</p><p>Counting tweets that match #blacklivesmatter <strong>or</strong> #blm doesn’t change the shape of the graph too much, but it does result in almost five times as many tweets being returned: 302,401,621. It’s important to remember here that these counts <em>do not</em> include tweets that have since been deleted or protected. Depending on what you are counting this can be a significant factor when interpreting counts for particular events.</p><p>Once installed and configured the twarc command for collecting these counts is pretty simple. Here is the command for retrieving the raw hourly count data (JSON) from the API for <em>blacklivesmatter</em> over the last seven days:</p><pre>$ twarc2 counts &quot;blacklivesmatter OR blm&quot; counts.jsonl</pre><p>To collect the daily counts from the full archive and write the data as CSV instead of JSON a few more options are needed.</p><pre>$ twarc2 counts &quot;blacklivesmatter OR blm&quot; counts.csv --archive --csv --granularity day </pre><p>For an example of how the simple graph above was created take a look at <a href="https://colab.research.google.com/drive/1d8x7JCG-DQ5WCAXfdz23Y2zdwqzC85zk?usp=sharing">this Jupyter notebook</a>.</p><p>Finally as a counterpoint consider this graph of tweets mentioning <em>#maga</em>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KgGTwyKOEx4VJXe1GXE_1Q.png" /></figure><p>There are a few peaks and valleys there, but zooming in on the largest of them yields this graph:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*50Yq_LOWy0Me1A3U9kbLLg.png" /><figcaption>Zoomed in on January 2021</figcaption></figure><p>That peak is January 6, 2021.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8070b255a864" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/counting-tweets-8070b255a864">Counting Tweets</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Documenting Events]]></title>
            <link>https://medium.com/documenting-docnow/documenting-events-13369d471608?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/13369d471608</guid>
            <category><![CDATA[twitter]]></category>
            <category><![CDATA[events]]></category>
            <category><![CDATA[archive]]></category>
            <category><![CDATA[social-media]]></category>
            <dc:creator><![CDATA[Ed Summers]]></dc:creator>
            <pubDate>Tue, 01 Jun 2021 21:08:29 GMT</pubDate>
            <atom:updated>2021-06-01T23:47:56.858Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dBmDPawUlhqha9CthTkC6A.jpeg" /><figcaption><a href="https://www.flickr.com/photos/mastababa/36430297755">Everyman’s Palimpsest</a> by <a href="https://www.flickr.com/photos/mastababa/">Babak Fakhamzadeh</a></figcaption></figure><p>From its early adopters in 2007 at SXSW to its use today by journalists around the world, Twitter has always been a social media platform for documenting events. In 2014 the Documenting the Now project itself got started around efforts to document the protests and activism following the murder of Michael Brown in Ferguson, Missouri. Twitter remains one of the most accessible sources of data for breaking events of various kinds.</p><p>The combination of Twitter’s <a href="https://blog.twitter.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html">new V2 API</a> and their <a href="https://blog.twitter.com/developer/en_us/topics/tools/2021/enabling-the-future-of-academic-research-with-the-twitter-api.html">Academic Research Product Track</a> means that Twitter is still an excellent source of information about events. But figuring out the best practices to document events can be challenging. So we were really pleased to see <a href="https://ryanjgallagher.github.io/">Ryan Gallagher</a>’s short thread about the 4 steps he uses for using Twitter’s API to document events.</p><h3>Ryan J. Gallagher on Twitter: &quot;The Twitter API v2 for academics makes it a lot easier to collect complete event dataI currently have a 4 step process that I finally successfully ran end to end on a real event this week, so I thought it might be useful to share1/ / Twitter&quot;</h3><p>The Twitter API v2 for academics makes it a lot easier to collect complete event dataI currently have a 4 step process that I finally successfully ran end to end on a real event this week, so I thought it might be useful to share1/</p><p>This post is simply a gloss on Ryan’s thread which provides examples of how to perform each step with the new functionality we released in <a href="https://news.docnow.io/twarc2-779278e66ea0">twarc2</a>. But put on your snorkel and diving gear because we are headed to the command line. (Aside: f you are new to the command line and are looking for some help look for the links to the documentation and our Slack channel at the end of this post).</p><h3>1. Collect Live Tweets</h3><h3>Ryan J. Gallagher on Twitter: &quot;1. Try to use the filter stream to get as much of the data as possibleI think the 1% threshold still applies here (you can only stream all filtered tweets if they&#39;re &lt;1% of all tweets at any time). If this is really trouble for you, you can just use the next step / Twitter&quot;</h3><p>1. Try to use the filter stream to get as much of the data as possibleI think the 1% threshold still applies here (you can only stream all filtered tweets if they&#39;re &lt;1% of all tweets at any time).</p><p>If the event is ongoing and you know a few relevant hashtags or keywords you can use the filter stream API to collect tweets from the filter stream API as they happen. We did this recently for the <a href="https://en.wikipedia.org/wiki/Kenmure_Street_protests">Kenmure Street Protests</a> where the hashtags <a href="https://twitter.com/search?q=kenmurestreet"><em>#kenmurestreet</em></a> and <a href="https://twitter.com/search?q=kenmurest"><em>#kenmurest</em></a><em> </em>were being used. First we added the two keywords to our streaming rules:</p><pre>$ twarc2 stream-rules add kenmurest<br>$ twarc2 stream-rules add kenmurestreet</pre><p>And then started streaming the tweets to a file tweets.jsonl:</p><pre>% twarc2 stream &gt; tweets.jsonl</pre><p>You can leave this running as long as you want to collect tweets: hours, days, months … we’ve run a twarc job for over a year before. The hard thing is keeping the computer turned on and connected to the Internet. Most of the time you are only interested in a few days or weeks which was the case for the #kenmurestreet data collection.</p><h3>2. Collect Past Tweets</h3><h3>Ryan J. Gallagher on Twitter: &quot;Also the completeness of your data will vary based on how quickly you&#39;re able to run the full archive searchNote: this is where you need to have the academic track / Twitter&quot;</h3><p>Also the completeness of your data will vary based on how quickly you&#39;re able to run the full archive searchNote: this is where you need to have the academic track</p><p>Unless you are planning to document an event before it happens you often need to go back and get older tweets that were already sent. If you note down when you start collecting the live tweets you can use this time in combination with when the event began to scope the data collection, for example:</p><pre>$ twarc2 search &#39;kenmurest OR kenmurestreet&#39; --start-time 2021-05-13 --end-time 2021-05-21 &gt; tweets.jsonl</pre><p>You can collect tweets from the last 7 days, but as Ryan says you will need access to the Academic Research product track to search further back. If you have access you can simply add the --archive option, but be careful to limit how much you are collecting with a --start-time or --limit (discussed below) or else you can use up your monthly quota!</p><pre>$ twarc2 search --archive &#39;kenmurest OR kenmurestreet&#39; --start-time 2021-01-01 --end-time 2021-05-21 &gt; tweets.jsonl</pre><h3>3. Collect Conversations</h3><h3>Ryan J. Gallagher on Twitter: &quot;3. Use all of the conversation IDs of all the tweets from the streaming and the search to get all their reply threadsThis is new with v2! There&#39;s no excuse anymore not to actually have the conversations that happen around events in your data / Twitter&quot;</h3><p>3. Use all of the conversation IDs of all the tweets from the streaming and the search to get all their reply threadsThis is new with v2! There&#39;s no excuse anymore not to actually have the conversations that happen around events in your data</p><p>Collecting hashtags and keywords can be a useful entry point into tweets about an event, but it will not collect responses to those tweets and all the threaded conversations that can happen. You can use theconversations command to collect all the conversation threads that were referenced in your initially collected data:</p><pre>$ twarc2 conversations tweets.jsonl &gt; conversations.jsonl</pre><h3>4. Collect Timelines</h3><h3>Ryan J. Gallagher on Twitter: &quot;4. (optional) Collect the user timelines of those in your datasetThis is so that you have contextual data on what people were saying prior to a particular event. When we focus just on event data, we lose the bigger pictureBut a warning: / Twitter&quot;</h3><p>4. (optional) Collect the user timelines of those in your datasetThis is so that you have contextual data on what people were saying prior to a particular event. When we focus just on event data, we lose the bigger pictureBut a warning:</p><p>It can also be useful to see what users were doing while they were documenting an event. Collecting the user timelines of users can be one way of seeing what some of this ambient content andactivity might be.</p><pre>$ twarc2 timelines tweets.jsonl &gt; timelines.jsonl</pre><p>If the event didn’t happen in the last 7 days you will need to use the historical archive:</p><pre>$ twarc2 timelines --archive tweets.jsonl &gt; timelines.jsonl</pre><p>As Ryan notes depending on how many tweets you have collected you could end up putting a big dent in your monthly quota. You can use --limit and --conversation-limit to control how much data is returned. For example if you only wanted to collect the last 100 tweets of each user and no more than 25,000 timeline tweets in total:</p><pre>% twarc2 timelines tweets.jsonl --limit 25000 --conversation-limit 100 &gt; timelines.jsonl</pre><h3>5. Limits</h3><h3>Ryan J. Gallagher on Twitter: &quot;One potential issue is that there isn&#39;t a way around with v2 is the 10,000,000 tweets/month cap. So this pipeline is only going to work on moderate sized events. Nothing something large or ongoing like the presidential election or national vaccine rollouts / Twitter&quot;</h3><p>One potential issue is that there isn&#39;t a way around with v2 is the 10,000,000 tweets/month cap. So this pipeline is only going to work on moderate sized events. Nothing something large or ongoing like the presidential election or national vaccine rollouts</p><p>Speaking of limits you can actually apply --limit to any stage of the process. So if you wanted to search for tweets, but no more than 50,000 you could have:</p><pre>$ twarc2 search kenmurest --limit 50000 &gt; search.jsonl</pre><p>Or if you wanted to limit the number of conversation tweets by total tweets:</p><pre>$ twarc2 conversations tweets.jsonl --limit 50000 &gt; conversations.jsonl</pre><p>You can also control how many tweets per conversation to collect. So for example if you only wanted to collect the first 100 tweets in each conversation:</p><pre>$ twarc2 conversations tweets.jsonl --conversation-limit 100 &gt; conversations.jsonl</pre><h3>Now What?</h3><p>twarc will log what activities it is performing and when to a file named twarc.log This log can be useful for remembering what you’ve done along the way. Once you have collected the data you will no doubt wonder what to do with all the JSON data. While this is largely a topic for another post a lot of people want to turn the data into CSV for examination in Google Sheets or as an R or Pandas dataframe. To do that you can install the <a href="https://github.com/docnow/twarc-csv">twarc-csv</a> plugin and:</p><pre>twarc2 csv tweets.jsonl &gt; tweets.csv</pre><p>If you have any questions about this please check out the <a href="https://twarc-project.readthedocs.io/en/latest/">twarc2 documentation</a> or join us in the <a href="https://bit.ly/docnow-slack">Documenting the Now Slack</a>. Documenting the Now’s Ed Summers also did a recent presentation about the Twitter V2 API and twarc2 at the University of Maryland Social Data Science Center:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FP-T-Lf6OJOo%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DP-T-Lf6OJOo&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FP-T-Lf6OJOo%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/11b2cf9babbb309b0d23c791051ceda7/href">https://medium.com/media/11b2cf9babbb309b0d23c791051ceda7/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=13369d471608" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/documenting-events-13369d471608">Documenting Events</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[twarc2]]></title>
            <link>https://medium.com/documenting-docnow/twarc2-779278e66ea0?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/779278e66ea0</guid>
            <category><![CDATA[archive]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[twitter]]></category>
            <category><![CDATA[social-media]]></category>
            <category><![CDATA[research]]></category>
            <dc:creator><![CDATA[Ed Summers]]></dc:creator>
            <pubDate>Wed, 07 Apr 2021 22:12:11 GMT</pubDate>
            <atom:updated>2021-05-06T15:05:09.047Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/931/1*SnqqK2hMESrWPn9CBvt2Lg.png" /><figcaption>Tweets + Python + Data = twarc</figcaption></figure><p><a href="https://twarc-project.readthedocs.org/"><em>twarc</em></a><em> has been redesigned from the ground up to work with the </em><a href="https://blog.twitter.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html"><em>new Twitter v2 API</em></a><em> and their </em><a href="https://blog.twitter.com/developer/en_us/topics/tools/2021/enabling-the-future-of-academic-research-with-the-twitter-api.html"><em>Academic Research track</em></a><em>. Many thanks for the code and design contributions of </em><a href="https://www.itee.uq.edu.au/think/elizabeth-alpert"><em>Betsy Alpert</em></a><em>, </em><a href="https://twitter.com/igorbrigadir"><em>Igor Brigadir</em></a><em>, </em><a href="https://www.linkedin.com/in/sam-hames-946b9478/?originalSubdomain=au"><em>Sam Hames</em></a><em>, </em><a href="https://geog.umd.edu/gradprofile/sauer/jeffery-%28jeff%29"><em>Jeff Sauer</em></a><em>, and </em><a href="https://www.linkedin.com/in/daniel-verdear-9aa5a2172/"><em>Daniel Verdeer</em></a><em> that have made twarc2 possible, as well as early feedback from </em><a href="https://twitter.com/DanKerchner"><em>Dan Kerchner,</em></a><em> </em><a href="https://scholarslab.lib.virginia.edu/people/shane-lin/"><em>Shane Lin</em></a><em>, </em><a href="https://miles.land/"><em>Miles McCain</em></a><em>, </em><a href="https://rongpeng.li/"><em>李荣蓬</em></a><em>, </em><a href="https://cyber.fsi.stanford.edu/io/people/david-thiel"><em>David Thiel</em></a><em>, </em><a href="https://melaniewalsh.org/"><em>Melanie Walsh</em></a><em> and </em><a href="https://twitter.com/liblaura"><em>Laura Wrubel</em></a><em>. Extra special thanks to the </em><a href="https://www.qut.edu.au/institute-for-future-environments"><em>Institute for Future Environments</em></a><em> at </em><a href="https://www.qut.edu.au/"><em>Queensland University of Technology</em></a><em> for supporting Betsy and Sam in their work, and for the continued support of the </em><a href="https://mellon.org/"><em>Mellon Foundation</em></a><em>.</em></p><p><em>Update 2021–05–04: If you are interested in watching a discussion of how to install and use twarc2 on the TwitterDev Twitch check out </em><a href="https://tube.nocturlab.fr/videos/watch/1d98d20e-a4fd-4594-aa94-9b1b1301cead"><em>this recording</em></a><em>.</em></p><p>Back in August of last year Twitter <a href="https://blog.twitter.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html">announced</a> early access to their new v2 API, and their <a href="https://developer.twitter.com/en/products/twitter-api/early-access/guide#rollingout">plans</a> to sunset the v1.1 API that has been active for almost the last 10 years. Over the lifetime of their v1.1 API Twitter has become deeply embedded in the media landscape. As magazines, newspapers and television have moved onto the web they have increasingly adopted tweets as a mechanism for citing politicians, celebrities and organizations, while also using them to document current events, <a href="https://www.tandfonline.com/doi/full/10.1080/1461670X.2011.571825?casa_token=XYL4hUS2LB8AAAAA%3As12sZht-gAo-3TAASDKB-L4GJIdBiVtzYhY6s7rCBPnNJZAIhbjobCL1AyXzoNf-WIKJwv9CMC4W">generate leads</a> and gather feedback for evolving stories. As a result Twitter has also become a popular <a href="https://scholar.google.com/scholar?q=%27twitter+data%22">object of study</a> for humanities and social science researchers looking to understand the world as reflected, refracted and distorted by/in social media.</p><p>On the surface the v2 API update seems pretty insignificant since the shape of a tweet, its parts, properties and affordances, aren’t changing at all. Tweets with 280 characters of text, images and video will continue to be posted, retweeted and quoted. However behind the scenes the <em>representation</em> of a tweet <em>as data</em>, and the <em>quotas</em> that control the rates at which this data can flow between apps and other third party services will be greatly transformed.</p><p>Needless to say, v2 represents a <em>big</em> change for the Documenting the Now project. Along with community members we’ve developed and maintained open source tools like <a href="https://github.com/docnow/twarc"><strong>twarc</strong></a> that talk directly to the Twitter API to help users to search for and collect live tweets that match criteria like hashtags, names and geographic locations. Today we’re excited to announce the release of twarc v2 which has been <a href="https://github.com/DocNow/twarc/wiki/twarc2-Design">designed</a> from the ground up to work with the v2 API and Twitter’s new <a href="https://blog.twitter.com/developer/en_us/topics/tools/2021/enabling-the-future-of-academic-research-with-the-twitter-api.html">Academic Research track</a>.</p><p>Clearly it’s extremely problematic having a multi-national corporation act as a gatekeeper for <em>who</em> counts as an academic researcher, and <em>what</em> constitutes academic research. We need look no further than the recent experiences of <a href="https://www.nytimes.com/2020/12/03/technology/google-researcher-timnit-gebru.html?searchResultPosition=4">Timnit Gebru</a> and <a href="https://www.nytimes.com/2021/02/19/technology/google-ethical-artificial-intelligence-team.html?searchResultPosition=2">Margaret Mitchell</a> at Google for an example of what happens when <a href="https://dl.acm.org/doi/abs/10.1145/3442188.3445922">research questions</a> run up against the business objectives of capital. We only know their stories because Gebru and Mitchell’s bravely took a principled approach, where many researchers would have <a href="https://en.wikipedia.org/wiki/Chilling_effect">knowingly or unknowingly</a> shaped their research to better fit the needs of the company.</p><p>So it is important for us that twarc still be usable by people with and without access to the Academic Research Track. But we have heard from many users that the Academic Research Track presents new opportunities for Twitter data collection that are essential for researchers interested in the <a href="https://policyreview.info/articles/analysis/towards-platform-observability">observability</a> of social media platforms. Twitter is making a good faith effort to work with the academic research community, and we thought twarc should support it, even if big challenges lie ahead.</p><p>So why are people interested in the Academic Research Track? Once your application has been approved you are able to collect data from the <em>full history</em> of Tweets, at no cost. This is a massive improvement over the v1.1 access which was limited to a one week window and researchers had to pay for access. Access to the full archive means it’s now possible to study events that have happened in the past back to the beginning of Twitter in 2006. If you do create any historical datasets we’d love for you to share the tweet identifier datasets in <a href="https://catalog.docnow.io/">The Catalog</a>.</p><p>However this opening up of access on the one hand comes with a simultaneous contraction in terms of how much data can be collected at one time. The remainder of this post describes some of the details and the design decisions we have made with twarc2 to address them. If you would prefer to watch a quick introduction to using twarc v2 please check out this short video:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Ft1kT719vxlQ%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dt1kT719vxlQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Ft1kT719vxlQ%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/0deef3f702b4e908a2d43b970a5ba520/href">https://medium.com/media/0deef3f702b4e908a2d43b970a5ba520/href</a></iframe><h3>Installation</h3><p>If you are familiar with installing twarc nothing is changed. You still install (or upgrade) with pip as you did before:</p><pre>$ pip install --upgrade twarc</pre><p>In fact you will still have full access to the v1.1 API just as you did before. So the old commands will continue to work as they did¹</p><pre>$ twarc search blacklivesmatter &gt; tweets.jsonl</pre><p>twarc2 was designed to let you to continue to use Twitter’s v1.1 API undisturbed until it is finally turned off by Twitter, at which point the functionality will be removed from twarc. All the support for the v2 API is mediated by a new command line utility twarc2. For example to search for <em>blacklivesmatter</em> tweets and write them to a file <em>tweets.jsonl *</em></p><pre>$ twarc2 search blacklivesmatter &gt; tweets.jsonl</pre><p>All the usual twarc functionality such as searching for tweets, collecting live tweets from the streaming API endpoint, requesting user timelines and user metadata are all still there, twarc2 --help gives you the details. But while the interface looks the same there&#39;s quite a bit different going on behind the scenes.</p><h3>Representation</h3><p>Truth be told, there is no shortage of open source libraries and tools for interacting with the Twitter API. In the past twarc has made a bit of a name for itself by catering to a niche group of users who want a reliable, programmable way to collect the <em>canonical</em> JSON representation of a tweet. JavaScript Object Notation (JSON) is the language of Web APIs, and Twitter has kept its JSON representation of a tweet relatively stable over the years. Rather than making lots of decisions about the many ways you might want to collect, model and analyze tweets twarc has tried to <a href="https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well">do one thing and do it well</a> (data collection) and get out of the way so that you can use (or create) the tools for putting this data to use.</p><p>But the JSON representation of a tweet in the Twitter v2 API is completely burst apart. The v2 base representation of a tweet is extremely lean and minimal, and just includes the text of the tweet its identifier and a handful of other things. All the details about the user who created the tweet, embedded media, and more are not included. Fortunately this information is still available, but the user needs to craft their API request to request tweets using a set of <a href="https://developer.twitter.com/en/docs/twitter-api/expansions">expansions</a> that tell the Twitter API what additional entities to include. In addition for each expansion there are a set of <a href="https://developer.twitter.com/en/docs/twitter-api/fields">field options </a>to include that control what of these expansions is returned.</p><p>So rather than there being a single JSON representation of a tweet API users now have the ability to shape the data based on what they need, much like how GraphQL APIs work. This kind of makes you wonder why Twitter didn’t make <a href="https://blog.twitter.com/engineering/en_us/topics/infrastructure/2020/rebuild_twitter_public_api_2020.html#unified">their GraphQL API</a> available. For specific use cases this customizability is very useful, but the mutability of the representation of a tweet presents challenges when collecting data for future use. If you didn’t request the right expansions or fields when collecting the data then you won’t be able to analyze that data later when doing your research.</p><p>To solve for this twarc2 has been designed to collect the richest possible representation for a tweet, by requesting <em>all</em> possible expansions and field combinations for tweets. See the <a href="https://github.com/DocNow/twarc/blob/main/twarc/expansions.py">expansions module</a> for the details if you are interested. This takes a significant burden off of users to digest the API documentation, and craft the correct API requests themselves. In addition the twarc community will be monitoring the Twitter API documentation going forward to incorporate new expansions and fields as they will inevitably be added in the future.</p><h3>Flattening</h3><p>This is diving into the weeds a little bit, but it’s worth noting here that Twitter’s introduction of <em>expansions</em> allows data that was once duplicated across multiple tweets (such as user information, media, retweets, etc) to be included once per response from the API. This means that instead of seeing information about the user who created a tweet in the context of their tweet the user will be referenced using an identifier, and this identifier will map to user metadata in the outer envelope of the response.</p><p>It makes sense why Twitter have introduced expansions since it means in a set of 100 tweets from a given user the user information will just be included once rather than repeated 100 times, which means less data, less network traffic and less money. It’s even more significant when consider the large number of possible expansions. However this <a href="https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference">pass by-reference rather than by-value</a> presents some challenges for stream based processing which expects each tweet to be self-contained.</p><p>For this reason we’ve introduce the idea of <em>flattening</em> the response data when persisting the JSON to disk. This means that tools and data pipelines that expect to operate on a stream of tweets can continue to do so. Since the representation of a tweet is so dependent on how data is requested we’ve taken the opportunity to introduce a small stanza of twarc specific metadata using the __twarc prefix.</p><p>This metadata records what API endpoint the data was requested from, and when. This information is critically important when interpreting the data, because some information about a tweet like its retweet and quote counts are constantly changing.</p><h3>Data Flows</h3><p>As mentioned above you can still collect tweets from the search and streaming API endpoints in a way that seems quite similar to the v1 API. The big changes however are the quotas associated with these endpoints which govern how much can be collected. These quotas control how many requests can be sent to Twitter in 15 minute intervals.</p><p>In fact these quotas are not much changed, but what’s new are <em>app wide</em> quotas that constrain how many tweets a given application (app) can collect every month. An app in this context is a piece of software (e.g. your twarc software) identified by unique API keys set up in the <a href="https://developer.twitter.com/en/portal/dashboard">Twitter Developer Portal</a>. The standard API access sets a 500,000 tweet per month limit. This is a huge change considering there were no monthly app limits before. If you get approved for the Academic Research track your app quota is increased to 10 million per month. This is markedly better but the achievable data volume is still nothing like the v1.1 API, as these graphs attempt to illustrate:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*m92DxiB6ZMyc8h_Aox5mVg.png" /><figcaption>Monthly Data Collection for Apps from Search</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ninFlU7H4Y3uIDa_iiBsbg.png" /><figcaption>Monthly Data Collection for Apps from the Stream</figcaption></figure><p>twarc2 will still observe the same rate limits, but once you’ve collected your portion for the month there’s not much that can be done, for that app at least.</p><p>Apart from the quotas Twitter’s streaming endpoint in v2 is substantially changed which impacts how users interact with twarc. Previously twarc users would be able to create up to to two connections to the filter stream API. This could be done by simply:</p><pre>twarc filter obama &gt; obama.jsonl</pre><p>However in the Twitter v2 API only apps can connect to the filter stream, and they can only connect once. At first this seems like a major limitation but rather than creating a connection per query the v2 API allows you to build a set of rules for tweets to match, which in turns controls what tweets are included in the stream. This means you can collect for multiple types of queries at the same time, and the tweets will come back with a piece of metadata indicating what rule caused its inclusion.</p><p>This translates into a markedly different set of interactions at the command line for collecting from the stream where you first need to set your stream rules and then open a connection to fetch it.</p><pre>twarc2 stream-rules add blacklivesmatter<br>twarc2 stream &gt; tweets.jsonl</pre><p>One useful side effect of this is that you can update the stream (add and remove rules) while the stream is in motion:</p><pre>twarc2 stream-rules add blm</pre><p>While you are limited by the API quota in terms of how many tweets you can collect, tweets are not “dropped on the floor” when the volume gets too high. Once upon a time the v1.1 filter stream was rumored to be rate limited when your stream exceeds 1% of the total volume of new tweets.</p><h3>Plugins</h3><p>In addition to twarc helping you collect tweets the GitHub repository has also been a place to collect a <a href="https://github.com/DocNow/twarc/tree/main/utils">set of utilities</a> for working with the data. For example there are scripts for <a href="https://github.com/DocNow/twarc/blob/main/utils/urls.py">extracting</a> and <a href="https://github.com/DocNow/twarc/blob/main/utils/unshrtn.py">unshortening</a> urls, <a href="https://github.com/DocNow/twarc/blob/main/utils/deletes.py">identifying suspended/deleted content</a>, <a href="https://github.com/DocNow/twarc/blob/main/utils/youtubedl.py">extracting videos</a>, <a href="https://github.com/DocNow/twarc/blob/main/utils/wordcloud.py">buiding wordclouds</a>, <a href="https://github.com/DocNow/twarc/blob/main/utils/geo.py">putting tweets on maps</a>, displaying <a href="https://github.com/DocNow/twarc/blob/main/utils/network.py">network graph visualizations</a>, <a href="https://github.com/DocNow/twarc/blob/main/utils/tags.py">counting hashtags</a>, and more. These utilities all work like <a href="https://en.wikipedia.org/wiki/Filter_(software)">Unix filters</a> where the input is a stream of tweets and the output varies depending on what the utility is doing, e.g. a Gephi file for a network visualization, or a folder of mp4 files for video extraction.</p><p>While this has worked well in general the <em>kitchen sink</em> approach has been difficult to manage from a configuration management perspective. Users have to download these scripts manually from GitHub or by cloning the repository. For some users this is fine, but it’s a bit of a barrier to entry for users who have just installed twarc with pip.</p><p>Furthermore these plugins often have their own dependencies which twarc itself does not. This lets twarc can stay pretty lean, and things like youtube_dl, NetworkX or Pandas can be installed by people that want to use utilities that need them. But since there is no way to install the utilities there isn’t a way to ensure that the dependencies are installed, which can lead to users needing to diagnose missing libraries themselves.</p><p>Finally the plugins have typically lacked their own tests. twarc’s test suite has really helped us track changes to the Twitter API and to make sure that it continues to operate properly as new functionality has been added. But nothing like this has existed for the utilities. We’ve noticed that over time some of them need updating. Also their command line arguments have drifted over time which can lead to some inconsistencies in how they are used.</p><p>So with twarc2 we’ve introduced the idea of plugins which extend the functionality of the twarc2 command, are distributed on <a href="https://python.org/pypi/">PyPI</a> separately from twarc, and exist in their own GitHub repositories where they can be developed and tested independently of twarc itself. This is all achieved through twarc2’s use of the <a href="https://click.palletsprojects.com/">click</a> library and specifically <a href="https://pypi.org/project/click-plugins/">click-plugins</a>. So now if you would like to convert your collected tweets to CSV you can install the <a href="https://pypi.org/project/twarc-csv/">twarc-csv</a>:</p><pre>$ pip install twarc-csv<br>$ twarc2 search covid19 &gt; covid19.jsonl<br>$ twarc2 csv covid19.jsonl &gt; covid19.csv</pre><p>Or if you want to extract embedded and referenced videos from tweets you can install <a href="https://pypi.org/project/twarc-videos/">twarc-videos</a> which will write all the videos to a directory:</p><pre>$ pip install twarc-videos<br>$ twarc2 videos covid19.jsonl --download-dir covid19-videos</pre><p>You can write these plugins yourself and release them as needed. Check out the plugin reference implementation <a href="https://github.com/docnow/twarc-ids/">tweet-ids</a> for a simple example to adapt. We’re still in the process of porting some of the most useful utilities over and would love to see ideas for new plugins. Check out the <a href="https://twarc-project.readthedocs.io/en/latest/plugins/">current list of twarc2 plugins</a> and use the <a href="https://github.com/docnow/twarc/issues">twarc issue tracker</a> on GitHub to join the discussion.</p><p>You may notice from the list of plugins that twarc now (finally) has <a href="https://twarc-project.readthedocs.io/en/latest/">documentation on ReadTheDocs</a> external from the documentation that was previously only available on GitHub. We got by with GitHub’s rendering of Markdown documents for a while, but GitHub’s boilerplate designed for developers can prove to be quite confusing for users who aren’t used to selectively ignoring it. ReadTheDocs allows us to manage the command line and API documentation for twarc, and to showcase the work that has gone into the Spanish, Japanese, Portuguese, Swedish, Swahili and Chinese translations.</p><h3>Feedback</h3><p>Thanks for reading this far! We hope you will give twarc2 a try. Let us know what you think either in comments here, in the <a href="https://bit.ly/docnow-slack">DocNow Slack</a> or over on <a href="https://github.com/docnow/twarc/issues">GitHub</a>.</p><p>✨ ✨ Happy twarcing! ✨ ✨ ✨</p><ol><li><em>Windows users will want to indicate the output file using a second argument rather than redirecting output with </em><strong><em>&gt;</em></strong><em>. See </em><a href="https://twarc-project.readthedocs.io/en/latest/windows10/#escaping-characters-in-windows"><em>this page</em></a><em> for details.</em></li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=779278e66ea0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/twarc2-779278e66ea0">twarc2</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Trump’s Tweets]]></title>
            <link>https://medium.com/documenting-docnow/trumps-tweets-2d3f348ccd24?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/2d3f348ccd24</guid>
            <category><![CDATA[politics]]></category>
            <category><![CDATA[social-media]]></category>
            <category><![CDATA[archive]]></category>
            <dc:creator><![CDATA[Ed Summers]]></dc:creator>
            <pubDate>Thu, 21 Jan 2021 22:27:26 GMT</pubDate>
            <atom:updated>2021-02-05T20:10:48.949Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JT1fCu3dQ8vd4EQwgRL-GQ.png" /><figcaption>Coverage of Trump’s Twitter Account at the Internet Archive</figcaption></figure><p><em>Trump’s tweets are gone from twitter.com but still exist spectrally in various states all over the web. After profiting off of their distribution Twitter now has a responsibility to provide meaningful access to the Trump tweets as a read only archive.</em></p><p>So Trump’s Twitter account is gone. <em>Finally</em>. It’s strange to have had to wait until the waning days of his presidency to achieve this very small and simple act of holding him accountable to Twitter’s community guidelines…just like any other user of the platform.</p><p>Better late than never, especially since his misinformation and lies can continue to spread after he has left office.</p><p>But isn’t it painful to imagine what the last four years (or more) could have looked like if Twitter and the media at large had recognized their responsibility and acted sooner?</p><p>When Twitter suspended Trump’s account they didn’t simply freeze it and prevent him from sending more hateful messages. They flipped a switch that made all the tweets he has ever sent disappear from the web.</p><p>These are tweets that had real material consequences in the world. As despicable as Trump’s utterances have been, a complete and authentic record of them having existed is important for the history books, and for holding him to account.</p><h3></h3><p>Twitter&#39;s suspension of Donald Trump&#39;s account has also removed all of his thousands of tweets sent over the years. I personally find it useful as a reporter to be able to search through his tweets. They are an important part of the historical record. Where do they live now?</p><p>Where indeed? One hopes that they will end up in the National Archives (more on that in a moment). But depending on how you look at it, Trump’s tweets are <em>everywhere</em>.</p><p>Twitter removed Trump’s tweets from public view at <em>twitter.com</em>. But fortunately, as <a href="https://ws-dl.blogspot.com/2021/01/2021-01-09-embedded-tweets-from.html">Shawn Jones notes</a>, embedded tweets like the one above persist the tweet text into the HTML document itself. When a tweet is deleted from twitter.com the text stays behind elsewhere on the web like a residue, as evidence (that can be faked) of what was said and when.</p><p>It’s difficult to say whether this graceful degradation was an intentional design decision to make their content more resilient, or it was simply a function of Twitter wanting their content to begin rendering before their JavaScript had loaded and had a chance to emboss the page. But design intent isn’t really what matters here.</p><p>What does matter is the way this form of social media content degrades in the web commons. Kari Kraus <a href="https://www.jstor.org/stable/10.5749/j.ctvg251hk.17">calls this process</a> “spectral wear”, where digital media “help mitigate privacy and surveillance concerns through figurative rather than quantitative displays, reflect and document patterns of use, and promote an ethics of care.” This spectral wear is a direct result of tweet embed practices that Twitter itself promulgates while simultaneously forbidding it <a href="https://developer.twitter.com/en/developer-terms/agreement-and-policy">Developer Terms of Service</a>:</p><blockquote><em>If Twitter Content is deleted, gains protected status, or is otherwise suspended, withheld, modified, or removed from the Twitter Applications (including removal of location information), you will make all reasonable efforts to delete or modify such Twitter Content (as applicable) as soon as possible.</em></blockquote><p>Fortunately for history there has probably never been a more heavily <em>copied</em> social media content than Donald Trump’s tweets. We aren’t immediately dependent on <em>twitter.com</em> to make this content available because of the other other places on the web where it exists. What does this copying activity look like?</p><p>I intentionally used <em>copied</em> instead of <em>archived</em> above because the various representations of Trump’s tweets vary in terms of their coverage, and how they are being cared for.</p><p>Given their complicity in bringing Trump’s messages of division and hatred to a worldwide audience, while profiting off of them, Twitter now have a responsibility to provide as best a representation of this record for the public, and for history.</p><p>We know that the Trump administration have been collecting the @realDonaldTrump Twitter account, and <a href="https://www.archives.gov/foia/pra-trump-admin">plan</a> to make it available on the web as part of their responsibilities under the Presidential Records Act:</p><blockquote><em>The National Archives will receive, preserve, and provide public access to all official Trump Administration social media content, including deleted posts from @realDonaldTrump and @POTUS. The White House has been using an archiving tool that captures and preserves all content, in accordance with the Presidential Records Act and in consultation with National Archives officials. These records will be turned over to the National Archives beginning on January 20, 2021, and the President’s accounts will then be made available online at NARA’s newly established trumplibrary.gov website.</em></blockquote><p>NARA is the logical place for these records to go. But it is unclear what shape these archival records will take. Sure the Library of Congress has (or had) its Twitter archive. It’s not at all clear if they are still adding to it. But even if they are LC probably hasn’t felt obligated to collect the records of an official from the Executive Branch, since they are firmly lodged in the Legislative. Then again they collect<a href="https://www.loc.gov/item/lcwaN0010391/"> animated GIFs</a> so, maybe?</p><p>Reading between the lines it appears that a third party service is being used to collect the social media content: possibly one of the several e-discovery tools like <a href="https://archivesocial.com/">ArchiveSocial</a> or <a href="https://www.hanzo.co/">Hanzo</a>. It also looks like the Trump Administration themselves have entered into this contract, and at the end of its term (i.e. now) will extract their data and deliver it to NARA. Given their past behavior it’s not difficult to imagine the Trump administration not living up to this agreement in substantial ways.</p><p>This current process is a slight departure from the approach taken by the Obama administration. Obama initiated a process where platforms [migrate official accounts] to new accounts that were then managed going forward by NARA (Acker &amp; Kriesberg, <a href="https://inkdroid.org/2021/01/21/trumps-tweets/#ref-Acker:2017a">2017</a>).</p><p>We can see that this practice <a href="https://www.trumplibrary.gov/research/archived-social-media">being used again</a> on January 20, 2021 when Biden became President. But what is different is that Barack Obama retained ownership of his personal account <a href="https://twitter.com/barackobama">@barackobama</a>, which he continues to use. Arguably this is good because Trump used his Twitter account in a very different manner than Obama. This process is complicated further by the fact that Trump’s account has been removed from the web. Nevertheless, NARA has <a href="https://www.trumplibrary.gov/research/archived-social-media">announced</a> that they <em>will</em> be archiving Trump’s now deleted (or hidden) personal account.</p><blockquote><em>A number of Trump administration officials, including President Trump, used personal accounts when conducting government business. The National Archives will make the social media content from those designated accounts publicly available as soon as possible.</em></blockquote><p>The question remains, what representation should be used, and what is Twitter’s role in providing it?</p><p>Meanwhile there are online collections like <a href="https://www.thetrumparchive.com/">The Trump Twitter Archive</a>, the New York Times’ <a href="https://www.nytimes.com/interactive/2021/01/19/upshot/trump-complete-insult-list.html?referringSource=articleShare">Complete List of Trump’s Twitter Insults</a>, Propublica’s <a href="https://projects.propublica.org/politwoops/">Politwoops</a> and countless GitHub repositories of data which have collected Trump’s tweets. These tweets are used in a multitude of ways including things as absurd as a source for <a href="https://github.com/maxbbraun/trump2cash">conducting trades on the stock market</a>.</p><p>But seeing these tweets as they appeared in the browser, with associated metrics and comments is important. Of course you can go view the account in the <a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/">Wayback Machine</a> and browse around. But what if we wanted a list of all the Trump tweets? How many times were these tweets actually archived? How complete is the list?</p><p>After some <a href="https://archive.org/details/trump-tweets-wayback">experiments</a> with the Internet Archive’s <a href="https://github.com/webrecorder/pywb/wiki/CDX-Server-API">API</a> it’s possible to get a picture of how the tweets from the @realDonaldTrump account have been archived there. There are a few wrinkles because a given tweet can have many different URL forms (e.g. tracking parameters in the URL query string). In addition just because there was a request to archive a URL for something that looks like a realDonaldTrump tweet URL doesn’t mean it resulted in a successful response. Success here means a 200 OK from twitter.com when resolving the URL. Factoring these issues into the analysis it appears the Wayback Machine contains (at least) 16,043,553 snapshots of Trump’s tweets:</p><pre>https://twittter.com/realDonaldTrump/status/{tweet-id}</pre><p>Of these millions of snapshots there appear to be 57,292 unique tweets. This roughly correlates with the 59K total tweets suggested by the last profile snapshots of the account. The maximum number of times in one day that his tweets were archived was 71,837 times on February 10, 2020. Here’s what the archive snapshots of Trump’s tweets look like over time (snapshots per week).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xjgB_5irHM8Ys63x4vi1pw.png" /></figure><p>It is relatively easy to use the CSV export from the <a href="https://www.thetrumparchive.com/">Trump Twitter Archive</a> project to see what tweets they know about that the Internet Archive does not and vice-versa (for the details see the Jupyter notebook and SQLite database <a href="https://archive.org/details/trump-tweets-wayback">here</a>).</p><p>It looks like there are 526 tweet IDs in the Trump Twitter Archive that are missing from the Internet Archive. But further examination shows that many of these are retweets, which in Twitter’s web interface, have sometimes redirected back to the original tweet (a 302 Found instead of a 200 OK). After removing these retweets to specifically look at Trump’s own tweets there are only 7 tweets in the Trump Twitter Archive that are missing from the Internet Archive. Of these 4 are in fact retweets that have been misclassified as tweets by the Trump Twitter Archive.</p><p>One of the three remaining is this one, which is identified in the <a href="https://www.thetrumparchive.com/">Trump Twitter Archive </a>as deleted, and wasn’t collected <a href="http://web.archive.org/web/20201115164630/https://twitter.com/realDonaldTrump/status/1281926278845812736">quick enough</a> by the Internet Archive before it was deleted:</p><blockquote><em>Roger Stone was targeted by an illegal Witch Hunt tha never should have taken place. It is the other side that are criminals, including the fact that Biden and Obama illegally spied on my campaign — AND GOT CAUGHT!”</em></blockquote><p>Sure enough, over at the Politwoops project <a href="https://projects.propublica.org/politwoops/tweet/1281926278845812736">you can see</a> that this tweet was deleted 47 seconds after it was sent:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Ee8xW0bTcHtdhJlq.png" /><figcaption><a href="https://projects.propublica.org/politwoops/tweet/1281926278845812736">Deleted tweet</a> from Politwoops</figcaption></figure><p>Turning the table it’s also possible to look at what tweets are in the Internet Archive but not in the Trump Twitter Archive. It turns out that there are 3,592 tweet identifiers in the Wayback machine for Trump’s tweets which do not appear in the Trump Twitter Archive. Looking a bit closer we can see that some are clearly wrong, because the id itself is too small a number, or too large. And then looking at some of the snapshots it appears that they often don’t resolve, and simply display a “Something went wrong” message:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*sklYCzg0vD7sxr5R.png" /></figure><p>Yes, something <em>definitely</em> went wrong (in more ways than one). Just spot checking a few there also appear to be some legit tweets in the Wayback that are not in the Trump Twitter Archive like this one:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*sUhmo-4VUuFsh6Ld.png" /></figure><p>Notice how the media will not play? These tweets appear to be in the Internet Archive, but it’s not at all certain what their state is. It would take some heavy manual curation work to sort through these tweet IDs to see which ones are legit, and which ones aren’t. But if you are interested here’s an <a href="https://docs.google.com/spreadsheets/d/1UlSV5hkiXzprwPnM1SKJGhlTjrmMpro-c2rN6SkhIqc/edit?usp=sharing">editable Google Sheet</a> of the tweets in Wayback that don’t appear in The Trump Archive. The situation gets even more complicated because there appear to be <a href="https://docs.google.com/spreadsheets/d/1NrLArVhnwZIBgkpnmrP7Ml7UwCXnn6_md9W4-wYEcz8/edit#gid=2137136146">67 deleted realDonaldTrump tweets</a> in Politwoops that are not in the Internet Archive.</p><p>Finally, here is a list of the top ten archived (at Internet Archive) tweets. The counts here reflect <em>all</em> the variations for a given tweet URL. So they will very likely not match the count you see in the Wayback Machine, which is for the specific URL (no query paramters).</p><ul><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/704834185471598592">Thank you Alabama! #Trump2016#SuperTuesday</a> 65,489</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/704756216157839360">MAKE AMERICA GREAT AGAIN!</a> 65,360</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/704818842153971712">Thank you Georgia!#SuperTuesday #Trump2016</a> 65,358</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/796315640307060738">Such a beautiful and important evening! The forgotten man and woman will never be forgotten again. We will all come together as never before</a> 55,426</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/796182637622816768">Watching the returns at 9:45pm. #ElectionNight #MAGA🇺🇸 https://t.co/HfuJeRZbod</a> 54,889</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/796055597594578944">#ElectionDay https://t.co/MXrAxYnTjY https://t.co/FZhOncih21</a> 54,291</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/796099494442057728">I will be watching the election results from Trump Tower in Manhattan with my family and friends. Very exciting!</a> 54,263</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/795733366842806272">I love you North Carolina- thank you for your amazing support! Get out and https://t.co/HfihPERFgZ tomorrow!Watch:… https://t.co/jZzfqUZNYh</a> 54,252</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/796126077647196160">Still time to #VoteTrump! #iVoted #ElectionNight https://t.co/UZtYAY1Ba6</a> 54,224</li><li><a href="https://web.archive.org/web/*/https://twitter.com/realDonaldTrump/status/794259252613414915">Watching my beautiful wife, Melania, speak about our love of country and family. We will make you all very proud…. https://t.co/DiKmSnTlC2</a> 54100</li></ul><p>The point of this rambling data spelunking, if you’ve made it this far, is to highlight the degree to which Trump’s tweets have been archived (or collected), and how the completeness and quality of those representations is very fluid and difficult to ascertain. Hopefully Twitter is working with NARA to provide as complete a picture as possible of what Trump said on Twitter.</p><p>As much as we would like to forget, we must not.</p><h3>References</h3><p>Acker, A., &amp; Kriesberg, A. (2017). Tweets may be archived: Civic engagement, digital preservation and obama white house social media data. <em>Proceedings of the Association for Information Science and Technology</em>, <em>54</em>(1), 1–9.</p><p>Kraus, K. (2019). The care of enchanted things. In M. K. Gold &amp; L. F. Klein (Eds.), <em>Debates in the digital humanities 2019</em>. Retrieved from <a href="https://www.jstor.org/stable/10.5749/j.ctvg251hk.17">https://www.jstor.org/stable/10.5749/j.ctvg251hk.17</a></p><p>Thanks to <a href="https://twitter.com/jessogden">Jess Ogden</a>, <a href="https://twitter.com/walkeroh">Shawn Walker</a><a href="https://twitter.com/adamkriesberg">, Adam Kriesberg</a> and <a href="https://twitter.comm/derekwillis">Derek Willis</a> who read versions of this post and provided feedback/ideas. All the mistakes are my own.</p><p><em>Originally published at </em><a href="https://inkdroid.org/2021/01/21/trumps-tweets/"><em>https://inkdroid.org</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2d3f348ccd24" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/trumps-tweets-2d3f348ccd24">Trump’s Tweets</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Disinformation Metadata]]></title>
            <link>https://medium.com/documenting-docnow/disinformation-metadata-25b123bdd993?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/25b123bdd993</guid>
            <category><![CDATA[disinformation]]></category>
            <category><![CDATA[politics]]></category>
            <category><![CDATA[social-media]]></category>
            <category><![CDATA[archive]]></category>
            <dc:creator><![CDATA[Ed Summers]]></dc:creator>
            <pubDate>Wed, 02 Sep 2020 22:41:37 GMT</pubDate>
            <atom:updated>2020-09-02T22:41:37.730Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/786/1*aAxflj7YkNSt5tk2DsNiSQ.png" /><figcaption><a href="https://openmoji.org/library/#search=label&amp;emoji=1F3F7">Label</a> by <a href="https://openmoji.org/">OpenMoji</a></figcaption></figure><p><a href="https://twitter.com/IlyaKreymer">Ilya Kreymer</a> recently asked a question over in <a href="https://bit.ly/docnow-slack">Documenting the Now Slack</a> about Twitter’s API data and whether it includes metadata for when the tweet has been labeled as <em>disinformation</em>. This structured data is important for building tools that help trace how disinformation is propagating in Twitter and social media more generally. It also can provide a view into how Twitter themselves are working to combat the problem.</p><p>I’ve looked for the disinformation label in Twitter API JSON in the past and not seen it. But I figured it couldn’t hurt to look again so, I used <a href="https://twitter.com/realDonaldTrump/status/1297495295266357248">this tweet</a> as an example. It’s a snap to fetch the JSON data for a tweet with <a href="https://github.com/docnow/twarc">twarc</a>:</p><pre>$ twarc tweet 1297495295266357248 &gt; tweet.json</pre><p>I’ve included the retrieved data below. I don’t see anything related to the label, do you?</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/19f916a9d0b701732d26aa97a6200cac/href">https://medium.com/media/19f916a9d0b701732d26aa97a6200cac/href</a></iframe><p>I also took the opportunity to look at Twitter’s new <a href="https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets">v2 API</a> and see if the twet looks any different there. Twarc doesn’t support the v2 API yet so I hand rolled a little program to talk to the v2 Twitter API:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6ca432a8f905661cb558247469463450/href">https://medium.com/media/6ca432a8f905661cb558247469463450/href</a></iframe><p>More about the options in a moment. This program fetched this representation of the same tweet:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/db78cc9b7e53664f879d5011d43c75a3/href">https://medium.com/media/db78cc9b7e53664f879d5011d43c75a3/href</a></iframe><p>Again, I still don’t see any information about the content warning, but maybe I wasn’t squinting right? I did see that according to the data that Donald Trump is in the class of <em>Person</em> who are “Named people in the world like Nelson Mandela”. I mean yes, but NO.</p><p>So about the options. Unlike the v1.1 API when using the <a href="https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets">v2 API</a> you need to indicate in the request what <em>fields</em> you would like to have returned in the response. There are a set of names for the types of fields, such as media.fields, tweet.fields, place.fields, poll.fields and user.fields. Each of these field types has an enumerated set of associated values like duration_minutes for a poll, or context_annotations for a tweet, etc. Think of this as some kind of strange alternative to GraphQL.</p><p>There are lots of these enumerated values to choose from so I started by simply requesting <em>all </em>of them. Interestingly this failed, and the error message I received indicated that I had requested field values that required elevated privileges. Once I removed these from the request I was able to get back the JSON I pasted above.</p><p>The little error message actually provided a small glimpse of what data Twitter does and doesn’t provide to “regular” developer accounts through the v2 API. For example I had to remove non_public_metrics from media_fields and tweet_fields because the following fields required additional permissions:</p><ul><li>non_public_metrics.impression_count</li><li>non_public_metrics.url_link_clicks</li><li>non_public_metrics.user_profile_clicks</li></ul><p>I guess that makes sense since they are non-public. Similarly I had to remove organic_metrics from media.fields and tweet.fields because the following fields required additional permissions:</p><ul><li>organic_metrics.impression_count</li><li>organic_metrics.like_count</li><li>organic_metrics.reply_count</li><li>organic_metrics.retweet_count</li><li>organic_metrics.url_link_clicks</li><li>organic_metrics.user_profile_clicks</li></ul><p>And finally I had to remove promoted_metrics from media.fields and tweet.fields because the following fields required additional permissions:</p><ul><li>promoted_metrics.impression_count</li><li>promoted_metrics.like_count</li><li>promoted_metrics.reply_count</li><li>promoted_metrics.retweet_count</li><li>promoted_metrics.url_link_clicks</li><li>promoted_metrics.user_profile_clicks</li></ul><p>I guess these are metrics for advertisers who are paying to have their tweets slipped into our timelines. Many of these seem to be present in the <a href="https://developer.twitter.com/en/docs/twitter-api/v1/metrics/get-tweet-engagement/overview">v1.1 Metrics API</a> but it’s interesting that the new API is folding that functionality in to the representation of tweets. I did notice that the public_metrics counts were all zero. As much as I might wish this to be true for this particular tweet I know it’s probably just a bug that Twitter are working on.</p><p>I think this highlights one of the major disadvantages to collecting the JSON representation of a tweet. Some information is passed by reference, such as URLs for images and videos. Those need to be fetched in order to understand a tweet.</p><p>But some information is simply not included, such as this disinformation label, which must exist somewhere in Twitter’s infrastructure. The same is true for reply threads to a tweet — although this might get easier with the v2 API’s support for threads. And lastly the JSON representation <em>changes</em>. It has been remarkably stable for the past 10 years or so, with small things added here and there (e.g. 280 characters instead of 140). v2 marks a significant change. Where stream based processing of tweets will require substantial changes to keep working.</p><p>Returning to the topic of disinformation, for the moment it might be useful to add support toa scraping tool like <a href="https://github.com/twintproject/twint">twint</a> to see if these disinformation labels could be pulled out of the page and serialized into the JSON and CSV it generates. Scraping is against Twitter’s terms of service, but this information is so important for public discourse the research and archival communities are left with <a href="https://www.tandfonline.com/doi/abs/10.1080/10584609.2018.1477506">little other</a> <a href="https://www.eff.org/deeplinks/2018/04/dc-court-accessing-public-information-not-computer-crime">choice.</a></p><p><em>Originally published at </em><a href="https://inkdroid.org/2020/09/02/disinformation-metadata/"><em>https://inkdroid.org</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=25b123bdd993" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/disinformation-metadata-25b123bdd993">Disinformation Metadata</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Instagram, Social Action and Archives]]></title>
            <link>https://medium.com/documenting-docnow/instagram-social-action-and-archives-e1a39d3fe0ef?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/e1a39d3fe0ef</guid>
            <category><![CDATA[archive]]></category>
            <category><![CDATA[activism]]></category>
            <category><![CDATA[instagram]]></category>
            <category><![CDATA[social-media]]></category>
            <dc:creator><![CDATA[Ed Summers]]></dc:creator>
            <pubDate>Fri, 07 Aug 2020 10:21:22 GMT</pubDate>
            <atom:updated>2020-08-07T16:44:25.773Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/300/1*X8IoHloe_kL7FIQ7mwBcrA.png" /></figure><p><a href="http://dianneweinthal.com/">Dianne Weinthal</a> is a recent graduate of the <a href="https://is.gseis.ucla.edu/">UCLA MLIS </a>program, and has been working with a few members of her cohort <a href="https://docs.google.com/document/d/1L2WoH4-5u2Ryf78AJabO486cURE5cWyZdbTIpKqSIvM/edit?pli=1">on criteria</a> to evaluate, circulate, and create social media in service of <em>safe social action</em><strong>.</strong></p><p>Their first platform focus has been on <a href="https://instagram.com/">Instagram</a>. We thought this could be a good opportunity for us in the Documenting the Now community to gather in an informal call to talk about the thinking that went into the work they have done so far. This is especially important as so much of the Documenting the Now’s work to date has focused on Twitter. While we expect some issues to remain constant across social media archiving platforms, others will differ since the affordances and algorithmic effects of these platforms are varied.</p><p>Their draft document they have been working on can be found at:</p><p><a href="https://docs.google.com/document/d/1L2WoH4-5u2Ryf78AJabO486cURE5cWyZdbTIpKqSIvM/edit?usp=sharing">https://docs.google.com/document/d/1L2WoH4-5u2Ryf78AJabO486cURE5cWyZdbTIpKqSIvM/edit?usp=sharing</a></p><p>We will be meeting on August 11 at 9–10AM PT. If you would like to participate please email <a href="http://info@docnow.io/?subject=Instagram">info@docnow.io </a>with the subject “Instagram” and we will email you the Zoom link to join.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e1a39d3fe0ef" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/instagram-social-action-and-archives-e1a39d3fe0ef">Instagram, Social Action and Archives</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Archiving Protests, Protecting Activists]]></title>
            <link>https://medium.com/documenting-docnow/archiving-protests-protecting-activists-e628b49eab47?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/e628b49eab47</guid>
            <category><![CDATA[breonna-taylor]]></category>
            <category><![CDATA[george-floyd]]></category>
            <category><![CDATA[blacklivesmatter]]></category>
            <category><![CDATA[defundthepolice]]></category>
            <category><![CDATA[police-brutality]]></category>
            <dc:creator><![CDATA[Bergis Jules]]></dc:creator>
            <pubDate>Wed, 17 Jun 2020 16:44:36 GMT</pubDate>
            <atom:updated>2020-06-20T20:29:38.799Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZS6m2AGONmBRjwlQxQpjhw.jpeg" /></figure><p>On Friday, June 19th, <a href="https://www.docnow.io/">Documenting the Now</a> hosted a live streamed conversation with <a href="https://www.witness.org/">WITNESS</a>, <a href="https://www.theblackivists.com/">The Blackivists</a>, <a href="https://texasafterviolence.org/">Texas After Violence Project</a>, and <a href="https://standarchives.com/">Project STAND</a>. We are so thankful to the 800+ attendees and to our amazing panelists: <a href="https://twitter.com/thetracydrake">Tracy Drake</a>, <a href="https://twitter.com/raqi_afc">Raquel Flores-Clemons</a>, <a href="https://twitter.com/erinsco">Erin Glasco</a>, <a href="https://twitter.com/Wribrarian">Stacie Williams</a>, <a href="https://twitter.com/ActiveArchiving">Skyla Hearn</a>, <a href="https://twitter.com/misterBooth">Steven Booth</a>, <a href="https://twitter.com/gabe_solis">Gabriel Solis</a>, <a href="https://twitter.com/ng_yvonne">Yvonne Ng</a>, <a href="https://twitter.com/blkgrlarchivist">Lae’l Hughes-Watkins</a>, and <a href="https://twitter.com/diva_archivist">Jessica Ballard</a>. Also much thanks to the Documenting the Now team members who helped put the event together: <a href="https://twitter.com/fromADMwithlove">Alexandra Dolan-Mescal</a> (who also designed the social media graphic), <a href="https://twitter.com/kayiwa">Francis Kayiwa</a>, and <a href="https://twitter.com/edsu">Ed Summers</a>.</p><p>Below is a recording of the conversation or you can hop on over to <a href="https://www.youtube.com/watch?v=03xciLNQTx0"><strong>YouTube</strong></a>.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F03xciLNQTx0%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D03xciLNQTx0&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F03xciLNQTx0%2Fhqdefault.jpg&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/5013d8754558dbb85bd57ecf2b5a2a86/href">https://medium.com/media/5013d8754558dbb85bd57ecf2b5a2a86/href</a></iframe><p><strong>This is the original event description:</strong></p><p>The recent wave of protests sparked by the death of George Floyd, Breonna Taylor, and so many others, have been inspiring and have renewed calls to dismantle the racist systems that inflict so much harm on Black people and other marginalized people. While the protests seemed to have ignited a shift in public opinion towards finally doing what is right, the violent reaction from law enforcement to the protesters has been disturbing and yet an unsurprising aspect of the recent events. As archivists, activists, and other memory workers attempt to document these protests, it is vital to consider how protestors can be protected from further harm by police while they are taking part in actions or when information about them is found in archives at a later date. In this conversation, <a href="https://www.docnow.io/">Documenting the Now</a>, <a href="https://www.witness.org/">WITNESS</a>, <a href="https://texasafterviolence.org/">Texas After Violence Project</a>, <a href="https://www.theblackivists.com/">Blackivists</a>, and <a href="https://standarchives.com/">Project STAND</a> will discuss actions that protestors and memory workers can take and resources they can use to safely and ethically document the extreme police violence we are seeing towards protestors.</p><p><strong>These are some of the resources that were share by our panelists during the conversation:</strong></p><p><strong>Documenting the Now</strong></p><ul><li>DocNow Digital Blackness Symposium: Panel- <a href="https://youtu.be/ykgvgW21iP4">The Ferguson Effect on Local Activism and Community Memory</a></li><li><a href="https://www.docnow.io/docs/docnow-whitepaper-2018.pdf">Documenting the Now White Paper on Ethics and Social Media Archiving</a></li><li><a href="https://www.docnow.io/archivists-supporting-activists/index.html">Archivists Supporting Activists</a></li><li><a href="https://docs.google.com/forms/d/e/1FAIpQLSf3E7PAXPoT-XoedpEy9UCTpDPS8kPj5JkMwpaWbuqVP0bTrQ/viewform">Join DocNow Slack</a></li><li><a href="https://news.docnow.io/documenting-activism-now-17db7b956fcf">Documenting Activism Now</a></li></ul><p><strong>The Blackivists</strong></p><ul><li><a href="https://sixtyinchesfromcenter.org/the-blackivists-five-tips-for-organizers-protestors-and-anyone-documenting-movements/">Five Tips for Organizers, Protestors, and Anyone Documenting Movements</a></li><li><a href="https://www.chicagoreader.com/chicago/blackivists-archivists/Content?oid=80694245">The Blackivists on Documenting Movements</a></li></ul><p><strong>Texas After Violence Project</strong></p><ul><li><a href="https://vimeo.com/430171730">Documenting Narratives of Violence: Mitigating Risks</a></li><li><a href="https://vimeo.com/430151906">Documenting Narratives of Violence: Trauma-Informed Interviewing</a></li></ul><p><strong>WITNESS</strong></p><ul><li><a href="https://lab.witness.org/projects/police-violence-in-the-united-states/">Filming Police Violence in the United States resources</a></li><li><a href="https://lab.witness.org/berkeley-copwatch-database/">People’s Database for Community-Based Police Accountability: A Berkeley Copwatch / WITNESS Initiative</a></li><li><a href="https://elgrito.witness.org/">Profiling the Police (El Grito de Sunset Park &amp; WITNESS)</a></li><li><a href="https://lab.witness.org/how-to-film-the-police-in-the-u-s/">How To Film Police (US)</a></li><li><a href="https://library.witness.org/product/i-shot-a-video-of-police-brutality-during-a-protest-should-i-post-it-online/">I Shot A Video Of Police Brutality During A Protest. Should I Post It Online?</a></li><li><a href="https://lab.witness.org/projects/eyes-on-ice/">Eyes on ICE: Documenting Abuses Against Immigrant Communities resources</a></li><li><a href="https://library.witness.org/product/verify-ice-raids/">Real Or Rumor: How To Verify Online Reports Of ICE Raids</a></li><li><a href="https://lab.witness.org/projects/legal-video-advocacy/">Legal Video Advocacy resources</a></li><li><a href="https://portugues.witness.org/portfolio_page/plano-de-coleta-operacoes-policiais-e-militares-em-favelas-ou-areas-perifericas/">Plano De Coleta — Operações Policiais E Militares Em Favelas Ou Áreas Periféricas</a> (Portuguese)</li><li><a href="https://archiving.witness.org/archive-guide/">Activists’ Guide to Archiving Video</a></li><li><a href="https://vae.witness.org/video-as-evidence-field-guide/">Video as Evidence Field Guide</a></li></ul><p><strong>Project STAND</strong></p><ul><li><a href="https://standarchives.com/project-stand-toolkit/">Archiving Student Activism Toolkit</a></li><li><a href="https://standarchives.com/s-a-v-e-methodology/">S.A.V.E Method</a></li><li><a href="https://standarchives.com/solidarity-statements-from-colleges-and-universities/">College and University Responses/Reaction</a></li><li><a href="https://prezi.com/view/3TZ2Iq15kKjXMQbGuRDV/">Presentation-Prezi Link</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e628b49eab47" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/archiving-protests-protecting-activists-e628b49eab47">Archiving Protests, Protecting Activists</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introducing The Catalog v2]]></title>
            <link>https://medium.com/documenting-docnow/introducing-the-catalog-v2-80557eeb8421?source=rss----fbfcadb24046---4</link>
            <guid isPermaLink="false">https://medium.com/p/80557eeb8421</guid>
            <category><![CDATA[archive]]></category>
            <category><![CDATA[digital-preservation]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[twitter]]></category>
            <category><![CDATA[social-media]]></category>
            <dc:creator><![CDATA[Ed Summers]]></dc:creator>
            <pubDate>Thu, 16 Apr 2020 15:18:23 GMT</pubDate>
            <atom:updated>2020-04-16T15:20:11.914Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*96011aKHUrAXqkcH7ejpHg.png" /></figure><p>If you’ve been <a href="https://news.docnow.io/the-catalog-and-the-hydrator-3299eddfe21e">following</a> our work for the past few years you may have occasionally seen us mention something called the <a href="https://catalog.docnow.io/">Catalog</a>. The Catalog is a clearinghouse for Twitter datasets, that has been built by a small but growing community of researchers, archivists and librarians who recognize that social media platforms like Twitter provide essential documentary evidence of our times.</p><p>For a variety of reasons Twitter’s Terms of Service don’t allow data collected from their APIs to be published on the public web. But they do allow, and even encourage, researchers to share Tweet Identifier (ID) datasets, which can then be reconstituted (or <em>hydrated) </em>as data using Twitter’s API. We’ve developed a desktop application called the <a href="https://github.com/docnow/hydrator#readme">Hydrator</a>, which makes it easy to perform this process of turning a dataset of tweet IDs (which is essentially just a list of numbers), back into tweet JSON, and then even transform it into CSV for research and analysis.</p><p>Data archiving is important for one’s memory work and reproducibility of research, but we think its important to further the agency of content creators who are using social media to document their lives. Consent to have ones content be archived is a <a href="https://news.docnow.io/designing-for-consent-2f9e9cb2ab4f">difficult</a> thing to ascertain when collecting “public” tweets from thousands (or millions) of users. However, when a user decides to delete a tweet, or take their account private, we think it’s important to honor that decision. It’s far from perfect (<a href="https://projects.propublica.org/politwoops/">some deleted tweets need to be remembered</a>), but sharing tweet ID datasets is one way of simultaneously pursuing the goals of data publishing for research, and ethical archiving. <em>P.S. Look for more approaches for navigating consent later this year.</em></p><p>So, the Catalog is simply a descriptive list of these tweet ID datasets, with pointers to the repositories around the web where the data resides. After a few years of modest but steady submissions the Catalog now contains 113 datasets that, taken together, comprise 2.5 billion tweets. While this is a large number the Documenting the Now community aims for quality over quantity. Each dataset has been assembled by a librarian, archivist or researcher for a specific purpose. When it comes to social media and the web it’s just not possible to preserve everything, so our decisions about what to preserve and why become that much more important.</p><p>Today we are releasing a new version of the Catalog to support the increased number of datasets it contains, and also to make it a bit easier to explore and submit them. The first version of the Catalog was a very simple static website built using the <a href="https://jekyllrb.com/">Jekyll </a>publishing framework. At the time we wanted the Catalog to be a static site to make it <a href="http://go-dh.github.io/mincomp/thoughts/2015/05/21/user-vs-learner/">easier to maintain and sustain</a> over time. Once deployed static sites have many less moving parts than a typical web application. But as the number of datasets grew, and more and more people wanted to submit them, we knew we had to make some changes.</p><p>Version 2 of the Catalog is still a static site, but it uses the <a href="https://www.gatsbyjs.org/">Gatsby</a> framework which allows the website to function more like an web application, while still operating as a simple static site on the server side. This means we still have the sustainability wins of running a static site, while allowing users to filter and sort the datasets, and also then visit a distinct page for each dataset.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aj1wK5pAssQ6nszpXkTZSw.png" /><figcaption>Filtering by Subject in the Catalog</figcaption></figure><p>Furthermore, the <a href="https://www.netlifycms.org/">netlify-cms</a> JavaScript library allows the Catalog to offer administrative forms for easily adding and editing datasets, which then seamlessly commits the change back to the <a href="https://github.com/docnow/catalog">docnow/catalog</a> GitHub repository. This means we still have a static site that is easy to maintain over time, where all the content lives in a versioned Git repository. But we are no longer asking users to hand edit data files and submit pull requests in order to share information about their datasets.</p><p>Having a form now provides an opportunity to learn more from contributors about their engagement with ethical aspects of the data collecting work. This work has been informed specifically by <a href="https://twitter.com/fromadmwithlove">Alexandra Dolan-Mescal’</a>s<a href="https://www.docnow.io/social-humans/"> Social Humans</a> project, who also designed the new Catalog. The new add dataset form has this additional set of questions:</p><ul><li>Did you publicly share (on Twitter) that you were collecting this content?</li><li>Do content creators have the option to opt out of your collecting or remove their content after collection has taken place?</li><li>Do you have an easy-to-find way for content creators to reach out to you or your organization about your collecting project?</li><li>Have you analyzed the tweet dataset for potential threats to those whose content has been collected?</li><li>Is this tweet dataset part of a larger collecting effort of topical materials, including oral histories, web archiving, or physical materials?</li></ul><p>And finally, for the data nerds out there, one nice side effect of using Gatsby and netlify-cms is that each dataset in the Catalog is now stored as a distinct <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> document. Markdown lets you to compose rich textual documents, with lists, links, images and other formatting, while also expressing structured metadata. The netlify-cms JavaScript library makes it easy for users to edit these documents without them even knowing it. For example, here is <a href="https://github.com/DocNow/catalog/blob/master/src/datasets/20200322-coronavirus-tweets.md">the Markdown file</a> for a dataset contributed by Laura Wrubel and Dan Kerchner from George Washington University:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UbKgmjG6iYEbbHwL2SarIQ.png" /><figcaption><a href="https://github.com/DocNow/catalog/blob/master/src/datasets/20200322-coronavirus-tweets.md">A tweet ID dataset represented as Markdown</a></figcaption></figure><p>George Washington University is currently still in the process of updating this dataset, as the Coronavirus pandemic continues to spread around the world. The new Catalog allows them and others to easily edit the description as they release more data.</p><p>We hope that you will get a chance to give the new Catalog a try, either for publishing a new dataset, or finding a new dataset to work with. If you get a chance to use it, have ideas, or notice problems please don’t hesitate to send us an email at <a href="/service/mailto:info@docnow.io">info@docnow.io</a>, or to add issues to the <a href="https://github.com/docnow/catalog/issues">issue tracker</a> at GitHub. We’ve got some more things planned for integrating the Catalog better with the Hydrator, and the <a href="https://github.com/docnow/docnow">DocNow</a> application, so look for those later this year.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=80557eeb8421" width="1" height="1" alt=""><hr><p><a href="https://medium.com/documenting-docnow/introducing-the-catalog-v2-80557eeb8421">Introducing The Catalog v2</a> was originally published in <a href="https://medium.com/documenting-docnow">Documenting DocNow</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>