The results are in for the first ever Gleam Developer Survey! It ran for a couple months at the end of 2024 and received 841 responses! Thank you to everyone who took part! šŸ’–

The survey was a Gleam web application with both the frontend and the backend written in Gleam. It was deployed to a physical Linux server and wrote data to the local filesystem as JSON files rather than using any particular database.

All the questions in the survey were optional, and several of the questions had a free-text field for people to give their answers. For these free-text answers Iā€™ve manually categorised them so that we can see some trends, and the raw data is not shared in order to protect the privacy of the participants.

First weā€™ll go over the numerical data, and after that Iā€™ll outline common trends in the free-text answers.

Whatā€™s your job role?

  1. Engineer
    448
  2. Student
    81
  3. CTO
    36
  4. Other non-technical
    36
  5. Tech Lead
    31
  6. Staff Engineer
    25
  7. Principal Engineer
    23
  8. Software Architect
    21
  9. Head of Engineering
    18
  10. Other C-level executive
    17
  11. System administrator
    8
  12. Hardware Engineer
    7
  13. Researcher
    7
  14. Educator
    6
  15. Engineering Manager
    4
  16. Designer
    3
  17. ML Engineer
    2
  18. QA
    2
  19. Data Scientist
    1

What country are you from?

  1. USA
    191
  2. Germany
    77
  3. The United Kingdom
    56
  4. Canada
    37
  5. France
    36
  6. Brazil
    28
  7. Sweden
    26
  8. Spain
    23
  9. Australia
    22
  10. Denmark
    19
  11. India
    18
  12. Japan
    15
  13. The Netherlands
    15
  14. Norway
    14
  15. Poland
    14
  16. The Russian Federation
    12
  17. Belgium
    11
  18. Italy
    10
  19. New Zealand
    10
  20. Mexico
    9
  21. Austria
    8
  22. China
    8
  23. Argentina
    7
  24. Portugal
    7
  25. South Africa
    7
  26. Switzerland
    7
  27. Ukraine
    7
  28. Greece
    6
  29. Indonesia
    6
  30. Czechia
    5
  31. Estonia
    5
  32. Finland
    5
  33. Ireland
    5
  34. The Republic of Korea
    5
  35. Bangladesh
    4
  36. Kenya
    4
  37. Singapore
    4
  38. Other
    55

Gleam folks are all around the world! London and Paris have active Gleam meet-ups, hopefully other top countries such as Germany and USA will start similar community groups in the near future.

Are you a Gleam user?

  1. Yes
    632
  2. Not currently
    173

The survey was open to everyone with any interest in Gleam, rather than just experienced users. Around three quarters of respondents are using Gleam, which is a great indicator of adoption in the languageā€™s first year.

Are you using Gleam in production?

  1. Not yet
    572
  2. Yes
    52

Around 8% of people of respondents have got Gleam into production, despite the language being less than a year old! Encouraging and enabling production use is one of our primary goals presently, so this result is very satisfying, and I hope the trend continues.

Does your organisation sponsor Gleam? (just production users)

  1. No
    37
  2. Yes
    1

We have had much less success getting sponsorship from corporate users. This is disappointing as everyone benefits from dependencies being well maintained and sufficiently funded. The silver lining is that our lack of success here implies that there is more money on the table, and if we find some other method that works better for corporate users then we may be able to substantially increase project funding.

How large is your organisation

  1. No organisation
    124
  2. 1 to 10
    143
  3. 11 to 50
    129
  4. 51 to 100
    88
  5. 101 to 500
    96
  6. 501 to 2000
    90
  7. More than 2001
    108

Just production Gleam users

  1. No organisation
    10
  2. 1 to 10
    15
  3. 11 to 50
    6
  4. 51 to 100
    7
  5. 101 to 500
    4
  6. 501 to 2000
    4
  7. More than 2001
    3

Production users of Gleam are more likely to be in smaller organisations. This likely is due to larger organisations being more risk-averse than smaller ones, and Gleam not yet had time to build a reputation as being a strong and reliable foundation for a technology project.

Where do you get your Gleam news from?

  1. The Gleam Discord
    238
  2. gleam.run
    197
  3. Gleam Weekly
    193
  4. reddit
    147
  5. Twitter
    124
  6. lobste.rs
    82
  7. GitHub
    77
  8. Bluesky
    74
  9. YouTube
    58
  10. Hacker News
    57
  11. Discord
    34
  12. The Fediverse
    24
  13. Elixir Forum
    16
  14. LinkedIn
    6
  15. daily.dev
    6
  16. Other websites
    5
  17. Word of mouth
    5
  18. Kirakira
    3
  19. Conferences
    1
  20. Podcasts
    1
  21. Twitch
    1

The Gleam Discord server continues to be the place-to-be in the Gleam community. Gleam Weekly and reddit have grown a lot since v1.0.0, providing two good options for folks who do not have the desire or the time to participate in a busy chat server.

