Ir al contenido principal

This is my blog, more about me at marianoguerra.github.io

🦋 @marianoguerra.org 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

State of the BEAM 2017: Survey Results

Intro

You can't improve what you don't measure, and since I think there are areas in the BEAM community (Erlang, Elixir, LFE, Efene, Alpaca, Clojerl et al.) to improve we need to have a better picture of it.

That's why some months ago I decided to create this survey, I told to some people and started researching other "State of the X Community" yearly surveys, I wrote some draft questions and published to some people for feedback, after a couple of rounds I made a Form and ran a test survey for more feedback, after a couple dozen answers I cleared the results and announced it publicly with a weakly reminder on multiple channels.

Result Analysis

We got 423 Responses up to this point.

I present the results of the State of the BEAM Survey 2017 here in two ways:

  • Bar charts sorted by most answers to less

    • On questions with many answers I make a cut at some point

  • Raw data tables sorted by most answers to less

    • Here I did some consolidation of answers to avoid making them too large

I was thinking on doing a deep analysis on the answers but later I realized that if I did an analysis many people would read mine and avoid analyzing it themselves in detail.

Instead I decided to open an analysis thread in some forum and later maybe summarize the most interesting comments.

To ease the discussion I will do some light observations where I see it makes sense and make some questions to open the discussion.

Before diving into the result I want to make explicit two things that may make the results less representative than they should:

1. The "Elixir Effect"

I think the Elixir community is bigger or at least more active than the rest of the BEAM community, because of that and the fact that Elixir already has its own survey, I decided not to promote this survey there, to avoid the number of Elixir specific answers to skew the results and make this survey just be yet another Elixir survey with some BEAMers also replying.

With this clarification, and looking at the answers, I can identify some answers that are from Elixir-only developers, you can see that when some Elixir specific tools appear in the answers (Mix, ExUnit, Distillery, deploy to Heroku etc.), just keep that in mind when analyzing the results.

2. The "Survivorship Bias Effect"

From the wikipedia article on Survivorship bias

Survivorship bias or survival bias is the logical error of concentrating on the people or things that made it past some selection process and overlooking those that did not, typically because of their lack of visibility. This can lead to false conclusions in several different ways. It is a form of selection bias.

Survivorship bias can lead to overly optimistic beliefs because failures are ignored, such as when companies that no longer exist are excluded from analyses of financial performance.

/galleries/state-of-beam-2017/Survivorship-bias.png

The damaged portions of returning planes show locations where they can take a hit and still return home safely; those hit in other places do not survive.

This survey is done on people that wanted to learn Erlang, learned it, and are still active enough on the community to see the survey announcement.

This means that the answers are from the ones that "survived", which makes it really hard to get good feedback on the bad parts of the language, tooling and community since the most affected by it aren't going to stay around to fill this survey.

How to reach those? I don't know, propose solutions on the discussion.

I forgot to ask if I could make public the name of the companies so I won't, but I can say that I got 202 responses and most of them are not duplicates.

Things to improve for next year

  • Ask users if they want their answers available to be distributed in raw form for others to analyze

  • Ask users if I can share publicly the name of the company where they use Erlang

  • Decide what to do about Elixir-only replies, maybe make a question about it

  • Make specific questions regarding better tooling

  • I forgot Russia and Central America options, maybe next time do Latin America?

Let's see the results!

Which languages of the BEAM do you use?

/galleries/state-of-beam-2017/lang.png

Clearly Erlang is the most used language, ignoring the Elixir Effect, I'm kind of disappointed by the lack of users trying alternative languages. More so given the fact that many of the complaints or requests in other questions are already solved by other languages in the ecosystem, for example "better macros" or lisp inspired features being solved by LFE, static/stronger typing or better static analysis being solved by Alpaca, Elixir's pipe operator and a more mainstream syntax being solved by Efene.

My advice to the community, try the other languages, blog/tweet about it and share feedback with their creators, there's a language for each taste!

Erlang

326

54.42%

Elixir

231

38.56%

LFE

14

2.34%

Luerl

12

2.00%

Alpaca

9

1.50%

Clojerl

4

0.67%

Erlog

1

0.17%

Efene

1

0.17%

PHP

1

0.17%

How would you characterize your use of BEAM Languages today?

