Appeal Regarding the Suspension of my Facebook Account @stephtara [en]

Given the official appeal process for the suspension of my account did not provide me with the opportunity to argue my case, I am doing it here.

I believe that my account, like others, has been wrongfully suspended in the context of the “Facebook ban wave” that has been going on these last weeks and months. I would like my appeal to be reviewed by a human being.

An authentic personal Facebook account

My account has been active since early 2007 and has been used to post authentic content and share photos, links and insights with my large network.

Over the years, I have also created and managed various support communities using Facebook groups (most notably and recently, for diabetic cats) as well as pages – for my cats, or my business and projects when I was self-employed. I actually helped many small or medium businesses here in Switzerland get set foot on facebook back in the early days and have been a strong advocate for what the platform has to offer both people and organisations.

I have done my best to use the platform to connect with people, add value around me, share personal content or high-quality information, promote respectful discussion – in a nutshell, use Facebook for what I understand it was designed for. I am also known as a blogger, since the year 2000, and I bring the spirit of collaboration, “not-for-profitness” and openness of the early social web to everything I do.

With this suspension, not only have I lost access to a large part of my network and reach, but I have lost irreplaceable memories of beloved people and pets, nearly two decades of my past, and a trove of information on a wide variety of subjects that I regularly referred to, using Facebook to “bookmark” ressources and interesting ideas. My network and communities on the platform have also been impacted by the disappearance of my content.

Details of the suspension

On Friday August 22nd, early afternoon, I made a comment in a 7000-member Facebook group I have be administering for over 7 years. The comment contained a link to a Discourse test site I was trying out. I immediately received notification that my account was suspended for 180 days for infringing community standards regarding cybersecurity. I appealed, confirming my phone number and providing a video selfie in the process. I have not heard anything back from facebook despite the appeal instructions indicating that appeals are reviewed in a bit over a day. I am confident that my account has not been hacked or otherwise compromised.

