Come chat with us at email@example.com 🎉
byon June 21, 2021
Last Thursday we launched our new chat platform chat.sfconservancy.org! Conservancy's main chat room, which used to be on Freenode, is now available at the following locations:
- The primary room, on XMPP at firstname.lastname@example.org (also via the web)
- A bridged IRC room, at #conservancy on irc.libera.chat
- The bridged room that Matrix provides, at #xmpp_general_chat.sfconservancy.org:matrix.org
We've taken the opportunity of leaving Freenode to change technologies to something we think reflects our ideals. XMPP is a decentralized, open standard and widely used chat platform that supports many of the common features we've come to expect in the new era of chat. Given that we've been using IRC, almost anything would be a strict upgrade when it comes to features. We also wanted to make it as easy as possible for newcomers to start chatting.
We evaluated and tested a multitude of options: XMPP, Matrix, RocketChat, Mattermost, Zulip, ircv3, etc and permutations of bridging support. Given the near parity of features that we care about (we even support reactions now 👍), some reasons we chose XMPP over the others are the longevity and fundamental independence of the XMPP protocol, that we found the matrix-bifrost bridge to work better with Matrix users coming in to XMPP than XMPP users joining Matrix channels (but hope in the future to see this support get better!) and staff familiarity with XMPP. There is also a really healthy and growing ecosystem of XMPP clients and you'll find some recommendations below.
Note: similarly to IRC, your connection to the XMPP server is encrypted, but due to the nature of chat rooms, we cannot provide E2E encryption of the channel itself. Nevertheless here are a list of clients that support OMEMO (which is the standard for E2E encryption for XMPP).
Clients 💻 📱
- Web: Movim, jsxc (for use with NextCloud)
- Linux: Dino IM, Gajim
- OS X: Beagle
- Windows: Miranda
- Android: Conversations
- iOS: Monal
- Linux: Snikket
And here are some other tools which I think are interesting:
- Biboumi allows you to connect to IRC channels from your XMPP client. We are using this instance.
- matrix-bifrost allows you to bridge from Matrix to XMPP. It's a bit hard to run yourself but Matrix runs one for you!
- matterbridge is what we're using to bridge from XMPP to IRC. It has a plethora of options and is a great tool if you want to bridge yourself into walled garden platforms but use your own FOSS client.
We're excited about the possibilities of what XMPP will bring our community. Specifically helping our projects use more free software where possible. Communication is one area that we particularly think is important to remain free and in our (collective) hands. The proliferation of chat software over the years is a well noted problem, and this is one area that free software both outperforms proprietary options and promotes interoperating standards and giving back the freedom of users to use the software that works for them.
So which ever client and connection you choose, we're excited to hear from you 💻🌉💻
I'm Pono Your New Community Organizer
byHi there, my name is Daniel Pono Takamori and I'm the new Community Organizer and Nonprofit Problem Solver here at Conservancy! My background is in running free software as infrastructure so you might've filed a ticket with me somewhere in the past :) I'm looking forward to this new non-technical role as community support. Being able to bring my skills to help further software freedom here at Conservancy is a very exciting new chapter to me. With projects ranging from programming languages to make programming languages, to community building and mentorship programs, the breadth and spread of projects is incredible. Conservancy projects really help keep you grounded in the varied relationships all people have with software. I'm so grateful for the opportunity to learn from people with different backgrounds, approaches and lived experiences. on May 18, 2021
I recently gave a keynote at SeaGL 2020 and found the experience of being able to share my non-technical thoughts about technical subjects very invigorating. Speaking more to the human experience of computing technology and the effects computers can have on us. It's with this lens that I hope to bring a more nuanced and compassionate view to the world of software freedom. It's easy to get lost in the billion dollar industries that rely on our labor, but at the end of the day we are people working together with people.
Going forward in this new remote friendlier world, I'm hopeful for more accessible communication. Both with remote friendly conferences, more free software being used to communicate and a more universal understanding that we are people first. While my day to day will probably be lots of email and meetings, I'm excited to find ways to help augment communities with tools like Apache STeVe and freeing projects from proprietary communication tools. Please help me help you by letting us know how Conservancy can be better. Whether it's a more active social media presence, IRC office hours, or if there's an event or project you think we should know about.
I can't believe that after volunteering with Conservancy and contributing to member projects, I now have the honor of championing the great work that WE do.
So you want to apologize... Now what?
byon April 20, 2021
We are all human. We all make mistakes. This is true of everyone, including leaders in free software communities.
We often end up needing to apologize after we hurt another person. Harming someone with your words or actions is mortifying and embarrassing.
Your first reaction may be to explain your reasoning — why you did what you did. You understandably want to explain that you didn’t intend to cause harm.
This is a natural human desire, but can often be counter-productive. Trying to explain your actions can sometimes cause others to feel even more hurt.
This blog post was written to help people in free software avoid some of these unintuitive but common pitfalls in crafting an apology.
The TLDR; apology template
⚠️ Please read the rest of the blog post before using the sample template below. The other sections of this blog post will help you avoid common mistakes that may cause people to misunderstand your apology. ⚠️
A written or verbal apology should meet two goals:
- Communicate that you understand what behavior needs to be changed
- Commit to not doing similar harmful behavior in the future
An effective apology should contain:
- an explanation of the specific behavior that caused harm
- an apology directly to the people or group of people harmed
- a commitment to stop the behavior that is causing the harm
- a plan to avoid similar harmful behavior
- a plan to repair any harm your behavior caused
- the name of a person who will hold you accountable for changing your behavior
Discussing Your Behavior
The first thing you need to discuss in an apology is what you are apologizing for. Be specific and mention the precise behavior that you want to apologize for.
Most of the time, people don’t intend their behavior to hurt another person. You might have been unaware that your words or behavior would have a negative impact on others. You may have been trying to help, but end up hurting someone instead.
Even with good intentions, actions (or lack of action) sometimes do still cause harm. The most important thing is to ensure the harm stops and you work to prevent future harm.
When we make mistakes, we want to fix them. An apology should make it clear you want to fix any harm you caused. In order to do that, any apology you say or write should meet two important goals:
- Communicate that you understand what behavior caused the harm
- Commit to not doing similar harmful behavior in the future
As you are apologizing or discussing a mistake you’ve made, focus on these two goals. Keeping these goals in mind will help mitigate misunderstanding, and assure that you communicate your remorse well.
Understanding the Harm
When you apologize, invest substantial time and consideration to determine what part of your behavior caused harm, and what similar behavior might also cause harm. Ask peers or colleagues not involved in the situation to frankly tell you their assessment of the behavior and its problems.
For example, say you told a joke that negatively impacts a person’s ability to do their job. It’s not enough to say, “Sorry, I won’t tell that joke again.” This fails to communicate to those you’ve harmed that you truly recognize why that kind of joke can be harmful.
People may worry that you might tell a similar joke in the future. They may also be afraid that you might make statements in future that aren’t jokes. They may be concerned about whether the joke is a sign you will behave in biased, discriminatory, or even ways that make them feel unsafe.
The joke alone may not have a huge impact in the moment. The person may have laughed or politely disengaged from the conversation. However, on further reflection, they may feel the joke created a sense that it may not be safe or comfortable for them to collaborate with you.
A good apology will communicate true regret for creating an unsafe environment, not just apologize for one instance of your behavior.
Acknowledging Harm Done
After describing what behavior harmed others, apologize clearly and directly to the people who were harmed.
Ideally an apology would happen in a private space, so that the other person has space to process your apology before responding. Apologizing in a one-on-one conversation or through a private email is best.
However, mistakes that were widely seen by the public often require a public apology. Public apologies are often necessary when it’s impossible to apologize privately to everyone.
In an online public apology, you should carefully consider whether to name the specific person you harmed with your behavior. That may direct online harassment to them, causing further harm. Instead, you should anonymize the details to protect the person’s privacy, and only identify them with their permission.
Online public apologies are tricky. People may question your motivations when posting a public apology. They will legitimately worry that you are apologizing merely due to public pressure, rather than because you acknowledge your behavior caused harm.
Therefore, take extra care and effort in public apologies. Consider sharing drafts of apology with others who pointed out your harmful behavior to have them frankly evaluate whether your apology reads as sincere.
There are three common things that people use to judge whether an apology is sincere:
- How you talk about your behavior
- How you talk about your reaction to being asked to change
- How you talk about others’ reactions to your behavior
The next three sections talk about pitfalls to avoid when acknowledging the harm you caused.
Don’t Talk About Intent
One mistake people fall into is trying to explain their intent. They want to communicate that they didn’t intend their behavior to harm others.
Explaining the intent behind your behavior usually requires describing your thoughts, feelings, or background. You may want to say things like, “I wasn’t raised to understand that behavior was inappropriate,” and talk about your journey towards learning and changing.
Unfortunately, talking about your past intent can come across as making excuses for your behavior. An apology is not an excuse; it’s a statement of remorse and regret! Doing a deep dive into your background and feelings can make the person you’re apologizing to feel like you’re ignoring their hurt feelings.
In your apology, you need to center the feelings of the other person or the group of people you hurt. Make sure that you talk more or write more about the other person than you. If possible, avoid talking about your intent, your feelings, or your background entirely. If the recipient wants this information, they can ask you for it later.
Don’t Focus on Your Emotions
Being told your behavior is causing harm can be hard. You may be upset. You may spiral into over-analyzing your past behavior. Being told you are causing harm in a public manner can have an impact on your other relationships or work.
An apology is not the place to talk about the harm done to you. You may want to talk about your emotional response to being told your behavior is inappropriate. However, doing so redirects attention away from the harm your behavior caused to others. Your feelings about the situation, and the pain it has caused you, belongs in private discussions with your closest friends, companions, and therapists — not with the public or those you’ve harmed.
Don’t Critique Others’ Emotions
Sometimes you may be unclear exactly why your behavior caused harm. You may see the other person’s emotions — anger, disgust, fear — but not understand why the other person feels that way.
That’s normal. A lot of people find it hard to understand another person’s lived experiences. Focusing on the emotions you can see is easier than understanding why your behavior had a negative impact.
However, talking about the emotional response that you observed can backfire. Focusing on the other person’s emotions can be seen as criticizing those emotions. Talking about how the other person got angry or offended can be seen as criticizing their tone or actions. This can cause other people to think you are deflecting attention away from your harmful behavior. An apology is not an argument, or a difference of opinion to be explained; an apology acknowledges your mistake and speaks to the changes you’re making in your own behavior to prevent future mistakes and harm to others.
Instead of focusing on emotions you see but don’t understand, focus on the fact that you do understand you harmed another person and you commit to not doing harm in the future.
Avoiding Future Harm
An important aspect of changing your behavior is understanding what types of behavior to avoid in the future.
If you don’t understand why your behavior caused harm, you can ask the person, at the end of your apology, “How can I avoid similar mistakes in the future?” The advice they give might take the form of the following suggestions:
- Read these resources before you talk about a topic
- Avoid talking about a topic altogether
- Use a specific phrase instead of another phrase
- Don’t do a specific type of behavior
- Modify policies or processes
Sometimes the other person isn’t willing to provide feedback. They may not want to spend the time to educate you. They may be upset and unwilling to discuss the matter further. In this case, allow the person space and respect any communication boundaries they set. Otherwise you risk further harm and damaging your relationship with them.
If someone sets a boundary and doesn’t want to provide education, there are other ways you can learn what patterns of behavior to avoid.
There are often books and resources for understanding why specific behaviors are harmful. There may be workshops or other training you can attend. You may also want to pay professional coaches, counselors, therapists, workshops, or other consultants.
You can also follow people on social media who talk about how to change that type of behavior. While social media posts are public, it’s important to acknowledge that providing this kind of education is emotionally taxing and time consuming. Many people who share education on social media have ways you can become a patron or provide the person a small tip for good information. Please contribute financially if you can.
Committing to change
So far in your apology, you’ve acknowledged what behavior was harmful, and apologized to the people you’ve harmed. The next part of the apology is to commit to changing your behavior.
It’s important that you be specific about what behavior you are committing to change. The commitment should take the form of “I will no longer do X” and “I will do Y”. It’s important to describe what behavior you will change as concretely as possible.
It can be tempting to put a disclaimer in your apology that it will take time for you to change. However, that can again be seen as making excuses.
Instead of talking about how hard it will be for you to change, it’s important to talk about the effort you will put into changing. This focuses your apology on a growth mentality. It takes time and effort to change, and you are committing to putting in the work it takes to change.
Repairing the Harm Caused
In some cases, an apology may be enough to to repair the harm your behavior caused. In other cases, additional actions may need to be taken.
If you are in a leadership or authority role, you may need to commit to changing policies or processes. It’s important that you don’t do this alone. If your organizational leadership didn’t realize it was causing harm, you need experienced people to help that are outside of your organization.
Once you’ve committed to changing your behavior or repairing the harm that was caused, find one person who can hold you accountable for changing your actions. This could be a business coach or mediator (for a free software organization), or a counselor or therapist (for an individual). You need to find someone who is not involved with your organization and not a friend. This is the only way to get an unbiased perspective.
Some people want to make it clear that anyone can approach them with further concerns. They may want to say, “If I mess up again, please tell me!” This is natural, but it usually backfires if you don’t have a specific person to hold you accountable.
When you ask a group of people to hold you accountable, the bystander effect can kick in. Everyone will assume the other people will talk to you about your harmful behavior. The end result is that no one will talk to you about behavior that needs to change.
If you are a leader, it can be very intimidating for another person to ask you to change. That person may hesitate to share how your behavior impacted them. Sharing why they felt hurt requires them to become vulnerable in front of a highly respected person. This can be hard for a lot of people.
If you are a leader who is trying to change their behavior, it can be good to designate one particular person to meet with people who have grievances. The person can then mediate the conversation with you.
Make sure that your apology designates one person outside of your organization to hold you accountable to change.
Template for an apology
Phew, that was a lot! Now the long explanation of why you need each part of an apology is out of the way. Let’s take a look at a template you can use to craft an effective apology:
“Over the past TIME RANGE, I did the following behavior:
- BEHAVIORS and DATES OF BEHAVIORS
I recognize that my behavior CAUSED TYPE OF HARM. (Examples of harm: caused someone to quit working in a community, caused someone to avoid community events, caused GROUP OF PEOPLE to avoid a community, etc.)
I recognize my behavior caused harm because…
I acknowledge my behavior was inappropriate because…
I apologize to everyone who was harmed by my actions, especially GROUP OF PEOPLE.
I commit to not doing BEHAVIOR again. I will work to avoid similar harmful behaviors. I have committed to learning how to change by ATTENDING XYZ CLASSES, READING XYZ RESOURCES, OR OTHER LEARNING METHODS over the next DATE RANGE.
Additionally, PERSON will be holding me accountable by PROVIDING ACCOUNTABILITY TYPE. PERSON has XYZ CREDENTIALS. I will be working with PERSON over the next DATE RANGE.
I am committed to repairing the harm I caused by ACTIONS.
I will post about my progress towards changing my behavior again on DATE.”
This template seems simple, but without reading the discussion of the common pitfalls above, it can be easy for people to misunderstand your apology.
Corrections to This Article
Did you catch an error in this article? Tell me about it! I welcome feedback from people on how to improve this article. You can send feedback via the info email below.
Understanding Installation Requirements in GPLv2
byon March 25, 2021
According to our Principles, we always begin discussions with GPL violators privately. Many of these discussions are ongoing at any time. Recently, we received many questions about GPLv2's requirements regarding installation of modified versions of GPLv2'd software on the device on which the software was distributed. GPLv2 was drafted in anticipation of future uses of the software, and includes specific license text regarding installation:
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.
Unfortunately, we find that GPL violators often ignore (sometimes inadvertently) this part of that license text, which has always been of great importance: “the scripts used to control … installation of the executable”.
When a system is 100% FOSS “by design”, meeting this requirement is easy. We applaud the many community-oriented commercial projects that build their own hardware and give their users complete software freedom, such as the LulzBot Mini 3D Printer. We wish that all companies would follow that example and grant customers universal software freedom. Unfortunately, that is currently not realistic, even in the medium term.
Copyleft advocates have always contemplated that some companies will choose to ship proprietary software on the same device as the GPL'd works. Indeed, GPLv2 foresaw this possibility and permits that “mere aggregation” — as long as compliance is achieved for the GPLv2-covered works included on the device.
Indeed, GPLv2 was drafted as a forward looking license. Great care and attention was given to what the future might bring in software, and assure that in the future, GPLv2 defended software freedom adequately. In 1991, the year of GPLv2's drafting, one did not need to look that far ahead to see that general-purpose computers would find their way into devices other than servers, desktops and laptops. It was common, for example, in 1991 to have printers with full computers inside to handle various functionality of those printers. Famously, even back then, software freedom activists were quite frustrated that printer companies and their licensees would not liberate the proprietary software on these printers. Such activists, aware of this problem, sought to fix bugs in this printer software. They demanded source code for their printers, not because they sought to build their own printer from scratch and use that software, but because they wished to modify that source, fix the bugs, and reinstall the liberated printer firmware. This problem was well understood at the time of GPLv2's drafting, and GPLv2 was clearly drafted with this issue and use-case in mind.
To that end, GPLv2 included a clear obligation to provide “the scripts used to control … installation” that function for the GPLv2'd works. GPLv2 assures, to the purchaser of an embedded product, their absolute right to receive the information necessary to install a modified version of the GPLv2'd works. Meanwhile, rules for the legitimately proprietary works remain the prerogative of the licensors of that software. Since we have often been asked, we want to communicate this point with complete clarity and transparency: we would never require that any of the proprietary software on the device continue to function (or even be present) on the device after installation of a modified version of the GPLv2'd works on any device. However, installation of the GPL'd works must succeed and operate in a useful and functional fashion on the device.
Installation is where the proverbial rubber meets the road with software freedom. Of course, we honor the esoteric value of the freedom to study, and that right is important. But much more important, and a key reason that the GPLv2 was created, is the software freedom to reinstall a modified version. That means the right to fix bugs, the right to try out your improvements, and the right to remove privacy-disrespecting anti-features. It's the right that our community needs the most. The GPLv2 was designed to assure bug-fixing. Furthermore, the drafters knew that, on embedded systems and devices, you need to know how to install those fixes. Scripts can be technical artifacts like shell scripts, but can also be merely a recipe and/or guidance — written instructions that explain how to succeed at install.
We know that other software freedom organizations share this view. Conservancy is spearheading the ongoing effort to make this clarity widely known. Below is a simple statement of this position, phrased in other words:
The GPLv2 does not have any specific requirement for preservation of the ability to reinstall proprietary-software-centric vendor-provided firmwares (even if such firmwares contain some GPLv2'd works) on embedded systems, provided that the downstream user (i.e., the consumer with the device) can build, install, run, and (repeatedly and successfully) reinstall a firmware containing at least the copylefted components (such as Linux+Bash).
Not only is this consistent with what the license text says and requires, but it is also consistent with GPL's general policy goal. In our GPL compliance discussions, violators sometimes argue that, in order to install a modified version of the software received on a device, the user should build a new device themselves from scratch (instead of installing those GPLv2'd works on the device they have already). We don't believe that the original intent of the GPLv2 requirements for “the scripts used to control … installation of the executable” included that expectation, nor is that position supported by the license text. GPLv2 was written in a time after embedded devices already existed, and the intent is clear.
Our position is by no means controversial, but we do expect some will seek to argue it is controversial. We encourage you to consider their motives, funding sources, and licensing models. For our part, we published this policy statement to clarify repeated questions that companies distributing devices with GPLv2 software have recently raised in our GPL enforcement actions for Linux, BusyBox, and other software. We look forward to continuing the (sadly) long road toward compliance with these companies, in accordance with The Principles of Community-Oriented GPL Enforcement. We greatly appreciate the work that both individual contributors and companies put into their software and communities. It is our obligation, as copyleft activists, to ensure that GPLv2's rules apply fairly to everyone.
Finally, we encourage others to link to this statement when discussing GPLv2's “the scripts used to control … installation of the executable”.