/galleries/state-of-beam-2017/use.png

Many people using it for serious stuff, the Open Source answer is really low here but is contradicted by another answer below.

I think I should add another option for something like "experiments", "try new ideas".

I use it at work

327

48.66%

I use it for serious "hobby" projects

245

36.46%

I'm just tinkering

62

9.23%

I use it for my studies

35

5.21%

Learning

1

0.15%

katas

1

0.15%

Open Source Software

1

0.15%

In which domains are you applying it?

/galleries/state-of-beam-2017/domains.png

Distributed Systems

225

15.20%

Web development

214

14.46%

Building and delivering commercial services

172

11.62%

Open source projects

149

10.07%

Network programming

136

9.19%

Enterprise apps

92

6.22%

Databases

80

5.41%

IoT / home automation / physical computing

75

5.07%

System administration / dev ops

60

4.05%

Big Data

51

3.45%

Mobile app development (non-web)

46

3.11%

Research

33

2.23%

AI / NLP / machine learning

28

1.89%

Games

28

1.89%

Math / data analysis

23

1.55%

Scientific computing / simulations / data visualization

21

1.42%

Desktop apps

14

0.95%

Graphics / Art

4

0.27%

Music

3

0.20%

Industrial Automation

2

0.14%

log system

1

0.07%

videostreaming

1

0.07%

soft real time analytics

1

0.07%

Security Event Processing

1

0.07%

Media encoding and distribution

1

0.07%

Ad delivery

1

0.07%

Telecom Apps

1

0.07%

telecom and chat

1

0.07%

video

1

0.07%

Developer Tooling

1

0.07%

Telecommunications

1

0.07%

embedded systems

1

0.07%

Advertising/RTB

1

0.07%

Prototyping network apps

1

0.07%

Real time systems

1

0.07%

Real-Time Bidding

1

0.07%

Instant messaging / VoIP / Communications

1

0.07%

ad traffic management

1

0.07%

REST/GraphQL API

1

0.07%

Test systems

1

0.07%

Learning

1

0.07%

telecommunications

1

0.07%

VoIP

1

0.07%

Code static analysis

1

0.07%

What industry or industries do you develop for?

/galleries/state-of-beam-2017/industries.png

Enterprise software

117

15.04%

Communications / Networking

103

13.24%

Consumer software

85

10.93%

IT / Cloud Provider

83

10.67%

Financial services / FinTech

69

8.87%

Telecom

67

8.61%

Media / Advertising

46

5.91%

Retail / ecommerce

41

5.27%

Academic

29

3.73%

Healthcare

28

3.60%

Education

26

3.34%

Government / Military

22

2.83%

Scientific

16

2.06%

Legal Tech

6

0.77%

Energy

5

0.64%

Gaming

2

0.26%

HR

2

0.26%

Security

2

0.26%

Logistics

2

0.26%

sports/fitness

1

0.13%

Retired

1

0.13%

Sport

1

0.13%

Business Intelligence

1

0.13%

Telematics / Car industry

1

0.13%

Manufacturing / Automotive

1

0.13%

Cultural/Museum

1

0.13%

Utilities

1

0.13%

Open source

1

0.13%

Travel

1

0.13%

Sport analysis

1

0.13%

Fitness

1

0.13%

Online Games

1

0.13%

Automotive

1

0.13%

Marketing

1

0.13%

Real estate

1

0.13%

Consumer electronics

1

0.13%

Non profit

1

0.13%

Client driven

1

0.13%

Industrial IoT

1

0.13%

Electric utility

1

0.13%

SaaS

1

0.13%

Automobile

1

0.13%

energy sector

1

0.13%

utilities

1

0.13%

Recruitment

1

0.13%

Energetics

1

0.13%

How long have you been using Erlang?

/galleries/state-of-beam-2017/howlong.png

The entrants (1 year or less) being less than 2 and 3 years may be discouraging or maybe as a sign that this survey didn't reach as many newcomers as it should.

> 6 Years

116

27.62%

2 Years

76

18.10%

3 Years

58

13.81%

1 Year

52

12.38%

Less than a year

45

10.71%

5 Years

36

8.57%

4 Years

34

8.10%

I've stopped using it

3

0.71%

