some hypotheses about CMC and different movement organisations
Organisation type
Importance of CMC
Effects?
Orgs. focusing on professional resources
high
CMC supports professionalised groups that sometimes require large mobilisation (e.g., Greenpeace), helping to 'get the word out'
Orgs. mobilising participatory resources
moderate/low
CMC reinforces already existing ties; these orgs. remain reliant on direct, face-to-face interactions to recruit, build collective identity, and maintain commitment
Orgs. mobilising participatory resources
moderate/low
"Sustained collective action is unlikely to originate from purely virtual ties if they are not sustained by previous interaction"
Transnational networks
moderate
CMC helps link (especially former) activists and militants (individuals and groups) to promote shared values, but little consequential effect for organising
Can CMC create new types of communities (if so, what kinds)? Can they create collective identity and enable durable/sustained activism?
can that happen with online anonymity?
most examples of personal interaction in electronic discussion groups actually miss some of the requirements usually associated with the idea of community. Participants in those lists often hide their personal identity, participate occasionally, are not tied in any sort of committed relationship and are mostly involved in dyadic or at most triadic interactions
import { liveGoogleSheet } from"@jimjamslam/live-google-sheet";import { aq, op } from"@uwdata/arquero";// UPDATE THE LINK FOR A NEW POLLsurveyResults =liveGoogleSheet("https://docs.google.com/spreadsheets/d/e/"+"2PACX-1vR7--DC-gLwhLrMYBIvigczwsp5vMxC5A93sY7PDai0NdSIBFSvjTOjKUZxxtLpl9KWTxiyxKPAGtUD/"+"pub?gid=2023133127&single=true&output=csv",10000,1,9);// adjust the last number to select all relevant columns respondentCount = surveyResults.length;
online organising more democratic?
more_democraticCounts = aq.from(surveyResults).select("more_democratic").groupby("more_democratic").count().derive({ measure: d =>"" })// Calculate the maximum count from your datasetmore_democratic_maxCountRE =Math.max(...more_democraticCounts.objects().map(d => d.count));plot_more_democratic = Plot.plot({marks: [ Plot.barY(more_democraticCounts, {x:"more_democratic",y:"count",fill:"more_democratic",stroke:"black",strokeWidth:1 }), Plot.ruleY([respondentCount], { stroke:"#ffffff99" }) ],color: {domain: ["Strongly disagree","Disagree","Neutral","Agree","Strongly agree" ],range: ["red","pink","lightgrey","lightgreen","forestgreen" ] },marginBottom:180,x: { label:"",tickSize:2,tickRotate:-45,domain: ["Strongly disagree","Disagree","Neutral","Agree","Strongly agree"] },y: {label:"",tickSize:10,tickFormat: d => d,tickValues:Array.from(newSet(more_democraticCounts.objects().map(d => d.count)) ).sort((a, b) => a - b),domain: [0, more_democratic_maxCountRE] },facet: { data: more_democraticCounts,x:"measure",label:"" },marginLeft:140,style: {width:1350,height:500,fontSize:30, }});
online movement activity more individualised?
individualisedCounts = aq.from(surveyResults).select("individualised").groupby("individualised").count().derive({ measure: d =>"" })// Calculate the maximum count from your datasetindividualised_maxCountRE =Math.max(...individualisedCounts.objects().map(d => d.count));plot_individualised = Plot.plot({marks: [ Plot.barY(individualisedCounts, {x:"individualised",y:"count",fill:"individualised",stroke:"black",strokeWidth:1 }), Plot.ruleY([respondentCount], { stroke:"#ffffff99" }) ],color: {domain: ["Strongly disagree","Disagree","Neutral","Agree","Strongly agree" ],range: ["red","pink","lightgrey","lightgreen","forestgreen" ] },marginBottom:180,x: { label:"",tickSize:2,tickRotate:-45,domain: ["Strongly disagree","Disagree","Neutral","Agree","Strongly agree"] },y: {label:"",tickSize:10,tickFormat: d => d,tickValues:Array.from(newSet(individualisedCounts.objects().map(d => d.count)) ).sort((a, b) => a - b),domain: [0, individualised_maxCountRE] },facet: { data: individualisedCounts,x:"measure",label:"" },marginLeft:140,style: {width:1350,height:500,fontSize:30, }});
Poll results
platforms amplify movements of the marginalised?
amplifyCounts = aq.from(surveyResults).select("amplify").groupby("amplify").count().derive({ measure: d =>"" })// Calculate the maximum count from your datasetamplify_maxCountRE =Math.max(...amplifyCounts.objects().map(d => d.count));plot_amplify = Plot.plot({marks: [ Plot.barY(amplifyCounts, {x:"amplify",y:"count",fill:"amplify",stroke:"black",strokeWidth:1 }), Plot.ruleY([respondentCount], { stroke:"#ffffff99" }) ],color: {domain: ["Yes","No","Maybe" ],range: ["forestgreen","darkred","goldenrod" ] },marginBottom:80,x: { label:"",tickSize:2,tickRotate:-1,padding:0.2,domain: ["Yes","No","Maybe"] },y: {label:"",tickSize:10,tickFormat: d => d,tickValues:Array.from(newSet(amplifyCounts.objects().map(d => d.count)) ).sort((a, b) => a - b),domain: [0, amplify_maxCountRE] },facet: { data: amplifyCounts,x:"measure",label:"" },marginLeft:60,style: {width:1600,height:500,fontSize:40, },});
platforms not so useful since algorithms favour sensationalism?
algorithmsCounts = aq.from(surveyResults).select("algorithms").groupby("algorithms").count().derive({ measure: d =>"" })// Calculate the maximum count from your datasetalgorithms_maxCountRE =Math.max(...algorithmsCounts.objects().map(d => d.count));plot_algorithms = Plot.plot({marks: [ Plot.barY(algorithmsCounts, {x:"algorithms",y:"count",fill:"algorithms",stroke:"black",strokeWidth:1 }), Plot.ruleY([respondentCount], { stroke:"#ffffff99" }) ],color: {domain: ["Strongly disagree","Disagree","Neutral","Agree","Strongly agree" ],range: ["red","pink","lightgrey","lightgreen","forestgreen" ] },marginBottom:180,x: { label:"",tickSize:2,tickRotate:-45,domain: ["Strongly disagree","Disagree","Neutral","Agree","Strongly agree"] },y: {label:"",tickSize:10,tickFormat: d => d,tickValues:Array.from(newSet(algorithmsCounts.objects().map(d => d.count)) ).sort((a, b) => a - b),domain: [0, algorithms_maxCountRE] },facet: { data: algorithmsCounts,x:"measure",label:"" },marginLeft:140,style: {width:1350,height:500,fontSize:30, }});
Poll results
online movement activity often encourages a “slacktivism”
slacktivismCounts = aq.from(surveyResults).select("slacktivism").groupby("slacktivism").count().derive({ measure: d =>"" })// Calculate the maximum count from your datasetslacktivism_maxCountRE =Math.max(...slacktivismCounts.objects().map(d => d.count));plot_slacktivism = Plot.plot({marks: [ Plot.barY(slacktivismCounts, {x:"slacktivism",y:"count",fill:"slacktivism",stroke:"black",strokeWidth:1 }), Plot.ruleY([respondentCount], { stroke:"#ffffff99" }) ],color: {domain: ["Strongly disagree","Disagree","Neutral","Agree","Strongly agree" ],range: ["red","pink","lightgrey","lightgreen","forestgreen" ] },marginBottom:180,x: { label:"",tickSize:2,tickRotate:-45,domain: ["Strongly disagree","Disagree","Neutral","Agree","Strongly agree"] },y: {label:"",tickSize:10,tickFormat: d => d,tickValues:Array.from(newSet(slacktivismCounts.objects().map(d => d.count)) ).sort((a, b) => a - b),domain: [0, slacktivism_maxCountRE] },facet: { data: slacktivismCounts,x:"measure",label:"" },marginLeft:140,style: {width:1350,height:500,fontSize:30, }});
Poll results
should online platforms be more regulated to prevent movements (and other actors) from spreading misinformation?
regulationCounts = aq.from(surveyResults).select("regulation").groupby("regulation").count().derive({ measure: d =>"" })// Calculate the maximum count from your datasetregulation_maxCountRE =Math.max(...regulationCounts.objects().map(d => d.count));plot_regulation = Plot.plot({marks: [ Plot.barY(regulationCounts, {x:"regulation",y:"count",fill:"regulation",stroke:"black",strokeWidth:1 }), Plot.ruleY([respondentCount], { stroke:"#ffffff99" }) ],color: {domain: ["Yes","No","Maybe" ],range: ["forestgreen","darkred","goldenrod" ] },marginBottom:80,x: { label:"",tickSize:2,tickRotate:-1,padding:0.2,domain: ["Yes","No","Maybe"] },y: {label:"",tickSize:10,tickFormat: d => d,tickValues:Array.from(newSet(regulationCounts.objects().map(d => d.count)) ).sort((a, b) => a - b),domain: [0, regulation_maxCountRE] },facet: { data: regulationCounts,x:"measure",label:"" },marginLeft:60,style: {width:1600,height:500,fontSize:40, },});
movements online face greater censorship and surveillance?
challengesCounts = aq.from(surveyResults).select("challenges").groupby("challenges").count().derive({ measure: d =>"" })// Calculate the maximum count from your datasetchallenges_maxCountRE =Math.max(...challengesCounts.objects().map(d => d.count));plot_challenges = Plot.plot({marks: [ Plot.barY(challengesCounts, {x:"challenges",y:"count",fill:"challenges",stroke:"black",strokeWidth:1 }), Plot.ruleY([respondentCount], { stroke:"#ffffff99" }) ],color: {domain: ["Yes","No","Maybe" ],range: ["forestgreen","darkred","goldenrod" ] },marginBottom:80,x: { label:"",tickSize:2,tickRotate:-1,padding:0.2,domain: ["Yes","No","Maybe"] },y: {label:"",tickSize:10,tickFormat: d => d,tickValues:Array.from(newSet(challengesCounts.objects().map(d => d.count)) ).sort((a, b) => a - b),domain: [0, challenges_maxCountRE] },facet: { data: challengesCounts,x:"measure",label:"" },marginLeft:60,style: {width:1600,height:500,fontSize:40, },});
the overall democratizing impact of CMC may be severely hampered by two types of resource constraints: while its contribution to networking among citizens’ organizations is undeniable, its contribution to the operations of social control agencies, the military, governments and corporations is – at least quantitatively – much greater; and access to CMC is at least for the time being heavily correlated to class and status
explores how political actors in Germany performed control during the first wave of the COVID-19 pandemic, comparing the performances of control by two institutional actors and one counter-institutional grassroots actor
data generated through qualitative-interpretive methodology (familiar with this?)
online ethnography
comparative analysis
observation of in-person an “anti-lockdown” demonstration and virtual protest
A very brief introduction to interpretive research
Interpretivism - philosophical perspective that reality and knowledge are socially constructed
cf. (post-)positivist perspectives: there is an ‘objective reality’ that can be measured and tested
Galileo Galilei: ‘Count what is countable, measure what is measurable and what is not measurable, make measurable.’
has epistemological consequences: i.e., if reality is socially constructed, in what ways can we obtain knowledge about it?
ANSWER: techniques to identify and assess the meanings that people attach to events, actions, etc.
interpretivist findings dependent on researcher’s interpretation
problematic (according to some): difficulty of replicability, easy for ‘bias’ to slant interpretation, difficult to generalise
Zuckerberg intended to “dramatically reduce the amount of censorship” (framing contest: ‘censorship’ vs. ‘content moderation’)
Zuckerberg to “work with President Trump to push back on governments around the world that are going after American companies and pushing to censor more”. He cited Europe as a place with “an ever-increasing number of laws institutionalising censorship and making it difficult to build anything innovative”
Reconnecting online activism to (offline) impact
Zeynep Tufekci (UNC Chapel Hill): How online social movements translate to offline results
Two recent findings from research on online movement activity
influencers on social media can have a massive impact on elections and other political events (e.g., Rezo anti-CDU video in 2019: Klüver (2024))
deplatforming from mainstream social media platforms has a major impact on movement actors and activists (e.g., Rauchfleisch and Kaiser 2024)
Klüver, Heike. 2024. “Social Influencers and Election Outcomes.”Comparative Political Studies, December, 00104140241306955. https://doi.org/10.1177/00104140241306955.
Rauchfleisch, Adrian, and Jonas Kaiser. 2024. “The Impact of Deplatforming the Far Right: An Analysis of YouTube and BitChute.”Information, Communication & Society, May, 1–19. https://doi.org/10.1080/1369118X.2024.2346524.
Volk, Sabine. 2021. “Political Performances of Control During COVID-19: Controlling and Contesting Democracy in Germany.”Frontiers in Political Science 3 (June): 1–16. https://doi.org/10.3389/fpos.2021.654069.