How much professional programming experience do you have?

  1. 0 to 4 years
    253
  2. 5 to 9 years
    242
  3. 10 to 14 years
    136
  4. 15 to 19 years
    75
  5. 20 to 24 years
    74
  6. 25 to 29 years
    26
  7. 30 to 34 years
    13
  8. 35 to 39 years
    6
  9. 40 to 44 years
    2
  10. 45 to 50 years
    2

How much Gleam experience do you have?

  1. Less than 1 year
    290
  2. 1 year
    293
  3. 2 years
    32
  4. 3 years
    10
  5. 4 years
    6
  6. 5 years
    1
  7. 6 years
    3

Some folks have been using Gleam since way before v1.0.0! Thank you for staying with Gleam for so long! I think I can guess who these people are. šŸ˜

What Gleam compilation targets do you use?

  1. Erlang
    571
  2. JavaScript
    297
  3. Unsure
    29

Sometimes people think that Gleamā€™s JavaScript target is an afterthought or somehow less important, but it is used a lot. It is also interesting to see how some folks donā€™t know what target they are using. I think this shows how the Gleam tooling does a good job of letting you get started without having to learn lots about the surrounding ecosystem, but perhaps we could do better at education in some fashion here.

Just production Gleam users

  1. Erlang
    48
  2. JavaScript
    35

Among production uses Gleamā€™s JavaScript target is even more widely used, likely for web frontends. Note that these are not distinct groups, many respondents will have picked both.

What runtimes do you use to run your Gleam code?

  1. BEAM
    545
  2. Web browsers
    228
  3. NodeJS
    134
  4. Deno
    69
  5. Bun
    47
  6. Unsure
    31
  7. AtomVM
    7

Predictably the Erlang VM (the BEAM) is the most widely used runtime, but weā€™ve also got a few folks using AtomVM, an alternative Erlang runtime optimised for resource constrained environments. It would be good to have better support for this runtime in the Gleam toolchain.

Just production Gleam users

  1. BEAM
    48
  2. Web browsers
    32
  3. NodeJS
    14
  4. Deno
    8
  5. Bun
    3

What operating system do you use in development?

  1. Linux
    559
  2. macOS
    458
  3. Windows
    213
  4. Android
    43
  5. iOS
    42
  6. FreeBSD
    17
  7. OpenBSD
    9
  8. ChromeOS
    1
  9. Embedded
    1
  10. Illumos
    1

A strong showing from the usual suspects, and good to see some more uncommon operating systems in there too. Windows being so common is a good reminder of the importance of having good Windows support. Itā€™s vital that we donā€™t leave that huge portion of potential users behind and limit Gleamā€™s growth.

What operating system do you use in production?

  1. Linux
    731
  2. Windows
    134
  3. macOS
    68
  4. Android
    57
  5. iOS
    49
  6. FreeBSD
    21
  7. OpenBSD
    10
  8. ChromeOS
    1
  9. Illumos
    1
  10. QNX
    1

The BSDs showing quite strongly here too! It would be great for the Gleam project to be able to run the tests on and provide binaries for FreeBSD and OpenBSD, but unfortunately our CI system, GitHub Actions, does not support them.

Some people put platforms such as ā€œAWS Lambdaā€ or ā€œKubernetesā€ as their operating system here. Iā€™ve largely put these within the ā€œLinuxā€ category.

What sort of projects do you make with Gleam?

  1. Applications
    574
  2. Libraries
    200

Itā€™s wonderful to see so many people making applications! People tend to share or publicise libraries more than applications, so we donā€™t get to see as many of them as we would like. This year we hope to devise some ways to encourage people to share applications, thereā€™s a lot we can learn from studying them.

Do you use Gleam for open source development?

  1. No
    311
  2. Yes
    309

Itā€™s great to see so many people using Gleam for open-source. Gleam is a community project, so we greatly benefit from people making and sharing via open source.

Do you sponsor Gleam?

  1. No
    655
  2. Yes
    146

Just production Gleam users

  1. No
    39
  2. Yes
    11

Itā€™s great to see so many people sponsoring Gleam! All the funding for the project comes from sponsorship rather than a corporate owner. This gives us more freedom to make Gleam the best language possible, and removes the risk of the project falling victim to changes in business priorities, but means we have less funding overall. Having a good amount of sponsorship is vital and we hope to continue to grow it so all the core team can be paid appropriately.