What's your age

/galleries/state-of-beam-2017/age.png

Similar to the previous one, the survey shows that we are not interesting to young programmers (or this survey is not interesting to them :)

30-40

179

42.42%

20-30

112

26.54%

40-50

93

22.04%

> 50

31

7.35%

< 20

7

1.66%

What's your gender

/galleries/state-of-beam-2017/gender.png

One I was expecting, but bad nonetheless.

Male

401

95.02%

Prefer not to say

15

3.55%

Female

5

1.18%

attack helicopter

1

0.24%

Where are you located?

/galleries/state-of-beam-2017/location.png

North America

127

30.09%

Western Europe

117

27.73%

Eastern Europe

42

9.95%

Northern Europe

39

9.24%

South America

30

7.11%

Asia

25

5.92%

Oceania

11

2.61%

Russia

7

1.66%

India

6

1.42%

China

6

1.42%

South Saharan Afica

3

0.71%

Middle East

2

0.47%

Europe

1

0.24%

Iran

1

0.24%

Central America

1

0.24%

Australia

1

0.24%

Thailand

1

0.24%

East Africa

1

0.24%

Central Europe

1

0.24%

What is your level of experience with functional programming?

/galleries/state-of-beam-2017/fpexp.png

7 answers got the joke or are really awesome programmers :)

/galleries/state-of-beam-2017/profunctor.jpg

Intermediate

202

48.44%

Advanced

148

35.49%

Beginner

57

13.67%

Profunctor Optics Level

7

1.68%

None

3

0.72%

Prior to using Erlang, which were your primary development languages?

/galleries/state-of-beam-2017/prevlang.png

C or C++

163

14.75%

Python

145

13.12%

Javascript

144

13.03%

Ruby

138

12.49%

Java

135

12.22%

PHP

72

6.52%

C#

56

5.07%

Perl

46

4.16%

Go

26

2.35%

Haskell

25

2.26%

Swift or Objective-C

24

2.17%

Common Lisp

20

1.81%

Scala

20

1.81%

Scheme or Racket

14

1.27%

Visual Basic

11

1.00%

Clojure

8

0.72%

R

8

0.72%

Rust

7

0.63%

None

6

0.54%

OCaml

3

0.27%

F#

3

0.27%

Kotlin

2

0.18%

Standard ML

2

0.18%

Fortran

2

0.18%

Pascal

1

0.09%

Ocaml

1

0.09%

KDB

1

0.09%

so "primary" here for me is "what was most used at work"

1

0.09%

TypeScript

1

0.09%

Microsoft Access

1

0.09%

Groovy

1

0.09%

but I am a self-proclaimed polyglot

1

0.09%

Shell

1

0.09%

Tcl/Tk

1

0.09%

Limbo

1

0.09%

Smalltalk

1

0.09%

clojure

1

0.09%

ActionScript

1

0.09%

Actionscript

1

0.09%

Prolog

1

0.09%

Racket

1

0.09%

Bash

1

0.09%

ML

1

0.09%

TCL

1

0.09%

Elixir

1

0.09%

C ANSI POSIX

1

0.09%

D

1

0.09%

ocaml

1

0.09%

Assembly

1

0.09%

Which client-side language are you using with Erlang?

/galleries/state-of-beam-2017/clientlang.png

Javascript

257

44.93%

None

90

15.73%

Elm

69

12.06%

Java

36

6.29%

Swift/Objective-C

36

6.29%

Clojurescript

13

2.27%

ReasonML/Ocaml

10

1.75%

Kotlin

8

1.40%

Typescript

7

1.22%

Scala

7

1.22%

Purescript

6

1.05%

C++

4

0.70%

TypeScript

3

0.52%

Go

2

0.35%

typescript

2

0.35%

Python

2

0.35%

Erlang

2

0.35%

Flow + Javascript

1

0.17%

HTML-CSS

1

0.17%

Haskell

1

0.17%

What do you mean by "client-side language"?

1

0.17%

other

1

0.17%

Action Script 3

1

0.17%

Coffeescript

1

0.17%

d3.js

1

0.17%

lua

1

0.17%

Python/PyQt

1

0.17%

Dart

1

0.17%

Golang

1

0.17%

Ruby

1

0.17%