Earlier in the month, I got a warning concerning the removal of about 10 of my previous posts for various community standards infringements (mostly “spam”, without possibility of appeal. Here are some examples of removed posts:

This removals were accompanied by a warning that further infringements might put my account at risk, but I had no way of indicating that these were most certainly false positives, or of knowing which of my many posts or comments in the future might be similarly flagged.

Background and impact

Over the years, I have been faced with an increasing number of these kinds of post or comment removals which clearly seem to be in error. Sometimes an appeal is possible, sometimes not. Removals are regularly reversed. As the admin of a large and active support group, we are regularly faced with “waves” of posts misidentified as spam, moderators being blocked from mentioning members in the group, or messages being removed from community discussion channels while we try to help our members.

I assumed, knowing my use of Facebook is in line with community standards, that the post removals of early August would be reversed. I understand that algorithmic adjustments can have unforeseen consequences and that some hiccups can be expected.

As the administrator of a large and very active support group, and as a “hyperactive link-sharer”, I also understand that some of my behaviours on the platform could conceivably trigger red flags. For example, as a group administrator of a very active and engaged support group, I have often been in the situation of contacting people “I do not know” (group members) by Messenger. I also post messages that have similar content and mention groups of members, because we work very hard on keeping our members engaged and active – something that is appreciated and appropriate in the context of our group.

The main group I administer has been supporting French-speaking owners of diabetic cats since 2018 and is recognised for its high quality in terms of content, moderation, support and community. Veterinarians send their clients to us – and in parallel, I run a separate group for professionals counting 3000 members. This thriving community is now at risk, having lost not only its founder, but also the valuable content I have posted to it over the years.

I sincerely hope that this appeal may reach somebody in a position to give my account a fair evaluation regarding my respect of community standards. Also, given the many people around the world who find themselves in situations similar to mine, I hope that Meta, as a company, will commit to improving the way content and accounts are flagged, and to providing an efficient path to appeal for those of us who find ourselves unjustly removed from the platform.

Thank you for your attention.

I can be reached on BlueskyMastodonThreads or LinkedIn. Or here in the comments, of course.

Pourquoi mon compte facebook a-t-il été suspendu? [en]

Au-delà de mon petit drame personnel, je pense qu’il est important de comprendre les mécanismes sous-jacents qui décident de nos vies et “morts” numériques. (Parce que quand 18 ans de publications disparaissent en un instant, c’est un peu ça quand même.) On investit du temps et de l’énergie dans une présence en ligne, sur une plateforme qu’on ne contrôle pas. On le sait tous: si on paie pas, on est le produit. Mais le discours de la plateforme sera toujours “jouez le jeu, soyez authentiques, nous on s’occupe des mauvais acteurs, merci d’ailleurs de les signaler”. A partir d’une certaine échelle, automatisation et déshumanisation transforment l’espace communautaire en gouvernement totalitaire.

J’explique dans cette vidéo un peu longuette (la concision n’est toujours pas mon fort) “pourquoi” ou “comment ça se fait” que mon compte facebook ait été suspendu-supprimé. Parce qu’on me demande toujours ça, depuis une semaine: “mais pourquoi?!?”

Donc, explications en vidéo, pas juste pour satisfaire la curiosité des gens qui me connaissent et qui se demandent quel crime numérique j’ai bien pu commettre, mais aussi parce que c’est important de comprendre dans les grandes lignes comment ça marche derrière, et comment ça nous rend tous vulnérables, et que si votre présence en ligne et le contenu que vous partagez sur les plateformes comme facebook ou autres n’est pas quelque chose dont la perte vous laisserait de marbre, il vaut la peine de sortir de sa torpeur bordée de déni et faire une sauvegarde de votre contenu.

Demain, c’est vous qui pourriez vous retrouver devant un panneau “entrée interdite, et en plus on a balancé toutes vos affaires”. Vous n’êtes pas plus innocents que moi.

Si j’ai le courage, je complèterai cet article avec une synthèse écrite de ce que je raconte (merci TurboScribe et ChatGPT qui vont me mâcher le travail).

Edit 15:45 – les fameux points clés. Extraits par mes assistants algorithmiques, fignolés par moi.

Avec l’e-mail, on a des filtres à spam automatisés qui nous protègent du contenu indésirable. Sur les réseaux sociaux, il y a également une “course aux armements” automatisée entre les mauvais acteurs (arnaqueurs, etc) et les plates-formes.

Ces filtres sont imparfaits, et “attrapent” parfois à tort des contenus légitimes. On a tous vécu “l’e-mail qui arrive dans le spam”. Sur Facebook, des contenus inoffensifs sont parfois supprimés à tort. C’est ce qui est arrivé il y a un mois ou deux à une dizaine de mes publications, remontant jusqu’en 2016.

Il y a peu ou pas de possibilité de faire corriger ces erreurs ou de faire recours, et quand recours il y a, c’est également traité de façon automatisée. Les processus sont aussi “cassés” (on annonce une réponse en 24 heures, une semaine plus tard, toujours rien). Dans mon cas, je n’ai pas pu faire recours pour indiquer les erreurs de traitement lors de la suppression de ces publications. Par contre j’ai fait recours concernant la suspension du compte.

Mon compte était déjà “orange” faute à ces faux positifs, et un commentaire posté dans un de mes groupes avec un lien externe l’a fait basculer en “rouge”, entrainant sa suspension immédiate pour 180 jours, puis suppression si j’omets de contester la décision ou si mon appel n’aboutit pas.

Je publie beaucoup, et beaucoup de liens, donc statistiquement, probable qu’il y ait de temps en temps une publication qui déclenche l’alarme à tort; d’administre également des groupes assez grands et actifs, dans le cadre desquels j’envoie régulièrement des messages privés à des personnes qui ne sont pas dans mes contacts et qui ne me répondent pas. Ceci pourrait également avoir généré des “points négatifs” pour mon compte.

Le recours quant à la suspension est une procédure automatisée très basique qui ne permet pas d’argumenter ou de donner des explications. Il s’agit juste en gros de cliquer sur un bouton, et il y a très peu de chances qu’un humain évalue le cas.

Plus rien de ce que j’ai publié en 18 ans sur Facebook n’est visible, sauf ce qui est dans des groupes, visible seulement par les modérateurs. Les pages que je gérais ont disparu, sauf celles où j’avais mis quelqu’un d’autre comme co-admin.

Facebook veut être un acteur majeur de la société, mais peut suspendre ou supprimer des comptes de façon brutale et sans explication. Il n’y a pas de service client ou de moyen de contacter un être humain en cas de problème. Cette logique s’inscrit dans un fonctionnement de plus en plus déshumanisé de nos administrations et institutions, où les utilisateurs sont traités par des processus souvent défectueux et qui ne tiennent pas compte des situations réelles.

Ce qui m’est arrivé peut arriver à n’importe qui, vu qu’il s’agit d’erreurs de traitement. Si la disparition de votre contenu sur la plateforme a des conséquences pour vous, pensez à régulièrement demander un export de vos données (long et ennuyeux à faire, mais…). Si vous gérez des groupes ou des pages, assurez-vous toujours qu’il y ait au moins un autre administrateur en plus de vous.

Life and Trials of a Multilingual Weblog [en]

Here is an explanation of how I set up WordPress to manage my bilingual weblog. I give all the code I used to do it, and announce some of the things I’d like to implement. A “Multilingual blogging” TopicExchange channel is now open.

[fr] J'explique ici quelles sont les modifications que j'ai faites à WordPress pour gérer le bilinguisme de mon weblog -- code php et css à l'appui. Je mentionne également quelques innovations que j'ai en tête pour rendre ce weblog plus sympathique à mes lecteurs monolingues (ce résumé en est une!) Un canal pour le weblogging multilingue a été ouvert sur TopicExchange, et vous y trouverez peut-être d'autres écrits sur le même sujet. Utilisez-le (en envoyant un trackback) si vous écrivez des billets sur le multinguisme dans les weblogs!

My weblog is bilingual, and has been since November 2000. Already then, I knew that I wouldn’t be capable of producing a site which duplicates every entry in two languages.

I think this would defeat the whole idea of weblogging: lowering the “publication barrier”. I feel like writing something, I quickly type it out, press “Publish”, and there we are. Imposing upon myself to translate everything just pushes it back up again. I have seen people try this, but I have never seen somebody keep it up for anything nearing four years (this weblog is turning four on July 13).

This weblog is therefore happily bilingual, as I am — sometimes in English, sometimes in French. This post is about how I have adapted the blogging tools I use to my bilingualism, and more importantly, how I can accommodate my monolingual readers so that they also feel comfortable here.

First thing to note: although weblogging tools are now ready to be used by people speaking a variety of languages (thanks to a process named “localization”), they remain monolingual. Language is determined at weblog-level.

With Movable Type, I used categories to emulate post-level language awareness. This wasn’t satisfying at all: I ended up with to monstrous categories, Français and English, which didn’t help keep rebuild times down.

With WordPress, the solution is far more satisfying: I store the language information as Post Meta, or “custom field”. No more category exploitation for something they shouldn’t be used for.

Before I really got started doing the exciting stuff, I made a quick change to the WordPress admin interface. If I was going to be adding a “language” custom field to each and every post of mine, I didn’t want to be doing it with the (imho) rather clumsy “Custom Fields” form.

In edit.php, just after the categorydiv fieldset, I inserted the following:

<fieldset id="languagediv">
      <legend>< ?php _e('Language') ?></legend>
	  <div><input type="text" name="language" size="7"
                     tabindex="2" value="en" id="language" /></div>
</fieldset>

(You’ll probably have to move around your tabindex values so that the tabbing order makes sense to you.)

I also tweaked the wp-admin.css file a bit to keep it looking reasonably pretty, adding the rule below:

#languagediv {
	height: 3.5em;
	width: 5em;
}