What other languages do you use?

  1. TypeScript
    385
  2. JavaScript
    338
  3. Python
    314
  4. Rust
    243
  5. Go
    230
  6. Elixir
    158
  7. Java
    129
  8. C#
    100
  9. PHP
    81
  10. Bash
    80
  11. Ruby
    77
  12. C
    58
  13. Kotlin
    53
  14. Elm
    49
  15. C++
    41
  16. Haskell
    40
  17. Lua
    40
  18. OCaml
    34
  19. Zig
    34
  20. Erlang
    32
  21. POSIX Shell
    29
  22. Swift
    27
  23. Dart
    26
  24. Scala
    23
  25. F#
    22
  26. Clojure
    21
  27. SQL
    20
  28. ReScript
    12
  29. R
    10
  30. Crystal
    9
  31. GDScript
    9
  32. Julia
    9
  33. Nix
    8
  34. Racket
    8
  35. Lisp
    6
  36. Odin
    6
  37. Prolog
    6
  38. Nim
    5
  39. PowerShell
    5
  40. PureScript
    5
  41. Assembly
    4
  42. Nushell
    4
  43. AWK
    3
  44. Groovy
    3
  45. Idris
    3
  46. Lean
    3
  47. MATLAB
    3
  48. Perl
    3
  49. Tcl
    3
  50. Common Lisp
    2
  51. Fennel
    2
  52. Mercury
    2
  53. Mumps
    2
  54. Pony
    2
  55. Unison
    2
  56. V
    2
  57. ABAP
    1
  58. Agda
    1
  59. AssemblyScript
    1
  60. BASIC
    1
  61. BQN
    1
  62. CUDA
    1
  63. Coq
    1
  64. D
    1
  65. Delphi
    1
  66. EYG
    1
  67. Fish
    1
  68. Flix
    1
  69. Janet
    1
  70. Mint
    1
  71. Objective-C
    1
  72. PSL
    1
  73. Roc
    1
  74. SAS
    1
  75. Scheme
    1
  76. StandardML
    1
  77. SystemVerilog
    1
  78. Terraform
    1
  79. Typst
    1
  80. Visual Basic
    1

Wow, what a lot of different languages! A common misconception is that Gleam in some way competes with Erlang and Elixir, and draws programmers from those communities. This is not the case! People who enjoy the dynamic and expressive styles of those languages tend not to gel quite as well as the much stricter and type-directed style of Gleam.

  1. Other
    2639
  2. Erlang and Elixir
    190

With the answers broken down into Erlang and Elixir vs others this can be seen more easily. Gleam folk overwhelmingly come from other ecosystems, often ones that already use static types.

Free text responses

It took a long time to read all the various messages submitted to the survey. Overwhelmingly everyone was very supportive, and we didnā€™t have any trolls or similar. Hereā€™s some of the common themes in the messages:

Easier JSON decoding

Gleam is a sound statically typed language, so when data comes in from the outside work it needs to be converted into well typed data before it can be used. This is done using dynamic decoders. The original API for these could be challenging to work with at times, and the survey responses highlighted it as a sore spot in the Gleam developer experience.

Since the survey we have completely redesigned this API, making it much easier to use and also removing some of the limitations people would get stuck on. The language server has also gained a code action to generate decoders for you from type definitions.

OTP actor framework improvements

Gleam is part of the BEAM language, so it makes use of the OTP actor application framework. One can use the regular Erlang implementation, but there is also a library called gleam_otp which provides a type safe version of the same concepts and protocols, while maintaining compatibility.

gleam_otp is somewhat minimal and respondents wanted it to be expanded, which we intend to do over the next year.

Language server renaming

Gleamā€™s language server provides IDE-like features to all text editors that support the language server protocol, which is most mainstream editors. At the time of the survey it lacked support for the ā€œrenameā€ feature, so Gleam programmers would have to rename things manually.

We agree this is a missing piece and is highly sought after. Renaming of arguments and local variables has been added recently, and we intend to continue to add more renaming functionality.

Macros and metaprogramming

Several respondents expressed a desire for macros or metaprogramming, though rarely did it include any details of what that might mean or any justification as to why it should be added. Metaprogramming is a lot of fun in many languages, so it is understandable that people would want their favourite type of metaprogramming in Gleam, but we need a more detailed proposal before we can move forward with any language editions, especially one so large in scope. This blog post details what this proposal process needs to look like.

Documentation

People like the current documentation but they want more! I agree, this is very important. Help with making applications and getting them into production was especially highlighted. Documentation and production is one of my main priorities for 2025.

Video content was especially in-demand. I intend to experiment with some video guides for key areas of the Gleam ecosystem.

Compilation to a single binary

This would be a cool feature to have, but we donā€™t have any particular plans to do this at present. Perhaps one day!

Easier installation of Erlang and rebar3

Installing Gleam is easy, but installing Erlang and rebar3 (Erlangā€™s build tool) can be difficult, especially as they are not distributed together (making version mismatches possible) and Debian and Fedora both currently have Erlang packages which are incomplete and can fail to compile simple Erlang programs.

This is a wider problem in the BEAM ecosystem and we are collectively working on making it easier to install these dependencies.

Libraries

Some people want websocket support in the Wisp web framework and stabilisation of the core libraries, both of which are planned for this year.

The lack of a core time library was highlighted as making it unclear how best to work with time. This week the official gleam_time library has been published to resolve this issue.

Some people want a much larger standard library. This is not something we intend to do as we believe a ā€œbatteries includedā€ standard library is a relic of times before effective package management, and today it is more practical to have a selection of well maintained packages that all work together but can be upgraded or replaced independently than to have one monolithic library where the majority of the code is unused or discouraged.

A convention based backend web framework in the style of Rails, Django, or Phoenix was a not-uncommon request. This is not something the core team has any plans to work on, but perhaps the community will produce such a project!

The end

And thatā€™s all! Once again thank you to everyone who took the time to fill out the survey, it has been a great help. See you next year!