M$ C#

1

0.17%

Python (interface to legacy system - not web based)

1

0.17%

clojure

1

0.17%

C#

1

0.17%

Tcl/Tk

1

0.17%

In your Erlang projects, do you interoperate with other languages? if so, which ones?

/galleries/state-of-beam-2017/interop.png

C or C++

156

24.19%

None

92

14.26%

Python

87

13.49%

Javascript

72

11.16%

Java

51

7.91%

Ruby

37

5.74%

Rust

27

4.19%

Go

27

4.19%

Swift or Objective-C

14

2.17%

C#

12

1.86%

Scala

11

1.71%

PHP

9

1.40%

Perl

8

1.24%

R

8

1.24%

Haskell

6

0.93%

Common Lisp

4

0.62%

Clojure

3

0.47%

OCaml

3

0.47%

Elixir

2

0.31%

Scheme or Racket

2

0.31%

Bash

2

0.31%

Kotlin

1

0.16%

KDB

1

0.16%

I use Erlang from Elixir

1

0.16%

lua

1

0.16%

SQL

1

0.16%

java

1

0.16%

Ocaml

1

0.16%

go

1

0.16%

Not directly via NIFs/ports but via HTTP/rabbit with ruby

1

0.16%

Tcl/Tk

1

0.16%

Lua

1

0.16%

python

1

0.16%

Which is your primary development environment?

/galleries/state-of-beam-2017/editor.png

I thought Emacs would win here by the fact that the Erlang creators use Emacs.

Vim

116

27.49%

Emacs

114

27.01%

IntelliJ

47

11.14%

Visual Studio Code

47

11.14%

Sublime Text

39

9.24%

Atom

32

7.58%

Eclipse

6

1.42%

spacemacs

2

0.47%

nano

2

0.47%

linux with vim as my text editor

1

0.24%

Kate

1

0.24%

textmate

1

0.24%

TextPad

1

0.24%

Simple text editor

1

0.24%

Notepad++

1

0.24%

Also nvi.

1

0.24%

mcedit

1

0.24%

PSPad

1

0.24%

geany with erlang syntax support

1

0.24%

Kakoune

1

0.24%

Neovim

1

0.24%

Acme

1

0.24%

Spacemacs

1

0.24%

Atom and Emacs both very equally

1

0.24%

ed

1

0.24%

elvis

1

0.24%

Where do you go for Erlang news and discussions?

/galleries/state-of-beam-2017/news.png

Twitter

204

20.20%

Mailing List

188

18.61%

Slack

116

11.49%

Reddit

111

10.99%

Stack Overflow

103

10.20%

IRC

62

6.14%

Erlang Central

60

5.94%

Newsletters

50

4.95%

Podcasts

33

3.27%

Planet Erlang

31

3.07%

ElixirForum

31

3.07%

Elixir Community

1

0.10%

lobste.rs

1

0.10%

EUC

1

0.10%

Reddit and ElixirForum

1

0.10%

This week in Erlang

1

0.10%

Gitter

1

0.10%

Awesome Elixir

1

0.10%

OTP's github for PRs and commit log

1

0.10%

elixirstatus.com

1

0.10%

Google Plus

1

0.10%

youtube

1

0.10%

Search on github

1

0.10%

Erlang solutions

1

0.10%

not interesting

1

0.10%

Medium

1

0.10%

None

1

0.10%

Watch talks

1

0.10%

Conference Videos

1

0.10%

Elixir Sips

1

0.10%

https://medium.com/@gootik

1

0.10%

https://lobste.rs/t/erlang

1

0.10%

Which versions of the Erlang VM do you currently use for development?

/galleries/state-of-beam-2017/versiondev.png

We are really up to date, we are near a point where we can assume maps on our libraries :)

20

305

46.71%

19

213

32.62%

18

84

12.86%

17

30

4.59%

16

16

2.45%

<= 15

5

0.77%

Which versions of the Erlang VM do you currently use in production?

/galleries/state-of-beam-2017/versiondeploy.png

Of course production is a little more conservative

19

215

37.65%

20

183

32.05%

18

94

16.46%

17

43

7.53%

16

26

4.55%

<= 15

10

1.75%

Which build tool do you use?

/galleries/state-of-beam-2017/buildtool.png

