Draft survey

This commit is contained in:
TEC 2022-05-19 22:14:47 +08:00
parent 91ee73d71c
commit a2929b97d2
Signed by: tec
GPG Key ID: 779591AFDB81F06C
1 changed files with 248 additions and 1 deletions

View File

@ -1 +1,248 @@
Survey("Emacs User Survey — 2022")
Survey(
"Emacs User Survey — 2022",
"Help the community have a better understanding of itself and its
own diversity in Emacs usage. Discover and show how people are using
this versatile tool for everything, from software engineering to
academia and journalism.
<br/><br/>
This takes most people ?? minutes to complete.
<br/><br/>
<b>Disclaimer:</b> This is currently just a draft based on the 2020 survey,
the questions you see now will not neccesarily be in the final survey.",
SurveyPart("Emacs Usage",
MultiSelect(:emacs_tasks,
"Which of the following activities do you use Emacs for?",
["Work", "Hobby projects", :other]),
NumberInput(:emacs_years,
"How many years have you been using Emacs for?",
validators = v -> if v < 0
"Seriously? Are we supposed to believe you're just planning ahead?"
elseif v > 45
"Oh really? 🤨"
end),
RadioSelect(:emacs_version,
"Which version/fork of Emacs do you use?",
["29 (master)" => "29",
"28", "27", "26", :other]),
MultiSelect(:operating_system,
"Which operating system to you use Emacs on?",
["GNU/Linux", "Windows", "MacOS", "BSD", :other]),
MultiSelect(:emacs_mode,
"How do you run Emacs?",
["Graphical Application (GUI)" => "GUI",
"Terminal (TUI)" => "TUI",
"Daemon/Client" => "daemon"]),
RadioSelect(:keybindings,
"Which keybindings do you use?",
["Default (Emacs)" => "Emacs", "Vim", "CUA", :other]),
RadioSelect(:starter_kit,
"Do you use a starter kit/configuration framework?",
["No, I have lightly configured vanilla Emacs" => "minimal vanilla",
"No, I have an extensive, fully-custom configuration" => "maximal vanilla",
"Doom Emacs", "Spacemacs", "Prelude",
:other]),
RadioSelect(:elisp,
"What is your level of elisp proficiency?",
["No knowledge" => "none",
"I can copy-paste and tweak some code" => "copy-paste",
"I can write simple functions" => "simple functions",
"Fairly proficient, I can/have written my own package." => "write package",
"I maintain multiple packages" => "many packages"]),
MultiSelect(:languages,
"Which languages do you program (in Emacs) in?",
["Assembly", "C++", "C", "C#", "Clojure",
"Erlang", "Go", "HTML/CSS", "Haskell", "Javascript",
"Julia", "Java", "Lisp", "Python", "PHP", "Perl",
"R", "Rust", "Ruby", "Shell scripting" => "Shell",
"SQL", "Typescript", :other])),
SurveyPart("First time questions",
"All of these questions are <i>optional</i>. Answer these if you're doing the survey for the first time.",
RadioSelect(:prior_editor,
"Which editor did you use before you started using Emacs?",
["None", "Vim", "VS Code", "IntelliJ", "Atom",
"Eclipse", "Nodepad++", :other],
mandatory=false),
TextArea(:emacs_strengths,
"What do you think are Emacs' greatest strengths?",
validators=[wordlimit(400), charlimit(6*400)],
mandatory=false),
TextArea(:emacs_dificulties,
"Can you recall any difficulties you faced when initially learning Emacs?<br/>Please be as specific and concrete as your memories permit.",
validators=[wordlimit(400), charlimit(6*400)],
mandatory=false),
RadioSelect(:emacs_introduction,
"How were you introduced to Emacs?",
["Friend", "University", "Some part of the internet" => "Internet", :other],
mandatory=false),
MultiSelect(:emacs_motivations,
"What features motivated you to initially try Emacs?",
["Extensibility", "Package/ecosystem",
"Community", "Part of the GNU project / FSF"],
mandatory=false)),
SurveyPart("Packages",
MultiSelect(:package_manager,
"How do you manage third-party packages?",
["My framework/starter kit's default" => "framework default",
"package.el (built-in)" => "package.el",
"straight.el" => "straight.el",
"use-package" => "use-package.el",
"manual (git clone/download)" => "manual",
"not sure", :other]),
MultiSelect(:package_repositories,
"Which package repositories do you use?",
["My framework/starter kit's default" => "framework default",
"GNU ELPA" => "ELPA", "Melpa", "Melpa Stable",
"Built from source (e.g. using straight)" => "Source",
"not sure", :other]),
TextArea(:favorite_packages,
"Could you list some of your favourite packages? (comma-seperated)";
validators = [t -> if length(split(t, ',')) < 2
"Come on, surely you like at least two packages?"
elseif length(split(t, ',')) > 10
"That's a lot of packages. Surely you can cut that down to a top 10?"
end, wordlimit(30), charlimit(200)]),
MultiSelect(:theme, # people can use a light and dark theme
"Which theme do you use?",
["The default theme" => "default",
"my own custom theme",
"doom-one", "dracula", "gruvbox",
"modus-operandi", "modus-vivendi", "nord",
"solarized", "solarized-dark", "zenburn",
:other]),
MultiSelect(:org_usage,
"Which use cases of Org Mode apply to your usage (if any)?",
["Note taking", "General document writing",
"Task management", "Agenda", "Time tracking",
"Personal knowledge database (org-roam)" => "org-roam",
"Literate programing / notebooks (babel)" => "babel"],
mandatory=false),
RadioSelect(:magit_usage,
"How often do you use Magit?",
["Frequently", "Rarely", "Never"]),
RadioSelect(:tramp_usage,
"How often do you use TRAMP?",
["Frequently", "Rarely", "Never"]),
MultiSelect(:term_package,
"Do you use a terminal emulator in Emacs?",
["No", "eshell", "shell", "term", "ansi-term", "vterm", :other]),
RadioSelect(:email_package,
"Do you use an Email client in Emacs?",
["No", "Gnus", "Mu4e", "notmuch", "Wanderlust", :other]),
RadioSelect(:spell_package,
"Do you use a spell checker in Emacs?",
["No", "My framework/starter kit's default" => "framework default",
"flyspell", "spell-fu", :other]),
RadioSelect(:undo_package,
"Do you use an undo package in Emacs?",
["No", "My framework/starter kit's default" => "framework default",
"undo-tree", "undo-fu", :other]),
RadioSelect(:project_package,
"Do you use an project management package in Emacs?",
["No", "My framework/starter kit's default" => "framework default",
"project.el", "projectile", :other]),
MultiSelect(:selection_package,
"Do you use any selection packages?",
["No", "My framework/starter kit's default" => "framework default",
"Helm", "Ivy", "Ido", "Icomplete",
"Vertico", "Selectrum", "Marginalia", "Consult",
:other])),
SurveyPart("Contribution",
RadioSelect(:emacs_contribution,
"Have you ever contributed to Emacs or an ELPA package?",
["No", "Occasionaly", "Frequently"]),
TextArea(:emacs_contribution_feedback,
"Have you got any feedback on the Emacs/ELPA contribution process?",
validators=[wordlimit(400), charlimit(6*400)],
mandatory=false),
RadioSelect(:melpa_contribution,
"Have you ever contributed to a Melpa package?",
["No", "Occasionaly", "Frequently"]),
RadioSelect(:isa_package_maintainer,
"Do you maintain any Emacs packages?",
["Yes", "No"]),
RadioSelect(:has_donated,
"Have you ever contributed financially to Emacs development (via the FSF)",
["No",
"Yes",
"I would if I could donate to Emacs directly" => "Would directly",
"I would like to, but cannot" => "Cannot"])),
SurveyPart("Demographics (all questions are optional)",
NumberInput(:respondent_age,
"How old are you?",
validators = n -> if n < 8
"My, you're advanced for you're age. <i>Suspisiously</i> advanced…"
elseif n > 100
"Congratulations on becoming a centernarian! How about you get one of your grandchildren to do this survey instead?"
end,
mandatory=false),
RadioSelect(:respondent_gender,
"What is your gender?",
["Male", "Female", "Other"],
mandatory=false),
RadioSelect(:respondant_education,
"What is the highest level of education you have completed?",
["High school" => "School",
"Asosociate's Degree" => "Asosociates",
"Bachelor's Degree" => "Bachelors",
"Master's Degree" => "Masters",
"PhD or equivalent" => "PhD"],
mandatory=false),
Dropdown(:respondant_nationality,
"What is your nationality?",
# taken from https://www.gov.uk/government/publications/nationalities/list-of-nationalities
["Afghan", "Albanian", "Algerian", "American", "Andorran", "Angolan", "Anguillan", "Antigua and Barbuda",
"Argentine", "Armenian", "Australian", "Austrian", "Azerbaijani", "Bahamian", "Bahraini", "Bangladeshi",
"Barbadian", "Belarusian", "Belgian", "Belizean", "Beninese", "Bermudian", "Bhutanese", "Bolivian",
"Bosnia and Herzegovina", "Botswanan", "Brazilian", "British", "British Virgin Islander", "Bruneian",
"Bulgarian", "Burkinan", "Burmese", "Burundian", "Cambodian", "Cameroonian", "Canadian", "Cape", "Verdean",
"Cayman Islander", "Central", "African", "Chadian", "Chilean", "Chinese", "Colombian", "Comoran",
"Congolese (Congo)", "Congolese (DRC)", "Cook Islander", "Costa", "Rican", "Croatian", "Cuban", "Cymraes",
"Cymro", "Cypriot", "Czech", "Danish", "Djiboutian", "Dominican", "Dominican Republic citizen", "Dutch",
"East Timorese", "Ecuadorean", "Egyptian", "Emirati", "English", "Equatorial", "Guinean", "Eritrean", "Estonian",
"Ethiopian", "Faroese", "Fijian", "Filipino", "Finnish", "French", "Gabonese", "Gambian", "Georgian",
"German", "Ghanaian", "Gibraltarian", "Greek", "Greenlandic", "Grenadian", "Guamanian", "Guatemalan",
"Guinea-Bissau citizen", "Guinean", "Guyanese", "Haitian", "Honduran", "Hong", "Konger", "Hungarian", "Icelandic",
"Indian", "Indonesian", "Iranian", "Iraqi", "Irish", "Israeli", "Italian", "Ivorian", "Jamaican", "Japanese",
"Jordanian", "Kazakh", "Kenyan", "Kittitian", "Kiribati citizen", "Kosovan", "Kuwaiti", "Kyrgyz", "Lao",
"Latvian", "Lebanese", "Liberian", "Libyan", "Liechtenstein citizen", "Lithuanian", "Luxembourger",
"Macanese", "Macedonian", "Malagasy", "Malawian", "Malaysian", "Maldivian", "Malian", "Maltese",
"Marshallese", "Martiniquais", "Mauritanian", "Mauritian", "Mexican", "Micronesian", "Moldovan", "Monegasque",
"Mongolian", "Montenegrin", "Montserratian", "Moroccan", "Mosotho", "Mozambican", "Namibian", "Nauruan",
"Nepalese", "New Zealander", "Nicaraguan", "Nigerian", "Nigerien", "Niuean", "North Korean", "Northern",
"Irish", "Norwegian", "Omani", "Pakistani", "Palauan", "Palestinian", "Panamanian", "Papua", "New", "Guinean",
"Paraguayan", "Peruvian", "Pitcairn Islander", "Polish", "Portuguese", "Prydeinig", "Puerto", "Rican",
"Qatari", "Romanian", "Russian", "Rwandan", "Salvadorean", "Sammarinese", "Samoan", "Sao", "Tomean",
"Saudi Arabian", "Scottish", "Senegalese", "Serbian", "Seychelles citizen", "Sierra", "Leonean",
"Singaporean", "Slovak", "Slovenian", "Solomon Islander", "Somali", "South African", "South Korean",
"South Sudanese", "Spanish", "Sri", "Lankan", "St Helenian", "St Lucian", "Stateless", "Sudanese",
"Surinamese", "Swazi", "Swedish", "Swiss", "Syrian", "Taiwanese", "Tajik", "Tanzanian", "Thai", "Togolese",
"Tongan", "Trinidadian", "Tristanian", "Tunisian", "Turkish", "Turkmen", "Turks and Caicos Islander",
"Tuvaluan", "Ugandan", "Ukrainian", "Uruguayan", "Uzbek", "Vatican citizen", "Vanuatu citizen",
"Venezuelan", "Vietnamese", "Vincentian", "Wallisian", "Welsh", "Yemeni", "Zambian", "Zimbabwean"],
mandatory=false),
RadioSelect(:respondent_ocupation,
"Which industry do you work in?",
["Academia (Student)" => "Student",
"Academia/Research" => "Research",
"Education", "FinTech",
"Healthcare", "Legal", "Manufacturing",
"Software Development", "Telecom",
:other],
mandatory=false)),
SurveyPart("Survey bookeeping",
RadioSelect(:survey_prior,
"Did you respond to the 2020 Emacs survey?",
["Yes", "No"]),
RadioSelect(:survey_referrer,
"How did you find out about this survey?",
["r/emacs", "Hacker News", "Direct message",
"Discord", "Twitter", "Blog post", "Mailing list",
"lobste.rs", "Telegram", "Emacs China", "IRC",
:other]),
RadioSelect(:survey_ux,
"How well do you think this survey platform works?",
["Great", "Ok", "Not great"]),
TextArea(:survey_feedback,
"Do you have any general feedback on the survey?",
validators=[wordlimit(200), charlimit(6*200)],
mandatory=false)))