and adding #languagediv everywhere I could see #poststatusdiv, so that they obeyed the same rules.

In this way, I have a small text field to edit to set the language. I pre-set it to “en”, and have just to change it to “fr” if I am writing in French.

We just need to add a little piece of code in the form processing script, post.php, just after the line that says add_meta($post_ID):

 // add language
	if(isset($_POST['language']))
	{
	$_POST['metakeyselect'] = 'language';
        $_POST['metavalue'] = $_POST['language'];
        add_meta($post_ID);
        }

The first thing I do with this language information is styling posts differently depending on the language. I do this by adding a lang attribute to my post <div>:

<div class="post" lang="<?php $post_language=get_post_custom_values("language"); $the_language=$post_language['0']; print($the_language); ?>">

In the CSS, I add these rules:

div.post:lang(fr) h2.post-title:before {
  content: " [fr] ";
  font-weight: normal;
}
div.post:lang(en) h2.post-title:before {
  content: " [en] ";
  font-weight: normal;
}
div.post:lang(fr)
{
background-color: #FAECE7;
}

I also make sure the language of the date matches the language of the post. For this, I added a new function, the_time_lg(), to my-hacks.php. I then use the following code to print the date: <?php the_time_lg($the_language); ?>.

Can more be done? Yes! I know I have readers who are not bilingual in the two languages I use. I know that at times I write a lot in one language and less in another, and my “monolingual” readers can get frustrated about this. During a between-session conversation at BlogTalk, I suddenly had an idea: I would provide an “other language” excerpt for each of my posts.