Nice to see Rebar3 picking up momentum, Mix being mainly the Elixir Effect, next year I should add an option for "Mix for erlang or mixed projects".

Rebar3

220

32.59%

Mix

177

26.22%

Makefile

111

16.44%

Rebar

71

10.52%

erlang.mk

46

6.81%

Custom build scripts

44

6.52%

Distillery

1

0.15%

maven

1

0.15%

redo

1

0.15%

mix

1

0.15%

synrc/mad

1

0.15%

MBU

1

0.15%

How do you test your code?

/galleries/state-of-beam-2017/howtest.png

Surprised by EUnit being on top, why do people prefer it over Common Test?

EUnit

216

34.67%

Common Test

158

25.36%

ExUnit

74

11.88%

PropEr

69

11.08%

I don't write tests

45

7.22%

QuickCheck

33

5.30%

Custom

4

0.64%

Triq

4

0.64%

ESpec

3

0.48%

CutEr

3

0.48%

StreamData

2

0.32%

Lux

2

0.32%

py.test

2

0.32%

Functional tests

1

0.16%

Don't have time to write tests

1

0.16%

katana-test

1

0.16%

riak_test

1

0.16%

Dialyzer

1

0.16%

Integration tests

1

0.16%

Elixir tests.

1

0.16%

Concuerror

1

0.16%

How do you deploy your application?

/galleries/state-of-beam-2017/howdeploy.png

Lot of custom deploy scripts and docker/kubernetes here, maybe we should have better deploy support in our tools?

Custom deploy scripts

186

32.75%

Docker

128

22.54%

Kubernetes

50

8.80%

Ansible

44

7.75%

I don't deploy in other servers

40

7.04%

Chef

39

6.87%

Puppet

11

1.94%

SaltStack

11

1.94%

Heroku

11

1.94%

Edeliver

8

1.41%

deb

7

1.23%

Distillery

7

1.23%

Zones

5

0.88%

AWS CodeDeploy

3

0.53%

Rancher

1

0.18%

VM image

1

0.18%

boot from flash

1

0.18%

https://github.com/labzero/bootleg2

1

0.18%

Not my job

1

0.18%

copy paste

1

0.18%

mad

1

0.18%

CD

1

0.18%

Exrm

1

0.18%

rpm

1

0.18%

Nomad

1

0.18%

AWS ECS

1

0.18%

FreeBSD Jails

1

0.18%

lxc

1

0.18%

WIX

1

0.18%

os packages

1

0.18%

nanobox

1

0.18%

cloudfoundry

1

0.18%

What is your organization's size?

/galleries/state-of-beam-2017/orgsize.png

Can we say that Erlang works on organizations of any size?

11-50

109

26.20%

2-10

93

22.36%

Just me

75

18.03%

500+

65

15.62%

101-500

45

10.82%

51-100

29

6.97%

Which operating system(s) you use for development?

/galleries/state-of-beam-2017/osdev.png

Almost same amount of Windows and FreeBSD, is it because Windows support is bad? or is this a reflection of the usual developer OS choice in any programming language?

Linux

307

47.01%

MacOS

253

38.74%

Windows

38

5.82%

FreeBSD

34

5.21%

Illumos

8

1.23%

OpenBSD

7

1.07%

Solaris

3

0.46%

NetBSD

1

0.15%

GRiSP

1

0.15%

ChromeOS

1

0.15%

Which operating system(s) you use for deployment?

/galleries/state-of-beam-2017/osdeploy.png

Linux

378

75.15%

FreeBSD

43

8.55%

MacOS

25

4.97%

Windows

22

4.37%

I don't deploy in other servers

11

2.19%

Solaris

9

1.79%

Illumos

8

1.59%

OpenBSD

3

0.60%

RTEMS

1

0.20%

GRiSP

1

0.20%

OSv

1

0.20%

NetBSD

1

0.20%

Where do you deploy your applications?

/galleries/state-of-beam-2017/wheredeploy.png

I don't think this question provides useful information, maybe I should add options?

Public Cloud

188

27.85%

Use on local machine(s)

162

24.00%

Traditional Infrastructure

157

23.26%

Private Cloud (or hybrid)

156

23.11%

Distillery

1

0.15%

