emacs-survey/config/survey.jl

302 lines
17 KiB
Julia
Raw Normal View History

2022-05-19 14:14:47 +00:00
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]),
2022-05-20 16:26:08 +00:00
MultiSelect(:emacs_motivations_current,
"Which features keep you using Emacs?",
["Extensibility", "Package(s)", "Text editing features",
"Community", "Part of the GNU project / FSF",
:other],
mandatory=false),
2022-05-19 14:14:47 +00:00
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"]),
2022-05-20 16:26:08 +00:00
RadioSelect(:emacs_performance,
"How well does Emacs perform in your experience?",
["Very well, it's snappy", "Good but not great",
"Alright", "Not well", "Poorly, it's slugish"]),
2022-05-19 14:14:47 +00:00
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?",
2022-05-20 16:26:08 +00:00
["Assembly", "C++", "C", "C#", "Clojure", "Elixir",
2022-05-19 14:14:47 +00:00
"Erlang", "Go", "HTML/CSS", "Haskell", "Javascript",
2022-05-20 16:26:08 +00:00
"Julia", "Java", "Elisp", "Python", "PHP", "Perl",
"R", "Rust", "Ruby", "Scheme", "Shell scripting" => "Shell",
"SQL", "Typescript", "Prose (writing)" => "Prose", :other])),
2022-05-19 14:14:47 +00:00
SurveyPart("First time questions",
2022-05-20 16:26:08 +00:00
"All of these questions are <i>optional</i>. Answer these if you're taking the survey for the first time.",
2022-05-19 14:14:47 +00:00
RadioSelect(:prior_editor,
"Which editor did you use before you started using Emacs?",
["None", "Vim", "VS Code", "IntelliJ", "Atom",
2022-05-20 16:26:08 +00:00
"Sublime Text", "Eclipse", "Nodepad++", :other],
2022-05-19 14:14:47 +00:00
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?",
2022-05-20 16:26:08 +00:00
["Friend", "Recommended by a collegue" => "Collegue",
"University/College", "Some part of the internet" => "Internet", :other],
2022-05-19 14:14:47 +00:00
mandatory=false),
2022-05-20 16:26:08 +00:00
MultiSelect(:emacs_motivations_initial,
"Which features motivated you to initially try Emacs?",
["Extensibility", "Package(s)", "Text editing features",
"Community", "Part of the GNU project / FSF",
:other],
2022-05-19 14:14:47 +00:00
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", "elpaca", "use-package",
2022-05-19 14:14:47 +00:00
"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",
2022-05-20 16:26:08 +00:00
"GNU ELPA" => "ELPA", "NonGNU Elpa", "Melpa", "Melpa Stable",
2022-05-19 14:14:47 +00:00
"Built from source (e.g. using straight)" => "Source",
"not sure", :other]),
MultiSelect(:package_discovery,
"How do you learn about new packages?",
["Reddit", "GitHub", "Mailing lists",
"IRC servers", "Matrix servers", "Discord servers",
"Web search engines", :other]),
MultiSelect(:package_research,
"When you discover a new package that looks interesting, what do you do next?",
["Install and try it immediately",
"Research alternatives", "Wait for it to mature" => "wait for maturity",
"Wait till I see other people in the community using it" => "wait for community"]),
2022-05-19 14:14:47 +00:00
TextArea(:favorite_packages,
"Could you list some of your favourite packages? (comma-seperated)";
2022-05-20 16:26:08 +00:00
validators = [t -> if length(split(t, ',')) > 10
2022-05-19 14:14:47 +00:00
"That's a lot of packages. Surely you can cut that down to a top 10?"
2022-05-20 16:26:08 +00:00
end, wordlimit(30), charlimit(200)]),
MultiSelect(:package_contact_method,
"If you wish to contact the package maintainer(s), how do you do so?",
["Mailing list", "Email", "GitHub", :other]),
MultiSelect(:package_help,
"Where do you ask for help using packages?",
["IRC", "Matrix", "Reddit", "My emacs framework's community" => "Framework",
"GitHub", "Mailing lists", "Email the maintainer(s)" => "Email", "Discord",
:other]),
MultiSelect(:package_contibutions,
"What contributions to you make to packages you use?",
["Issues", "Code (feqtures)", "Code (bugfixes)", "Documentation", "Advocacy"],
mandatory=false),
RadioSelect(:package_contibution_frequency,
"How often do you contribute to packages?",
["Frequently", "Often", "Sometimes", "Rarely", "Never"]),
MultiSelect(:package_contribution_barriers,
"If you rarely/never contribute to packages, what are the main bariers to doing so?",
["No interest", "elisp proficiency", "not knowing how to modify a package",
"the review process", "FSF paperwork (for ELPA)" => "FSF paperwork",
:other]), # TODO improve options
TextArea(:package_submission,
"If you write packages, how you you decide which repositories to submit it to (if any)?",
mandatory=false),
MultiSelect(:package_documentation_wish,
"What documentation do you wish package authors would more often provide?",
["Comparison with alternatives" => "Comparison", "Tutorials",
"Design rationale", "Info manual" => "Manual", "Screenshots",
"Clips/videos", "Intoduction/overview" => "Overview",
:other]),
2022-05-19 14:14:47 +00:00
MultiSelect(:theme, # people can use a light and dark theme
"Which theme do you use?",
2022-05-20 16:26:08 +00:00
["The default <i>light</i> theme" => "default light",
"The default <i>dark</i> theme" => "default dark",
2022-05-19 14:14:47 +00:00
"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?",
2022-05-20 16:26:08 +00:00
["Frequently", "Often", "Sometimes", "Rarely", "Never"]),
2022-05-19 14:14:47 +00:00
RadioSelect(:tramp_usage,
"How often do you use TRAMP?",
2022-05-20 16:26:08 +00:00
["Frequently", "Often", "Sometimes", "Rarely", "Never"]),
2022-05-19 14:14:47 +00:00
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",
2022-05-20 16:26:08 +00:00
"flyspell", "spell-fu", "ispell", :other]),
2022-05-19 14:14:47 +00:00
RadioSelect(:undo_package,
"Do you use an undo package in Emacs?",
["No", "My framework/starter kit's default" => "framework default",
2022-05-20 16:26:08 +00:00
"undo-tree", "undo-fu", "vundo", :other]),
2022-05-19 14:14:47 +00:00
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,
2022-05-20 16:26:08 +00:00
"Have you contributed to Emacs or an ELPA package?",
["Frequently", "Often", "Sometimes", "Rarely", "Never"]),
2022-05-19 14:14:47 +00:00
TextArea(:emacs_contribution_feedback,
"Have you got any feedback on the Emacs/ELPA contribution process?",
validators=[wordlimit(400), charlimit(6*400)],
mandatory=false),
2022-05-20 16:26:08 +00:00
RadioSelect(:package_contribution,
"Have you contributed to an Emacs package?",
["Frequently", "Often", "Sometimes", "Rarely", "Never"]),
2022-05-19 14:14:47 +00:00
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",
2022-05-20 16:26:08 +00:00
"Associate's Degree" => "Associates",
2022-05-19 14:14:47 +00:00
"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",
2022-05-20 16:26:08 +00:00
"South Sudanese", "Spanish", "Sri Lankan", "St Helenian", "St Lucian", "Stateless", "Sudanese",
2022-05-19 14:14:47 +00:00
"Surinamese", "Swazi", "Swedish", "Swiss", "Syrian", "Taiwanese", "Tajik", "Tanzanian", "Thai", "Togolese",
"Tongan", "Trinidadian", "Tristanian", "Tunisian", "Turkish", "Turkmen", "Turks and Caicos Islander",
2022-05-20 16:26:08 +00:00
"Tuvaluan", #"United States citizen" => "American",
"Ugandan", "Ukrainian", "Uruguayan", "Uzbek",
"Vatican citizen", "Vanuatu citizen", "Venezuelan", "Vietnamese", "Vincentian", "Wallisian", "Welsh",
"Yemeni", "Zambian", "Zimbabwean"],
2022-05-19 14:14:47 +00:00
mandatory=false),
RadioSelect(:respondent_ocupation,
"Which industry do you work in?",
["Academia (Student)" => "Student",
"Academia/Research" => "Research",
2022-05-20 16:26:08 +00:00
"Creative/Writing",
"Education services", "FinTech",
2022-05-19 14:14:47 +00:00
"Healthcare", "Legal", "Manufacturing",
2022-05-20 16:26:08 +00:00
"Media/Publishing",
2022-05-19 14:14:47 +00:00
"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?",
2022-05-20 16:26:08 +00:00
["r/emacs", "Hacker News", "Direct message / friend" => "Friend",
"Discord", "Twitter", "Blog post", "Emacs mailing list",
2022-05-19 14:14:47 +00:00
"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)))