Social movement coalitions
| Date | Presenters | Method |
|---|---|---|
| 4 Dec: | Daichi, Seongyeon, Jehyun | ethnography |
| 18 Dec: | Ayla, Tara, Theresa, Annabelle | TBD |
| 15 Jan: | Luna, Emilene, Raffa, Sofia | TBD |
Take the survey at https://forms.gle/qmXcNdhWNN3eNNPC8
import { liveGoogleSheet } from "@jimjamslam/live-google-sheet";
import { aq, op } from "@uwdata/arquero";
// UPDATE THE LINK FOR A NEW POLL
surveyResults = liveGoogleSheet(
"https://docs.google.com/spreadsheets/d/e/" +
"2PACX-1vSRrm-ab4dEZFOsXW186NEQVq8lVRTNif4EMM89t5v1p025myMQQUhw1XqyyKfi75ar-_WLv2zIQz7M/" +
"pub?gid=1902471768&single=true&output=csv",
10000, 1, 6); // adjust the last number to select all relevant columns
respondentCount = surveyResults.length;Are coalitions helpful to achieve goals?
helpfulCounts = aq.from(surveyResults)
.select("helpful")
.groupby("helpful")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
helpful_maxCountRE = Math.max(...helpfulCounts.objects().map(d => d.count));
plot_helpful = Plot.plot({
marks: [
Plot.barY(helpfulCounts, {
x: "helpful",
y: "count",
fill: "helpful",
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(
new Set(helpfulCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, helpful_maxCountRE]
},
facet: { data: helpfulCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});What are the advantages and disadvantages for movements of forming a coalition/collaborating with other actors?
short-term, limited coalitions more likely to achieve goals?
temporaryCounts = aq.from(surveyResults)
.select("temporary")
.groupby("temporary")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
temporary_maxCountRE = Math.max(...temporaryCounts.objects().map(d => d.count));
plot_temporary = Plot.plot({
marks: [
Plot.barY(temporaryCounts, {
x: "temporary",
y: "count",
fill: "temporary",
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(
new Set(temporaryCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, temporary_maxCountRE]
},
facet: { data: temporaryCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});most important benefit for a movement in forming a coalition?
benefitCounts = aq.from(surveyResults)
.select("benefit")
.groupby("benefit")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
benefit_maxCountRE = Math.max(...benefitCounts.objects().map(d => d.count));
plot_benefit = Plot.plot({
marks: [
Plot.barY(benefitCounts, {
x: "benefit",
y: "count",
fill: "benefit",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"more resources",
"broader inclusion",
"more media attention",
"more political influence",
"other"
],
range: [
"goldenrod",
"cadetblue",
"darkorange",
"forestgreen",
"violet"
]
},
marginBottom: 400,
x: { label: "", tickSize: 2, tickRotate: -40, padding: 0.2,
domain: ["more resources", "broader inclusion", "more media attention", "more political influence", "other"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(benefitCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, benefit_maxCountRE]
},
facet: { data: benefitCounts, x: "measure", label: "" },
marginLeft: 60,
style: {
width: 1600,
height: 500,
fontSize: 40,
},
});What factors enable/hinder coalition formation?
factor most important in facilitating coalition formation?
facilitatingCounts = aq.from(surveyResults)
.select("facilitating")
.groupby("facilitating")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
facilitating_maxCountRE = Math.max(...facilitatingCounts.objects().map(d => d.count));
plot_facilitating = Plot.plot({
marks: [
Plot.barY(facilitatingCounts, {
x: "facilitating",
y: "count",
fill: "facilitating",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"social ties",
"organisational structures",
"compatible ideologies",
"shared threats/opportunities",
"other"
],
range: [
"red",
"goldenrod",
"green",
"orange",
"gray"
]
},
marginBottom: 400,
x: { label: "", tickSize: 2, tickRotate: -40, padding: 0.2,
domain: ["social ties", "organisational structures", "compatible ideologies", "shared threats/opportunities", "other"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(facilitatingCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, facilitating_maxCountRE]
},
facet: { data: facilitatingCounts, x: "measure", label: "" },
marginLeft: 60,
style: {
width: 1600,
height: 500,
fontSize: 40,
},
});identity-based movements struggle more to form coalitions?
identityCounts = aq.from(surveyResults)
.select("identity")
.groupby("identity")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
identity_maxCountRE = Math.max(...identityCounts.objects().map(d => d.count));
plot_identity = Plot.plot({
marks: [
Plot.barY(identityCounts, {
x: "identity",
y: "count",
fill: "identity",
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(
new Set(identityCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, identity_maxCountRE]
},
facet: { data: identityCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});Coalitions…
Some coalitions may be enduring; others may be event coalitions
Some coalitions may be enduring; others may be event coalitions
Peace protest, Berlin, 2022-02-27
Van Dyke and Amos (2017) identify five factors critical to coalition formation:
others accommodate, e.g., Raging Grannies: a rowdy aging women’s group in Canada that tempered its strategies to facilitate collaboration with indigenous environmental allies, creating space for indigenous activists at their gatherings, adopting mainstream dress, lending resources to Indigenous protests, and initiating action to ameliorate colonial abuses (Chazan 2016)
For Fair Elections (Russia, 2011-2012) - strange bedfellows
settings within a community or movement that are removed from the direct control of dominant groups, are voluntarily participated in, and generate the cultural challenge that precedes or accompanies political mobilization” (Polletta, 1999: 1).
| Grouping | Factors | |
|---|---|---|
| Intra-org | exclusive vs. multiple affiliations | any bridging social ties? |
| broad organisational goals | e.g., bridging frames | |
| strong organisation | division (and availability) of labour, professional leaders, (at least some) hierarchy | |
| Inter-org | commonalities | available resources, overlapping collective identities |
| ideological compatibility | factions vs. willingness to accommodate | |
| Opportunity structure | opportunities | free space |
| threats | ||
| institutional arrangements |
What’s the coalition potential of movement cases you know of? Have they formed enduring and/or event coalitions?
radical flank effects - dynamics between (relatively) moderate and (relatively) radical parts of a movement and their target(s)
Pay attention to the mechanisms that Prof. Chenoweth specifies in her brief explanation
Pay attention to the mechanisms that Prof. Chenoweth specifies in her brief explanation
How have German political parties responded to anti-Corona street protests?
What do you recall from the height of the pandemic? How did parties (in Germany and elsewhere) respond to mobilisation?
A. Heinze (2018) on party reactions to radical parties (somewhat compelled to react):
Disengage
Engage
A. S. Heinze and Weisskircher (2022) on party responses to movements (not necessarily compelled to react):
| Level | Action | Description |
|---|---|---|
| Formal level | legal restrictions | most exclusionary possibility: e.g., bans, forced dissolution, event restrictions |
| counterprotest | parties can mobilise counterdemonstrations against pariah protest | |
| tolerate | neutral acceptance of the right to protest, even for those that are regarded as pariahs; passive option | |
| cooperate | act cooperatively with protest group; mobilise support base | |
| Substantive level | ignore | disregard, refuse to comment on protest |
| demonise | portray the actor as extreme, dangerous, irrational, or beyond the pale | |
| defuse | downplay protest issue importance, shift public attention to other issue(s) | |
| debate | acknowledges the importance of an issue put forward by the protestors, with parties discussing different policy positions | |
| adopt | adopting positions from protest arena becomes attractive if party considers the issue particularly relevant for competition, hoping to gain electoral advantage |
Formal level - response to Querdenken
| Party | Legal Restrictions | Counterprotest | Tolerate | Cooperate |
|---|---|---|---|---|
| CDU | Yes | No | Yes | No |
| SPD | Yes | Yes | Yes | No |
| Greens | Yes | Yes | Yes | No |
| Left | Yes | Yes | Yes | No |
| FDP | Yes | No | Yes | No |
| AfD | No | No | Yes | Yes |
Substantive level - response to Querdenken
| Party | Ignore | Demonise | Defuse | Debate | Adopt |
|---|---|---|---|---|---|
| CDU | No | Yes | No | Yes | No |
| SPD | No | Yes | No | Yes | No |
| Greens | No | Yes | No | Yes | No |
| Left | No | Yes | No | Yes | No |
| FDP | No | Yes | No | Yes | No |
| AfD | No | Yes | No | Yes | Yes |
what about movement responses/approaches to parties?
(is it as relevant? does it matter? movements are not as empowered as parties)
is the epitome of social movement ‘success’ becoming a party?
Anonymous feedback here: https://forms.gle/AjHt6fcnwZxkSg4X8
Alternatively, please send me an email: m.zeller@lmu.de
Allchorn, William. 2020. “Political Responses to Anti-Islamic Protest: Responses, Rationales and Role Evaluations.” British Politics 15: 393–410.
Chazan, M. (2016). Settler solidarities as praxis: Understanding ‘granny activism’ beyond the highly‐visible. Social Movement Studies, 15(5), 457–470.