VMs on ESXi

1

0.15%

embedded systems

1

0.15%

Rented physical server

1

0.15%

Vagrant vms

1

0.15%

Embedded appliances

1

0.15%

Heroku

1

0.15%

VPS

1

0.15%

hyper.sh

1

0.15%

Containers (Docker)

1

0.15%

Edeliver

1

0.15%

GitHub

1

0.15%

Which events have you attended in the last year?

/galleries/state-of-beam-2017/events.png

Local Meetups at the top is a nice one, we can work to promote more of these.

Local Meetup

124

46.97%

Erlang Factory

39

14.77%

Erlang User Conference

38

14.39%

Erlang Factory Light

20

7.58%

ElixirConf

12

4.55%

ElixirConfEU

9

3.41%

None

6

2.27%

Lonestar Elixir

3

1.14%

Code Mesh

2

0.76%

Lambda Days

1

0.38%

ElixirConfEU + ElixirLDN

1

0.38%

ElixirConf USA 2017

1

0.38%

Elixir London

1

0.38%

ElixirConf 2017

1

0.38%

Elixir meetup in Leeds UK

1

0.38%

ElixirLive Conference in Warsaw

1

0.38%

J on the Beach

1

0.38%

Peer gatherings in region

1

0.38%

Empex

1

0.38%

Elixir Camp

1

0.38%

Do you use HiPE?

No

301

74.32%

Yes

104

25.68%

Do you use dialyzer?

Yes

280

66.99%

No

138

33.01%

How important have each of these aspects of Erlang been to you and your projects?

Remember that charts and tables are sorted by most to less answers to compare correctly in the following set of questions.

Community

/galleries/state-of-beam-2017/ocommunity.png

Very Important

157

37.74%

Fairly Important

112

26.92%

Important

79

18.99%

Slightly Important

52

12.50%

No Opinion

8

1.92%

Not Important at All

8

1.92%

Concurrency facilities

/galleries/state-of-beam-2017/oconcurrency.png

Very Important

306

73.73%

Fairly Important

58

13.98%

Important

36

8.67%

No Opinion

7

1.69%

Slightly Important

7

1.69%

Not Important at All

1

0.24%

Ease of development

/galleries/state-of-beam-2017/oeasedev.png

Very Important

205

49.52%

Fairly Important

98

23.67%

Important

72

17.39%

Slightly Important

27

6.52%

No Opinion

10

2.42%

Not Important at All

2

0.48%

Functional Programming

/galleries/state-of-beam-2017/ofp.png

Very Important

207

49.88%

Fairly Important

105

25.30%

Important

53

12.77%

Slightly Important

33

7.95%

No Opinion

9

2.17%

Not Important at All

8

1.93%

Immutability

/galleries/state-of-beam-2017/oimmutability.png

Very Important

222

53.62%

Fairly Important

90

21.74%

Important

60

14.49%

Slightly Important

30

7.25%

No Opinion

8

1.93%

Not Important at All

4

0.97%

Runtime performance

/galleries/state-of-beam-2017/operf.png

Very Important

148

35.75%

Fairly Important

122

29.47%

Important

95

22.95%

Slightly Important

36

8.70%

Not Important at All

7

1.69%

No Opinion

6

1.45%

The REPL

/galleries/state-of-beam-2017/orepl.png

Very Important

145

35.02%

Fairly Important

106

25.60%

Important

74

17.87%

Slightly Important

61

14.73%

No Opinion

19

4.59%

Not Important at All

9

2.17%

Tracing

/galleries/state-of-beam-2017/otracing.png

Slightly Important

96

23.02%

Very Important

95

22.78%

Fairly Important

90

21.58%

Important

82

19.66%

Not Important at All

29

6.95%

No Opinion

25

6.00%

What has been most frustrating or has prevented you from using Erlang more than you do now?

App deployment

/galleries/state-of-beam-2017/fappdev.png

Not Frustrating at All

120

30.08%

Slightly Frustrating

93

23.31%

Frustrating

54

13.53%

Fairly Frustrating

41

10.28%

Quite the contrary: I love this feature

38

9.52%

No Opinion

29

7.27%

Very Frustrating

24

6.02%

Error messages

/galleries/state-of-beam-2017/ferrormsgs.png