I’ve been writing excerpts for each of my posts for the last six months now, and it’s not something that raises the publishing barrier for me. Quickly writing a sentence or two about my post in the “other language” is something I can easily do, and it will at least give my readers an indication about what is said in the posts they can’t understand. This is the first post I’m trying this with.

So, as I did for language above, I added another “custom field” to my admin interface (in edit-form.php). Actually, I didn’t stop there. I also added the field for the excerpt to the “simple controls” posting page that I use (set that in Options > Writing), and another field for keywords, which I also store for each post as meta data. Use at your convenience:

<!-- BEGIN BUNNY HACK -->
<fieldset style="clear:both">
<legend><a href="http://wordpress.org/docs/reference/post/#excerpt"
title="<?php _e('Help with excerpts') ?>"><?php _e('Excerpt') ?></a></legend>
<div><textarea rows="1" cols="40" name="excerpt" tabindex="5" id="excerpt">
<?php echo $excerpt ?></textarea></div>
</fieldset>
<fieldset style="clear:both">
<legend><?php _e('Other Language Excerpt') ?></legend>
<div><textarea rows="1" cols="40" name="other-excerpt"
tabindex="6" id="other-excerpt"></textarea></div>
</fieldset>
<fieldset style="clear:both">
<legend><?php _e('Keywords') ?></legend>
<div><textarea rows="1" cols="40" name="keywords" tabindex="7" id="keywords">
<?php echo $keywords ?></textarea></div>
</fieldset>
<!-- I moved around some tabindex values too -->
<!-- END BUNNY HACK -->

I inserted these fields just below the “content” fieldset, and styled the #keywords and #other-excerpt textarea fields in exactly the same way as #excerpt. Practical translation: open wp-admin.css, search for “excerpt”, and modify the rules so that they look like this:

#excerpt, #keywords, #other-excerpt {
	height: 1.8em;
	width: 98%;
}

instead of simply this:

#excerpt {
	height: 1.8em;
	width: 98%;
}

I’m sure by now you’re curious about what my posting screen looks like!

To make sure the data in these fields is processed, we need to add the following code to post.php (as we did for the “language” field above):

// add keywords
	if(isset($_POST['keywords']))
	{
	$_POST['metakeyselect'] = 'keywords';
        $_POST['metavalue'] = $_POST['keywords'];
        add_meta($post_ID);
        }
   // add other excerpt
	if(isset($_POST['other-excerpt']))
	{
	$_POST['metakeyselect'] = 'other-excerpt';
        $_POST['metavalue'] = $_POST['other-excerpt'];
        add_meta($post_ID);
        }

Displaying the “other language excerpt” is done in this simple-but-not-too-elegant way:

<?php
$post_other_excerpt=get_post_custom_values("other-excerpt");
$the_other_excerpt=$post_other_excerpt['0'];
if($the_other_excerpt!="")
{
	if($the_language=="fr")
	{
	$the_other_language="en";
	}

	if($the_language=="en")
	{
	$the_other_language="fr";
	}
?>
    <div class="other-excerpt" lang="<?php print($the_other_language); ?>">
    <?php print($the_other_excerpt); ?>
    </div>
  <?php
  }
  ?>

accompanied by the following CSS:

div.other-excerpt:lang(fr)
{
background-color: #FAECE7;
}
div.other-excerpt:lang(en)
{
background-color: #FFF;
}
div.other-excerpt:before {
  content: " [" attr(lang) "] ";
  font-weight: normal;
}

Now that we’ve got the basics covered, what else can be done? Well, I’ve got some ideas. Mainly, I’d like visitors to be able to add “en” or “fr” at the end of any url to my weblog, and that would automatically filter out all the content which is not in that language — maybe using the trick Daniel describes? In addition to that, it would also change the language of what I call the “page furniture” — titles, footer, and even (let’s by ambitious) category names. Adding language sensitivity to trackbacks and comments could also be interesting.

A last thing I’ll mention in the multilingual department for this weblog is my styling of outgoing links if they are written in a language which is not my post language, using the hreflang attribute. It’s easy, and you should do it too!

Suw (who has just resumed blogging in Welsh) and I have just set up a “Multilingual blogging” channel on TopicExchange — please trackback it if you write about blogging in more than one language!