diff --git a/.github/actions/spelling/README.md b/.github/actions/spelling/README.md new file mode 100644 index 0000000000..da6f2e9d9b --- /dev/null +++ b/.github/actions/spelling/README.md @@ -0,0 +1,18 @@ +# check-spelling/check-spelling configuration + +File | Purpose | Format | Info +-|-|-|- +[dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary) +[allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow) +[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject) +[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes) +[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only) +[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) +[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns) +[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) +[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect) +[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice) +[block-delimiters.list](block-delimiters.list) | Define block begin/end markers to ignore lines of text | line with _literal string_ for **start** followed by line with _literal string_ for **end** | [block ignore](https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Block-Ignore#status) + +Note: you can replace any of these files with a directory by the same name (minus the suffix) +and then include multiple files inside that directory (with that suffix) to merge multiple files together. diff --git a/.github/actions/spelling/advice.md b/.github/actions/spelling/advice.md new file mode 100644 index 0000000000..a32d1090aa --- /dev/null +++ b/.github/actions/spelling/advice.md @@ -0,0 +1,31 @@ + +
If the flagged items are :exploding_head: false positives + +If items relate to a ... +* binary file (or some other file you wouldn't want to check at all). + + Please add a file path to the `excludes.txt` file matching the containing file. + + File paths are Perl 5 Regular Expressions - you can [test]( +https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files. + + `^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md]( +../tree/HEAD/README.md) (on whichever branch you're using). + +* well-formed pattern. + + If you can write a [pattern]( +https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns +) that would match it, + try adding it to the `patterns.txt` file. + + Patterns are Perl 5 Regular Expressions - you can [test]( +https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines. + + Note that patterns can't match multiline strings. + +
+ + +:steam_locomotive: If you're seeing this message and your PR is from a branch that doesn't have check-spelling, +please merge to your PR's base branch to get the version configured for your repository. diff --git a/.github/actions/spelling/allow.txt b/.github/actions/spelling/allow.txt new file mode 100644 index 0000000000..494d4de937 --- /dev/null +++ b/.github/actions/spelling/allow.txt @@ -0,0 +1,4 @@ +github +https +ssh +ubuntu diff --git a/.github/actions/spelling/candidate.patterns b/.github/actions/spelling/candidate.patterns new file mode 100644 index 0000000000..4dfb8efaa1 --- /dev/null +++ b/.github/actions/spelling/candidate.patterns @@ -0,0 +1,636 @@ +# marker to ignore all code on line +^.*/\* #no-spell-check-line \*/.*$ +# marker to ignore all code on line +^.*\bno-spell-check(?:-line|)(?:\s.*|)$ + +# https://cspell.org/configuration/document-settings/ +# cspell inline +^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b + +# patch hunk comments +^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .* +# git index header +index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40} + +# file permissions +['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s] + +# css url wrappings +\burl\([^)]+\) + +# cid urls +(['"])cid:.*?\g{-1} + +# data url in parens +\(data:(?:[^) ][^)]*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\) +# data url in quotes +([`'"])data:(?:[^ `'"].*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1} +# data url +data:[-a-zA-Z=;:/0-9+]*,\S* + +# https/http/file urls +(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|] + +# mailto urls +mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,} + +# magnet urls +magnet:[?=:\w]+ + +# magnet urls +"magnet:[^"]+" + +# obs: +"obs:[^"]*" + +# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read +# In this examples content, I'm using a number of different ways to match things to show various approaches +# asciinema +\basciinema\.org/a/[0-9a-zA-Z]+ + +# asciinema v2 +^\[\d+\.\d+, "[io]", ".*"\]$ + +# apple +\bdeveloper\.apple\.com/[-\w?=/]+ +# Apple music +\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+ + +# appveyor api +\bci\.appveyor\.com/api/projects/status/[0-9a-z]+ +# appveyor project +\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+ + +# Amazon + +# Amazon +\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|) +# AWS S3 +\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]* +# AWS execute-api +\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b +# AWS ELB +\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b +# AWS SNS +\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/&#%_?:=]* +# AWS VPC +vpc-\w+ + +# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there +# YouTube url +\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]* +# YouTube music +\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*) +# YouTube tag +<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"] +# YouTube image +\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]* +# Google Accounts +\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]* +# Google Analytics +\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]* +# Google APIs +\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+ +# Google Storage +\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|) +# Google Calendar +\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+ +\w+\@group\.calendar\.google\.com\b +# Google DataStudio +\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|) +# The leading `/` here is as opposed to the `\b` above +# ... a short way to match `https://` or `http://` since most urls have one of those prefixes +# Google Docs +/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|)) +# Google Drive +\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]* +# Google Groups +\bgroups\.google\.com(?:/[a-z]+/(?:#!|)[^/\s"]+)* +# Google Maps +\bmaps\.google\.com/maps\?[\w&;=]* +# Google themes +themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+. +# Google CDN +\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]* +# Goo.gl +/goo\.gl/[a-zA-Z0-9]+ +# Google Chrome Store +\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|) +# Google Books +\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=&#.]* +# Google Fonts +\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]* +# Google Forms +\bforms\.gle/\w+ +# Google Scholar +\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+ +# Google Colab Research Drive +\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]* + +# GitHub SHAs (api) +\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b +# GitHub SHAs (markdown) +(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|) +# GitHub SHAs +\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b +# GitHub SHA refs +\[([0-9a-f]+)\]\(https://(?:www\.|)github.com/[-\w]+/[-\w]+/commit/\g{-1}[0-9a-f]* +# GitHub wiki +\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b +# githubusercontent +/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]* +# githubassets +\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+) +# gist github +\bgist\.github\.com/[^/\s"]+/[0-9a-f]+ +# git.io +\bgit\.io/[0-9a-zA-Z]+ +# GitHub JSON +"node_id": "[-a-zA-Z=;:/0-9+_]*" +# Contributor +\[[^\]]+\]\(https://github\.com/[^/\s"]+/?\) +# GHSA +GHSA(?:-[0-9a-z]{4}){3} + +# GitLab commit +\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b +# GitLab merge requests +\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b +# GitLab uploads +\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]* +# GitLab commits +\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b + +# binance +accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]* + +# bitbucket diff +\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+ +# bitbucket repositories commits +\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+ +# bitbucket commits +\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+ + +# bit.ly +\bbit\.ly/\w+ + +# bitrise +\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]* + +# bootstrapcdn.com +\bbootstrapcdn\.com/[-./\w]+ + +# cdn.cloudflare.com +\bcdnjs\.cloudflare\.com/[./\w]+ + +# circleci +\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+ + +# gitter +\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+ + +# gravatar +\bgravatar\.com/avatar/[0-9a-f]+ + +# ibm +[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]* + +# imgur +\bimgur\.com/[^.]+ + +# Internet Archive +\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*) + +# discord +/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,} + +# Disqus +\bdisqus\.com/[-\w/%.()!?&=_]* + +# medium link +\blink\.medium\.com/[a-zA-Z0-9]+ +# medium +\bmedium\.com/\@?[^/\s"]+/[-\w]+ + +# microsoft +\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]* +# powerbi +\bapp\.powerbi\.com/reportEmbed/[^"' ]* +# vs devops +\bvisualstudio.com(?::443|)/[-\w/?=%&.]* +# microsoft store +\bmicrosoft\.com/store/apps/\w+ + +# mvnrepository.com +\bmvnrepository\.com/[-0-9a-z./]+ + +# now.sh +/[0-9a-z-.]+\.now\.sh\b + +# oracle +\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]* + +# chromatic.com +/\S+.chromatic.com\S*[")] + +# codacy +\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+ + +# compai +\bcompai\.pub/v1/png/[0-9a-f]+ + +# mailgun api +\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]* +# mailgun +\b[0-9a-z]+.mailgun.org + +# /message-id/ +/message-id/[-\w@./%]+ + +# Reddit +\breddit\.com/r/[/\w_]* + +# requestb.in +\brequestb\.in/[0-9a-z]+ + +# sched +\b[a-z0-9]+\.sched\.com\b + +# Slack url +slack://[a-zA-Z0-9?&=]+ +# Slack +\bslack\.com/[-0-9a-zA-Z/_~?&=.]* +# Slack edge +\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+ +# Slack images +\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+ + +# shields.io +\bshields\.io/[-\w/%?=&.:+;,]* + +# stackexchange -- https://stackexchange.com/feeds/sites +\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/) + +# Sentry +[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b + +# Twitter markdown +\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\) +# Twitter hashtag +\btwitter\.com/hashtag/[\w?_=&]* +# Twitter status +\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|) +# Twitter profile images +\btwimg\.com/profile_images/[_\w./]* +# Twitter media +\btwimg\.com/media/[-_\w./?=]* +# Twitter link shortened +\bt\.co/\w+ + +# facebook +\bfburl\.com/[0-9a-z_]+ +# facebook CDN +\bfbcdn\.net/[\w/.,]* +# facebook watch +\bfb\.watch/[0-9A-Za-z]+ + +# dropbox +\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+ + +# ipfs protocol +ipfs://[0-9a-zA-Z]{3,} +# ipfs url +/ipfs/[0-9a-zA-Z]{3,} + +# w3 +\bw3\.org/[-0-9a-zA-Z/#.]+ + +# loom +\bloom\.com/embed/[0-9a-f]+ + +# regex101 +\bregex101\.com/r/[^/\s"]+/\d+ + +# figma +\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+ + +# freecodecamp.org +\bfreecodecamp\.org/[-\w/.]+ + +# image.tmdb.org +\bimage\.tmdb\.org/[/\w.]+ + +# mermaid +\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+ + +# Wikipedia +\ben\.wikipedia\.org/wiki/[-\w%.#]+ + +# gitweb +[^"\s]+/gitweb/\S+;h=[0-9a-f]+ + +# HyperKitty lists +/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/ + +# lists +/thread\.html/[^"\s]+ + +# list-management +\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+ + +# kubectl.kubernetes.io/last-applied-configuration +"kubectl.kubernetes.io/last-applied-configuration": ".*" + +# pgp +\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]* + +# Spotify +\bopen\.spotify\.com/embed/playlist/\w+ + +# Mastodon +\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]* + +# scastie +\bscastie\.scala-lang\.org/[^/]+/\w+ + +# images.unsplash.com +\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+ + +# pastebin +\bpastebin\.com/[\w/]+ + +# heroku +\b\w+\.heroku\.com/source/archive/\w+ + +# quip +\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)? + +# badgen.net +\bbadgen\.net/badge/[^")\]'\s]+ + +# statuspage.io +\w+\.statuspage\.io\b + +# media.giphy.com +\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+ + +# tinyurl +\btinyurl\.com/\w+ + +# codepen +\bcodepen\.io/[\w/]+ + +# registry.npmjs.org +\bregistry\.npmjs\.org/(?:@[^/"']+/|)[^/"']+/-/[-\w@.]+ + +# getopts +\bgetopts\s+(?:"[^"]+"|'[^']+') + +# ANSI color codes +(?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m + +# URL escaped characters +\%[0-9A-F][A-F] +# lower URL escaped characters +\%[0-9a-f][a-f](?=[a-z]{2,}) +# IPv6 +\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b +# c99 hex digits (not the full format, just one I've seen) +0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP] +# Punycode +\bxn--[-0-9a-z]+ +# sha +sha\d+:[0-9]*[a-f]{3,}[0-9a-f]* +# sha-... -- uses a fancy capture +(\\?['"]|")[0-9a-f]{40,}\g{-1} +# hex runs +\b[0-9a-fA-F]{16,}\b +# hex in url queries +=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?& +# ssh +(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,} + +# PGP +\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b +# GPG keys +\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b +# Well known gpg keys +.well-known/openpgpkey/[\w./]+ + +# pki +-----BEGIN.*-----END + +# uuid: +\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b +# hex digits including css/html color classes: +(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b +# integrity +integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1} + +# https://www.gnu.org/software/groff/manual/groff.html +# man troff content +\\f[BCIPR] +# '/" +\\\([ad]q + +# .desktop mime types +^MimeTypes?=.*$ +# .desktop localized entries +^[A-Z][a-z]+\[[a-z]+\]=.*$ +# Localized .desktop content +Name\[[^\]]+\]=.* + +# IServiceProvider / isAThing +\b(?:I|isA)(?=(?:[A-Z][a-z]{2,})+\b) + +# crypt +(['"])\$2[ayb]\$.{56}\g{-1} + +# scrypt / argon +\$(?:scrypt|argon\d+[di]*)\$\S+ + +# go.sum +\bh1:\S+ + +# scala modules +("[^"]+"\s*%%?\s*){2,3}"[^"]+" + +# Input to GitHub JSON +content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1} + +# This does not cover multiline strings, if your repository has them, +# you'll want to remove the `(?=.*?")` suffix. +# The `(?=.*?")` suffix should limit the false positives rate +# printf +%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA]|p)(?=[a-zA-Z]{2,}))(?=[_a-zA-Z]+\b)(?!%)(?=.*?['"]) + +# Python string prefix / binary prefix +# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings +(?|m([|!/@#,;']).*?\g{-1}) + +# perl qr regex +(?|\(.*?\)|([|!/@#,;']).*?\g{-1}) + +# Go regular expressions +regexp?\.MustCompile\(`[^`]*`\) + +# regex choice +\(\?:[^)]+\|[^)]+\) + +# proto +^\s*(\w+)\s\g{-1} = + +# sed regular expressions +sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2} + +# node packages +(["'])\@[^/'" ]+/[^/'" ]+\g{-1} + +# go install +go install(?:\s+[a-z]+\.[-@\w/.]+)+ + +# kubernetes pod status lists +# https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase +\w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+ + +# kubectl - pods in CrashLoopBackOff +\w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+ + +# kubernetes object suffix +-[0-9a-f]{10}-\w{5}\s + +# posthog secrets +([`'"])phc_[^"',]+\g{-1} + +# xcode + +# xcodeproject scenes +(?:Controller|destination|ID|id)="\w{3}-\w{2}-\w{3}" + +# xcode api botches +customObjectInstantitationMethod + +# configure flags +.* \| --\w{2,}.*?(?=\w+\s\w+) + +# font awesome classes +\.fa-[-a-z0-9]+ + +# bearer auth +(['"])Bear[e][r] .*?\g{-1} + +# basic auth +(['"])Basic [-a-zA-Z=;:/0-9+]{3,}\g{-1} + +# base64 encoded content +([`'"])[-a-zA-Z=;:/0-9+]+=\g{-1} +# base64 encoded content in xml/sgml +>[-a-zA-Z=;:/0-9+]+== 0.0.22) +\\\w{2,}\{ + +# eslint +"varsIgnorePattern": ".+" + +# Windows short paths +[/\\][^/\\]{5,6}~\d{1,2}[/\\] + +# in check-spelling@v0.0.22+, printf markers aren't automatically consumed +# printf markers +(?v# +(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_])) + +# Compiler flags (Unix, Java/Scala) +# Use if you have things like `-Pdocker` and want to treat them as `docker` +(?:^|[\t ,>"'`=(])-(?:(?:J-|)[DPWXY]|[Llf])(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}) + +# Compiler flags (Windows / PowerShell) +# This is a subset of the more general compiler flags pattern. +# It avoids matching `-Path` to prevent it from being treated as `ath` +(?:^|[\t ,"'`=(])-(?:[DPL](?=[A-Z]{2,})|[WXYlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})) + +# Compiler flags (linker) +,-B + +# curl arguments +\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)* +# set arguments +\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)* +# tar arguments +\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+ +# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long... +\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b +# macOS temp folders +/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/ diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt new file mode 100644 index 0000000000..1d383d9696 --- /dev/null +++ b/.github/actions/spelling/excludes.txt @@ -0,0 +1,98 @@ +# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes +(?:^|/)(?i)COPYRIGHT +(?:^|/)(?i)LICEN[CS]E +(?:^|/)3rdparty/ +(?:^|/)\.keep$ +(?:^|/)go\.sum$ +(?:^|/)package(?:-lock|)\.json$ +(?:^|/)Pipfile$ +(?:^|/)pyproject.toml +(?:^|/)requirements(?:-dev|-doc|-test|)\.txt$ +(?:^|/)vendor/ +[^/]\.jwk$ +[^/]\.odt$ +\.a$ +\.ai$ +\.all-contributorsrc$ +\.avi$ +\.bmp$ +\.bz2$ +\.cer$ +\.class$ +\.coveragerc$ +\.crl$ +\.crt$ +\.csr$ +\.dll$ +\.docx?$ +\.drawio$ +\.DS_Store$ +\.eot$ +\.eps$ +\.exe$ +\.gif$ +\.git-blame-ignore-revs$ +\.gitattributes$ +\.gitkeep$ +\.graffle$ +\.gz$ +\.icns$ +\.ico$ +\.ipynb$ +\.jar$ +\.jks$ +\.jpe?g$ +\.key$ +\.lib$ +\.lock$ +\.map$ +\.min\.. +\.mo$ +\.mod$ +\.mp[34]$ +\.o$ +\.ocf$ +\.otf$ +\.p12$ +\.parquet$ +\.pdf$ +\.pem$ +\.pfx$ +\.png$ +\.psd$ +\.pyc$ +\.pylintrc$ +\.qm$ +\.s$ +\.sig$ +\.so$ +\.svgz?$ +\.sys$ +\.tar$ +\.tgz$ +\.tiff?$ +\.ttf$ +\.wav$ +\.webm$ +\.webp$ +\.woff2?$ +\.xcf$ +\.xlsx?$ +\.xpm$ +\.xz$ +\.zip$ +^\.github/styles +^\.github/actions/spelling +^\Q.github/workflows/spelling.yml\E$ +^bin +^docs/ca +^docs/es +^docs/pt +\.editorconfig$ +^\.github/workflows/ +\.gitignore$ +\.node-version$ +^\Qdocs/en/modules/understand/pages/social-contract-ca.adoc\E$ +^\Qdocs/en/modules/understand/pages/social-contract-es.adoc\E$ +^\Qdocs/en/modules/publications/pages/catalan.adoc\E$ +^\Qdocs/en/modules/admin/pages/features/my_public_profile/activity.adoc\E$ diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt new file mode 100644 index 0000000000..554fe1ce08 --- /dev/null +++ b/.github/actions/spelling/expect.txt @@ -0,0 +1,596 @@ +decidim +Aberta +accesible +achieiving +activejob +activestorage +Actuaci +actvity +adjectivation +admins +admonitionblock +adoc +aeadd +aed +afa +AGPL +AGPLv +ajbcn +Ajuntamentde +Albrechtslund +alex +alla +amendmed +Amendmentsfootnote +Analytica +anidation +antora +anual +Arag +Arnau +Arrieta +asciidoctor +assingned +Associaci +astroturfing +attachmentsdir +attendes +authorable +availables +avec +avons +Balcells +Baran +Bayat +bbd +bcb +BCN +Benkler +biblio +blogs +Borge +bottotm +Boutang +Brexit +bria +Briapass +Brito +Cadwalladr +Calleja +Cancellato +capere +capilar +Castells +castillalamancha +Catal +catalonia +Catalunya +catalysing +Cet +chatbots +Cheatsheet +childcare +choosen +cicle +cittadini +clasyfing +clickbait +COFE +collaborable +collabrative +comission +commitee +comunicate +concernfootnote +conflictuality +converations +converstaions +copyleft +Coru +creativecommons +Crogan +crowdfunding +crowdin +cta +Cugat +customisable +CVS +cyberspace +Dardot +daringfireball +datacracy +dbuild +dccf +debatpublic +Debian +decidimfest +declinefootnote +Definining +deliveroo +Denktank +denvergure +depoliticising +designatlarge +diffs +Diputaci +disaggregating +disempowerment +diventata +diz +DOCSEARCH +Dohle +donneesquebec +downvoted +Dumezil +ebd +ecae +Ecco +ecrivons +Eichengreen +Ekag +Emandation +embeded +emissors +emoji +Encarta +endorsments +enduml +Energia +enne +erabaki +etherpad +eues +EUR +europ +everytime +Evgeny +exceding +extractivism +faqs +fdabef +Feenstra +fightback +FLOK +fois +followign +Fominaya +fran +francesca +Fumagalli +Fundaci +futureu +gamification +gamifying +Geltr +gemfile +gencat +Generalitat +geolocated +geolocating +Gerbaudo +Girona +globalisation +GPLv +Grizzioti +groupsfootnote +Guimpera +Habermas +hashtag +Hayek +Heroku +herokuapp +herselves +highlightjs +Highligted +Himanen +hybridisation +hypermediation +hypervisibility +iaran +ici +ICTs +identificator +ijoc +impementation +informhirky +infraestructures +infrastructural +innovaciodemocratica +ins't +Intervista +Intiatives +IPFS +islamophobia +issuecomment +itfootnote +Ith +JAQ +Jaume +Jessop +Jitsi +JMg +Junqu +Justificate +Kawalek +Kellner +kroki +laborally +Laclau +laquadrature +legalcode +Leiner +lejourdapres +leveloffset +linting +lioration +Llobregat +Lnading +Localret +Lohr +lunr +Mancha +Manin +Manovich +Mantainers +matchs +mathjax +Maxigas +Meetiings +mehod +memes +mesage +messagge +Metadecidim +metatags +mhlh +microblogging +mkf +modello +monopinion +Monterde +Morozov +Mottram +Mouffe +Moulier +mqwt +multiculturalism +multilanguage +multitenancy +multitenant +Municipis +Nationale +nchez +ned +Neighberhood +neighbourhoods +neoliberal +neoliberalism +netlify +NGOs +NIE +normatives +ocurring +odbl +Offe +Officializations +Oikos +olygocratic +omastadi +Omegle +Omniauth +opendatacommons +organisations +Organzation +osallistu +OStatus +Ostrom +otb +Padr +pamplona +paperfootnote +particiapnts +participatiu +participez +participons +particpant +Particpipatory +peazip +Peltzmann +Personalised +pez +Piketty +Piwik +Pla +plaform +planefootnote +plantuml +plateforme +Platformname +Podemos +politicisation +positionfootnote +possiblity +postbuild +Postgre +Postill +preferrably +premi +Pressupostos +Preville +prioritisation +prioritising +prioritization +prioritzation +privatising +propsoals +Provincials +Pueyo +quorumglobal +Ranci +reappropriable +recomended +recommened +Reoffficialize +reofficialize +reprensenting +reproduisons +reviewdog +Reybrouck +roadmap +Rodot +Rodrik +Rosanvallon +rullings +Runciman +Rushkoff +screenshots +societyfootnote +socio +Solanet +somenergia +sortitions +sovranit +spamming +Srnicek +startuml +stefanzweifel +Stiglitz +Streeck +surveilling +surwilling +sustainability +techno +technocentric +technocentrism +technooptimistic +technopolitical +technopolitics +technoscience +technoscientific +tecnologica +Terrassa +texte +theation +themself +timeframe +timestamped +toclevels +Tokunaga +Tormey +traduit +Trevathan +Tufekci +Tullock +Tumblr +turbolinks +uber +underlied +une +unfollow +unofficialize +unreport +upvoted +Vercellone +verfication +versionss +videoconference +Vieira +Vilanova +visualiation +VLC +votings +WAI +webpacker +webpage +websites +Whatsapp +Wheter +wordpress +Worfklows +xdg +XDOC +Xth +XXth +ycombinator +youtu +youtube +yoz +Zizek +Zuboff +Zuckerberg +Zuylen +Zysman +Activa +Activitat +aholkulariapass +Ajuntament +Amezaga +Andere +arkitekto +arquitecto +asesor +Asier +asociativas +auch +autonomia +azpiegitura +Barandiaran +Bartzelonako +Batlle +bedeutet +Beispiel +buruzko +Carta +Cartapass +catalanes +CGDL +ciclo +ciudadanos +Ciudades +ciutadana +codi +Colau +completo +comunicar +Contrat +coordinador +Cultura +democracia +demokratisch +demokratische +Demokrazia +demokraziari +desarrollo +detalla +Deutschlandfunk +deviene +Dicidimen +Dienste +digitalak +digitale +directa +disponible +documento +durar +eine +einer +elkarteko +Erfolg +esa +escalas +estandarizar +este +Fabra +flujo +funcionalidades +Fundaction +FWFFK +Gallastegui +gefolgt +Gemeinwohls +GIGAPP +Gobierno +Greenpeace +Hacia +ihre +infraestructura +inmigrante +innen +inteligente +Internacional +jardunaldia +juego +Kaltenbrunner +Keka +koordinatzaile +koordinatzailea +laboratives +langfristig +lehendakaria +lela +llevan +lliure +lokale +los +Lucena +machen +Macher +Magazzine +Mehr +mejorar +miembros +Mitsprache +Muchos +municipalismo +municipalista +municipios +muy +neues +obert +objetivos +offene +ofreciendo +Orte +paral +parar +Partaidetza +Participa +participativa +participativo +partidos +partizipatiborako +passende +pensament +plataforma +Plattform +Pompeu +potencias +presentado +previstas +principales +procede +procesos +Procomuns +programa +programari +proiektuaren +proyecto +pueden +quelcom +Recerca +Regierungsprogramm +reglas +Revista +revuelta +RTVE +schreiben +selbst +Septiembre +servicio +sichern +siglo +sociales +sociedad +Societat +Soziale +sozialer +spricht +Strategien +sus +tecno +Teilhabe +teknikoa +Teknologia +tercera +territoriales +todas +todos +tomar +Udaleko +und +visualizar +Wirtschaft +Xabier +Xarxaip +zinegotziaren +zupass diff --git a/.github/actions/spelling/line_forbidden.patterns b/.github/actions/spelling/line_forbidden.patterns new file mode 100644 index 0000000000..199e7b1614 --- /dev/null +++ b/.github/actions/spelling/line_forbidden.patterns @@ -0,0 +1,113 @@ +# reject `m_data` as VxWorks defined it and that breaks things if it's used elsewhere +# see [fprime](https://github.com/nasa/fprime/commit/d589f0a25c59ea9a800d851ea84c2f5df02fb529) +# and [Qt](https://github.com/qtproject/qt-solutions/blame/fb7bc42bfcc578ff3fa3b9ca21a41e96eb37c1c7/qtscriptclassic/src/qscriptbuffer_p.h#L46) +# \bm_data\b + +# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test, +# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want +# to use this: +#\bfit\( + +# s.b. anymore +\bany more[,.] + +# s.b. GitLab +(?]*>|[^<]*)\s*$ + +# Autogenerated revert commit message +^This reverts commit [0-9a-f]{40}\.$ + +# ignore long runs of a single character: +\b([A-Za-z])\g{-1}{3,}\b + +# Automatically suggested patterns +# hit-count: 352 file-count: 20 +# Non-English +[a-zA-Z]*[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*|[a-zA-Z]{3,}[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]|[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3,} +# hit-count: 184 file-count: 48 +# https/http/file urls +(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|] +# hit-count: 14 file-count: 10 +# GitHub SHAs (markdown) +(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|) +# hit-count: 9 file-count: 3 +# hex runs +\b[0-9a-fA-F]{16,}\b +# hit-count: 8 file-count: 3 +# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there +# YouTube url +\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]* +# hit-count: 6 file-count: 5 +# version suffix v# +(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_])) +# hit-count: 4 file-count: 3 +# AWS S3 +\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]* +# hit-count: 3 file-count: 2 +# medium +\bmedium\.com/\@?[^/\s"]+/[-\w]+ +# hit-count: 2 file-count: 2 +# Wikipedia +\ben\.wikipedia\.org/wiki/[-\w%.#]+ +# hit-count: 1 file-count: 1 +# URL escaped characters +\%[0-9A-F][A-F] +# hit-count: 1 file-count: 1 +# uuid: +\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b +# hit-count: 1 file-count: 1 +# node packages +(["'])\@[^/'" ]+/[^/'" ]+\g{-1} +# EOF Automatically suggested patterns diff --git a/.github/actions/spelling/reject.txt b/.github/actions/spelling/reject.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml new file mode 100644 index 0000000000..9c59c050c5 --- /dev/null +++ b/.github/workflows/spelling.yml @@ -0,0 +1,150 @@ +name: Check Spelling + +# Comment management is handled through a secondary job, for details see: +# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions +# +# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment +# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare) +# it needs `contents: write` in order to add a comment. +# +# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment +# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment) +# it needs `pull-requests: write` in order to manipulate those comments. + +# Updating pull request branches is managed via comment handling. +# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list +# +# These elements work together to make it happen: +# +# `on.issue_comment` +# This event listens to comments by users asking to update the metadata. +# +# `jobs.update` +# This job runs in response to an issue_comment and will push a new commit +# to update the spelling metadata. +# +# `with.experimental_apply_changes_via_bot` +# Tells the action to support and generate messages that enable it +# to make a commit to update the spelling metadata. +# +# `with.ssh_key` +# In order to trigger workflows when the commit is made, you can provide a +# secret (typically, a write-enabled github deploy key). +# +# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key + +# Sarif reporting +# +# Access to Sarif reports is generally restricted (by GitHub) to members of the repository. +# +# Requires enabling `security-events: write` +# and configuring the action with `use_sarif: 1` +# +# For information on the feature, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Sarif-output + +# Minimal workflow structure: +# +# on: +# push: +# ... +# pull_request_target: +# ... +# jobs: +# # you only want the spelling job, all others should be omitted +# spelling: +# # remove `security-events: write` and `use_sarif: 1` +# # remove `experimental_apply_changes_via_bot: 1` +# ... otherwise adjust the `with:` as you wish + +on: + push: + branches: + - "**" + tags-ignore: + - "**" + pull_request_target: + branches: + - "**" + types: + - 'opened' + - 'reopened' + - 'synchronize' + issue_comment: + types: + - 'created' + +jobs: + spelling: + name: Check Spelling + permissions: + contents: read + pull-requests: read + actions: read + security-events: write + outputs: + followup: ${{ steps.spelling.outputs.followup }} + runs-on: ubuntu-latest + if: ${{ contains(github.event_name, 'pull_request') || github.event_name == 'push' }} + concurrency: + group: spelling-${{ github.event.pull_request.number || github.ref }} + # note: If you use only_check_changed_files, you do not want cancel-in-progress + cancel-in-progress: true + steps: + - name: check-spelling + id: spelling + uses: check-spelling/check-spelling@v0.0.22 + with: + suppress_push_for_open_pull_request: false # ${{ github.actor != 'dependabot[bot]' && 1 }} + checkout: true + check_file_names: 1 + spell_check_this: check-spelling/spell-check-this@prerelease + post_comment: 0 + use_magic_file: 1 + report-timing: 1 + warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check + experimental_apply_changes_via_bot: ${{ github.repository_owner != 'decidim' && 1 }} + use_sarif: ${{ (!github.event.pull_request || (github.event.pull_request.head.repo.full_name == github.repository)) && 1 }} + check_extra_dictionaries: '' + extra_dictionaries: + cspell:software-terms/dict/softwareTerms.txt + cspell:lorem-ipsum/dictionary.txt + cspell:fullstack/dict/fullstack.txt + cspell:typescript/dict/typescript.txt + cspell:aws/aws.txt + cspell:php/dict/php.txt + cspell:python/src/python/python-lib.txt + cspell:html/dict/html.txt + cspell:ruby/dict/ruby.txt + cspell:filetypes/filetypes.txt + cspell:java/src/java.txt + cspell:node/dict/node.txt + cspell:npm/dict/npm.txt + cspell:css/dict/css.txt + cspell:shell/dict/shell-all-words.txt + cspell:k8s/dict/k8s.txt + cspell:python/src/common/extra.txt + cspell:dotnet/dict/dotnet.txt + + update: + name: Update PR + permissions: + contents: write + pull-requests: write + actions: read + runs-on: ubuntu-latest + if: ${{ + github.repository_owner != 'decidim' && + github.event_name == 'issue_comment' && + github.event.issue.pull_request && + contains(github.event.comment.body, '@check-spelling-bot apply') + }} + concurrency: + group: spelling-update-${{ github.event.issue.number }} + cancel-in-progress: false + steps: + - name: apply spelling updates + uses: check-spelling/check-spelling@v0.0.22 + with: + experimental_apply_changes_via_bot: 1 + checkout: true + ssh_key: "${{ secrets.CHECK_SPELLING }}" diff --git a/docs/en/modules/admin/pages/participants/groups.adoc b/docs/en/modules/admin/pages/participants/groups.adoc index e0f57dcb75..bbd63a2530 100644 --- a/docs/en/modules/admin/pages/participants/groups.adoc +++ b/docs/en/modules/admin/pages/participants/groups.adoc @@ -22,7 +22,7 @@ image:user_group_new_form.png[New user group form] |Nickname |Required -|Nickname of your organization, association, collective, group, etc. Do not use spaces nor accents. 20 characters maximum. +|Nickname of your organization, association, collective, group, etc. Do not use spaces or accents. 20 characters maximum. |Email |Required @@ -38,11 +38,11 @@ image:user_group_new_form.png[New user group form] |Document number |Optional -|Used for verifications. Do not use dashes nor spaces. +|Used for verifications. Do not use dashes and spaces. |Phone |Optional -|Used for verifications. Do not use dashes nor spaces. +|Used for verifications. Do not use dashes and spaces. |=== diff --git a/docs/en/modules/admin/pages/system.adoc b/docs/en/modules/admin/pages/system.adoc index 111b0c8729..e40e98c4f5 100644 --- a/docs/en/modules/admin/pages/system.adoc +++ b/docs/en/modules/admin/pages/system.adoc @@ -1,4 +1,4 @@ -= System += System Every Decidim is multi-tenant by default. That means that you can have multiple organizations inside of your same installation. This is being used for instance for the Barcelona and Girona Provincials Governments, for offering Decidim installations to many small cities, or by the City of Barcelona, for giving service to lots of organizations (NGOs, cooperatives, etc). @@ -10,18 +10,18 @@ image::system-log_in.png[system panel log in] == 1. Create an admin account -For logging in to this dashboard, you'll need to create a system admin account from your terminal: +For logging in on this dashboard, you'll need to create a system admin account from your terminal: [source, console] .... bin/rails decidim_system:create_admin .... -You'll be asked for an email and a password. For security, the password will not get displayed back at you and you'll need to confirm it. +You'll be asked for an email and a password. For security, the password will not get displayed back at you and you'll need to confirm it. == 2. Access the Dashboard -With the email and password that you've added in the past step, you'll be able to log in. After you've logged in, you'll see an empty dashboard: +With the email and password that you've added in the past step, you'll be able to log in. After you've logged in, you'll see an empty dashboard: image::system-dashboard.png[system empty dashboard] diff --git a/docs/en/modules/features/pages/participatory-spaces.adoc b/docs/en/modules/features/pages/participatory-spaces.adoc index 77f77021a9..a45ddb594d 100644 --- a/docs/en/modules/features/pages/participatory-spaces.adoc +++ b/docs/en/modules/features/pages/participatory-spaces.adoc @@ -54,7 +54,7 @@ Initiatives operate as follows: * Any person or citizen association can make a citizen-initiative proposal. There are *several types of initiatives* with various numbers of endorsements/signatures required for their processing (these are all configurable). From the initiative-creation page, a description of each of the methods, the number of signatures required and examples (e.g. explanatory videos) can be viewed. * To avoid duplicates, once an initiative has been created, the system will present suggestions for **similar initiatives** before continuing with the following step. Once similar proposals have been ruled out, the specific form will be shown for each type of initiative, along with the minimum number of endorsements required. The creator then has an URL at their disposal which can be used to invite others to join in and endorse the initiative. A map is also displayed showing the locations of meeting points to collect signatures should there be any. -* Once the the initiative has been created, the initiative will move to a **technical moderation and validation** stage, where the City Council’s staff can respond in various ways (by approving it, rejecting it or suggesting amendments). +* Once the initiative has been created, the initiative will move to a **technical moderation and validation** stage, where the City Council’s staff can respond in various ways (by approving it, rejecting it or suggesting amendments). * Initiatives can be monitored and **notifications received on updated** statuses, in addition to which their individual promoter or group can periodically send information newsletters to other uses of the platform who have opted to follow the initiative. * On reaching the specified end date, an initiative can have two possible states: ** *Rejected*: where it fails to reach the minimum number of signatures, a message will be shown stating "does not meet the number of signatures required" and the initiative's creator will be notified. diff --git a/docs/en/modules/whitepaper/pages/why-decidim.adoc b/docs/en/modules/whitepaper/pages/why-decidim.adoc index 9d385cbd26..277db71af1 100644 --- a/docs/en/modules/whitepaper/pages/why-decidim.adoc +++ b/docs/en/modules/whitepaper/pages/why-decidim.adoc @@ -14,7 +14,7 @@ The context that has given birth to Decidim is defined by two interconnected phe 1. In social terms, it had to face the growth of the franchise, incorporating an ever more diverse constituency, and, in the last decades of the XXth century, the rise in cultural diversity, consumerism and the ideology of consumer choice in Western democracies (Laclau & Mouffe, 1985; Sennett, 1977, 1998) that generated an ever-growing variety of desires and perspectives to be listened to and articulated in government action. Furthermore, representation has proven open to systemic practices of nepotism or corruption, usually by powerful economic interests (Buchanan & Tullock, 1962; Peltzmann, 1976). In this context, representative mechanisms have ended up imposing the will of the few over the complex and conflictual wills of the people in public policy. 2. The second key challenge of complexity had to do with the reality. As the technoscientific transformation of reality accelerated, the responsibility and complexity of the problems facing public policy (f.i.: climate change) has only increased; and yet many of the systems for detecting social problems and mobilizing social knowledge to address them have remained oligarchic. The attack Friedrich Hayek (1944, 1945) launched on socialist planning can be launched against representative democracy too: reality is too complex for a centralized decision-making system. -3. The third challenge of complexity fed back into the previous two: it is the challenge (or meta-challenge) of communication and organization. Mobilizing and organizing the will, the knowledge, and the collective action of society into public policy faced numerous socio-technological limits: the millions of members composing a given social group could not express their will nor contribute their knowledge and effort to address their matters of concernfootnote:[Organization or knowledge may be insufficient to solve the problems facing democracy today. However, we there are reasons to believe they can contribute to do so.]. Still in the XXth century, the infrastructure required to bring an expression of will or knowledge of people distributed geographically or socioeconomically (f.i.: laborally) into a common problem or decision seemed out of reach. Even if they wanted, people could not gather in assemblies or other political processes: people were too many, lived far from each other, had their work schedules, and no free time at all. +3. The third challenge of complexity fed back into the previous two: it is the challenge (or meta-challenge) of communication and organization. Mobilizing and organizing the will, the knowledge, and the collective action of society into public policy faced numerous socio-technological limits: the millions of members composing a given social group could not express their will or contribute their knowledge and effort to address their matters of concernfootnote:[Organization or knowledge may be insufficient to solve the problems facing democracy today. However, we there are reasons to believe they can contribute to do so.]. Still in the XXth century, the infrastructure required to bring an expression of will or knowledge of people distributed geographically or socioeconomically (f.i.: laborally) into a common problem or decision seemed out of reach. Even if they wanted, people could not gather in assemblies or other political processes: people were too many, lived far from each other, had their work schedules, and no free time at all. Representative democracy, where the many elect a few every four years, became a raw and oversimplified articulation of the will and knowledge of the many, in terms of the management by the few. So raw and simplified that it couldn’t solve the problems of society and became one of them: the people’s will was not represented or properly constructed but captured, the real problems were not solved by public representatives, but externalized to the market to be solved, and the problems generated by the market too often remained unsolved.