Slightly Frustrating

119

29.82%

Not Frustrating at All

89

22.31%

Frustrating

48

12.03%

Fairly Frustrating

43

10.78%

Quite the contrary: I love this feature

39

9.77%

Very Frustrating

38

9.52%

No Opinion

23

5.76%

Finding libraries

/galleries/state-of-beam-2017/flibs.png

Slightly Frustrating

137

34.08%

Not Frustrating at All

121

30.10%

Frustrating

64

15.92%

Fairly Frustrating

31

7.71%

Quite the contrary: I love this feature

21

5.22%

Very Frustrating

15

3.73%

No Opinion

13

3.23%

Hard to Learn it

/galleries/state-of-beam-2017/fhardlearn.png

Not Frustrating at All

204

51.13%

Slightly Frustrating

77

19.30%

Quite the contrary: I love this feature

48

12.03%

Frustrating

29

7.27%

No Opinion

21

5.26%

Fairly Frustrating

14

3.51%

Very Frustrating

6

1.50%

Hiring and staffing

/galleries/state-of-beam-2017/fhiring.png

No Opinion

124

31.47%

Slightly Frustrating

78

19.80%

Not Frustrating at All

71

18.02%

Fairly Frustrating

43

10.91%

Frustrating

41

10.41%

Very Frustrating

25

6.35%

Quite the contrary: I love this feature

12

3.05%

Installation process

/galleries/state-of-beam-2017/finstallation.png

Not Frustrating at All

218

55.05%

Slightly Frustrating

67

16.92%

Quite the contrary: I love this feature

54

13.64%

Frustrating

23

5.81%

Fairly Frustrating

16

4.04%

No Opinion

14

3.54%

Very Frustrating

4

1.01%

Long term viability

/galleries/state-of-beam-2017/fviability.png

Not Frustrating at All

194

48.87%

Quite the contrary: I love this feature

74

18.64%

Slightly Frustrating

46

11.59%

No Opinion

41

10.33%

Frustrating

28

7.05%

Fairly Frustrating

9

2.27%

Very Frustrating

5

1.26%

Need more docs/tutorials

/galleries/state-of-beam-2017/fdocs.png

Not Frustrating at All

127

32.32%

Slightly Frustrating

124

31.55%

Frustrating

44

11.20%

Fairly Frustrating

37

9.41%

Quite the contrary: I love this feature

22

5.60%

No Opinion

22

5.60%

Very Frustrating

17

4.33%

Need more text editor support/IDEs

/galleries/state-of-beam-2017/fides.png

Not Frustrating at All

168

42.00%

Slightly Frustrating

93

23.25%

Frustrating

39

9.75%

Quite the contrary: I love this feature

32

8.00%

Fairly Frustrating

28

7.00%

Very Frustrating

22

5.50%

No Opinion

18

4.50%

Need more tools

/galleries/state-of-beam-2017/ftools.png

Slightly Frustrating

128

32.16%

Not Frustrating at All

99

24.87%

Frustrating

58

14.57%

Fairly Frustrating

40

10.05%

Very Frustrating

34

8.54%

No Opinion

26

6.53%

Quite the contrary: I love this feature

13

3.27%

No static typing

/galleries/state-of-beam-2017/ftyping.png

Not Frustrating at All

113

28.18%

Slightly Frustrating

105

26.18%

Quite the contrary: I love this feature

63

15.71%

Frustrating

40

9.98%

Fairly Frustrating

34

8.48%

Very Frustrating

25

6.23%

No Opinion

21

5.24%

Release schedule

/galleries/state-of-beam-2017/freleasesched.png

Not Frustrating at All

258

64.99%

Quite the contrary: I love this feature

57

14.36%

No Opinion

43

10.83%

Slightly Frustrating

26

6.55%

Frustrating

9

2.27%

Very Frustrating

2

0.50%

Fairly Frustrating

2

0.50%

Runtime performance

/galleries/state-of-beam-2017/fperformance.png

Not Frustrating at All

185

46.25%

Slightly Frustrating

72

18.00%

Quite the contrary: I love this feature

57

14.25%

Frustrating

32

8.00%

No Opinion

25

6.25%

Fairly Frustrating

17

4.25%

Very Frustrating

12

3.00%

Unpleasant community

/galleries/state-of-beam-2017/fcommunity.png

Not Frustrating at All

224

56.14%

Quite the contrary: I love this feature

79

19.80%

No Opinion

45

11.28%

Slightly Frustrating

26

6.52%

Frustrating

14

3.51%

Very Frustrating

7

1.75%

Fairly Frustrating

4

1.00%

Version incompatibility

/galleries/state-of-beam-2017/fversioncompat.png

Not Frustrating at All

212

53.13%

Slightly Frustrating

84

21.05%

No Opinion

40

10.03%

Quite the contrary: I love this feature

29

7.27%

Frustrating

19

4.76%

Fairly Frustrating

11

2.76%

Very Frustrating

4

1.00%

Any feature you would like to see added to the language?

This was an open ended question, I'm summarizing similar answers here in groups

Static Typing

20

Performance

7

Pipe operator

7

JIT

6

Currying

6

Better GUI lib

5

Better macros

4

Docs in shell

4

Better language interop

4

JSON in stdlib

3

Compile to single binary

3

Namespaces

3

Rebind variables

2

Numeric performance

2

Elixir protocols

2

Language server protocol

2

Non full mesh disterl

2

Consensus implementations in stdlib

2

More than 2 version of same module

2

Atom GC

2

Other answers with one vote:

  • Backward compatibility

  • BEAM on browsers

  • Better binary syntax

  • Better container support

  • Better datetime support

  • Better documentation

  • Better errors

  • Better global registry

  • Better if expression

  • Better map support in mnesia

  • Better ML integration

  • Better module system

  • Better proc_lib

  • Better profiler

  • Better site

  • Better string module

  • Better unicode support

  • Bigger standard library

  • Bring back parameterized modules

  • Cleanup standard library

  • Code change watcher and loader

  • Consistent error return

  • CRDTs

  • Curses version of observer

  • Database drivers/support

  • Early return statement

  • Encrypted inter node communication

  • Erlang leveldb/rocksdb (better DETS)

  • First class records (not as tuples)

  • Function composition

  • IPv6

  • Laziness

  • LLVM based Hipe

  • Map comprehensions

  • Monads

  • More behaviors

  • More Lispy

  • More robust on_load

  • Multi-poll sets

  • Native compilation

  • New logo

  • Numerical/GPU support

  • Orleans

  • Package manager

  • Rational numbers

  • Remove stuff

  • Short circuit folding a list

  • Single file distribution

  • String performance

  • Top-like tool

  • Type checking as you type

  • Type inference

  • WebRTC

  • With expression like Elixir

Any advise on how we can make Erlang more welcoming and easy to use?

This was an open ended question, I'm summarizing similar answers here in groups

Better guides

20

Better documentation

18

Better error messages

13

Better tooling

9

Central/better landing page

4

Better REPL

3

Translated documentation

2

Better libraries

2

Friendlier community

2

Better learning curve

2

Learn from Elixir community

3

IDE support

3

Marketing

2

Searchable docs

2

Throw away legacy

2

Simpler release process

2

Other answers with one vote:

  • A killer app

  • Better tracing tools

  • Better Windows experience

  • Embrace BEAM languages

  • Erlang forum

  • Introductory workshops

  • More conferences

  • More welcoming mailing list

  • Nicer syntax

  • Performance

  • Templates

Would you like to share any frustrating experience?

This was an open ended question, I'm summarizing similar answers here in groups

Bad tooling

6

Lack of libraries, immaturity, not maintained

5

Lack of guides

5

Unwelcome community

4

Lack of strong/static typing

4

Syntax

4

No examples on documentation/in general

3

Bad documentation

3

Mnesia

3

Bad debugging experience

3

Ignoring other languages/communities/feedback

3

Niche language

2

Bad shell

2

No jobs

2

Learning curve

2

Difficulty contributing to the BEAM and OTP

2

Confusing errors

2

Performance

2

Package management

2

Other answers with one vote:

  • Atoms not garbage collected

  • Elitism

  • Flat namespace

  • Hard to hire

  • Lack of features in standard library

  • Lack of language features

  • Not a clear overview of the ecosystem

  • People complaining about syntax

  • String vs binary

  • Upgrades break code