the Web Platform Report 2017

WEB PL AT FORM R EPOR T 2017
INTRO 3
LANGUAGES 12
WEB COMPONENT LIBRARIES 19
Which languages do people use for writing frontend?
Which web component libraries do you start with?
How do you write CSS?
Which web component collections do people use?
Experience
WEBDEV 13 - 14
POLYMER 20
Fun fact
Which desktop browsers do you target?
Who uses Polymer?
Which mobile browsers do you target?
What does Polymer do well?
COMPANIES 6
Top 9 browsers from Nov 2015 to Nov 2016
What do people dislike about Polymer?
Dev Experience
Responsive AppS
Retention
Reasons to build native apps instead of mobile web?
DEMOGRAPHICS 4 - 5
Who are they?
PROGRESSIVE WEB APPS 21 - 22
Who writes PWAs?
What PWA tech do people use?
Target
TESTS, PERFORMANCE, ACCESSIBILITY AND
SECURITY 15 - 16
Companies
Tests
What concerns do people have about web components?
Size
Perf, a11y, security
Frontend
Overall Importance
PROJECTS 7
PWA and Mobile
OTHER COMMENTS 23 - 25
What concerns do people have about web components?
TECH 8 - 9
How often do stacks change?
Decisions
Experience
FRONTEND LIBRARIES 10 - 11
Framework Use
jQuery
UI Library and Framework Use
WEB COMPONENTS 17 - 18
Other comments
Overall
What do people enjoy about developing with web
components?
Experience
At companies
Why web components?
How do people use web components?
What challenges do people face when using web
components?
Here are some interesting full comments
W EB COMP ON EN T S
In fall of 2016, teams from Vaadin, Polymer, and Skate worked
together to find out how people are using web components and
the web platform today.
Web components are a set of specifications for creating reusable
components with HTML, Javascript, and CSS. Web components are
built directly onto the web platform and allow for encapsulation
and interoperability of distinct components.
We designed this survey to gauge interest, expectations, and usage
of web components as they exist today. We believe that web
components are a modern, platform independent way of building
better web apps.
We hope this survey will help inform web components developers,
library owners, and even skeptics on who uses web components
and how they use them.
D EM OGRAPH IC S
Who are they?
In total we received
80%
7%
students
4%
architect
of respondents identified as
professional developers.
851 responses
from a range of companies large and
small, in addition to many students.
6%
hobbyists
Our respondents included:
8 designers
12 managers
10 other
•
•
•
Experience
30%
70%
of respondents reported having 20 or
more years of experience.
FUN FACT
Most used development tools of respondents
70%
50%
50%
50%
of respondents have been at their
current company for less than 2 years.
41%
Atom
38%
Sublime
38%
VS Code
Only 29 respondents said they use
Emacs.
CO M PAN IES
Dev Experience
Bigger companies have more experienced developers (80%
have more than 6 years of experience) compared to startups
(60% have more than 6 years of experience.)
Developers have more than 6 years of experience:
Large companies
80%
Startups
Retention
Larger companies have employees of greater tenure (56%
have been working there for 3 years or more) compared to
startups (35% have been working there for 3 years or more.)
60%
Developers have been working more than 3 years of
current company:
Large companies
56%
Definition: in this study, a startup is a company with
between 1 and 10 employees.
Startups
35%
P ROJ EC TS
Target
Size
There was a completely even split between people working
on internal apps, free public apps, and paid public apps.
Bigger companies tend to have more people working on
their project. (52% of respondents work on a team with more
than 5 people.) On the other hand, 83% of respondents at
smaller companies work on a project with 3 people or fewer.
Companies
36%
64%
At bigger companies, 45% of project take more than 60
person months.
36%
of projects
Bigger companies favor
internal apps
As smaller companies, most of their projects are less than 5
person months.
Frontend
25%
75%
of projects
75%
Smaller companies favor
public (free and paid) apps
80% of respondents say that frontend work is 50% or more
of their projects.
T ECH
How often do stacks change?
55%
of large companies change their frontend
stack only once every few years.
55%
of smaller companies change their
frontend stack at least once a year.
Decisions
In larger companies, most of the decision making comes from
above. Architects, tech lead, or manager make the stack decision
more than 65% of the time. In smaller companies, it’s less than
41% of the time.
NOTICE
•
•
•
Larger companies tend to care more about
aligning with the rest of their company.
Smaller companies tended to want to test new
technology.
All companies cared strongly about extensibility.
Experience
How was the frontend stack of your project chosen?
Why did you change stacks?
(851 responses)
(851 responses)
Wanted to test new technologies
I like to stay on the cutting edge
52.1%
Ease of use
45.6%
Aligned with my company's other projects
39.1%
Ease of extensibility
38.4%
Open source required
36.2%
Low cost
24.8%
Theming options
17.3%
Keeping up with competitors 10.1%
Commercial support available
7.4%
Other
7.4%
60.2%
Stack was no longer supported or maintained
30.7%
Too high a cost for teaching new people
19.7%
Promised features never appeared
14.6%
Changed to align with competitors’ offerings
11%
Acquisition uses a different stack
5.5%
Other
13.6%
F R ON TEN D LI BRA R IES
Frameworks
jQuery
Midsize companies use front-end frameworks about 80% of
the time, versus 70% for other companies.
Midsize companies use jQuery more (34% used jQuery) than
small companies (25% used jQuery) or large companies (28%
used jQuery.)
Front-end framework usage:
Midsize companies
jQuery usage:
Other companies
Midsize companies
34%
20%
80%
of the time
80%
70%
30%
VS
of the time
70%
Large companies
28%
Small companies
25%
UI Library and Framework Use
Which UI libraries do you use?
Which UI frameworks do you use?
(747 responses)
(823 responses)
Polymer Elements 57.8%
No framework
42.4%
Bootstrap 47.9%
jQuery
42.2%
jQuery UI 27.8%
Angular1
24.4%
Vaadin Elements 14.9%
React
21.5%
Foundation 6.8%
Angular2
16%
Semantic UI 2.5%
Backbone
7%
Kendo UI 2.1%
Ionic
Other 14.7%
6.3%
Knockout
4%
Ember JS
3.8%
Meteor
2.4%
Other
20%
L AN GUAG E S
Which languages do you use for writing
frontend?
How do you write CSS?
(850 responses)
(850 responses)
Plain Javascript
74.2%
Plain CSS
73.3%
ES2015 (ES6)
60.6%
Sass
44.1%
TypeScript
22.4%
Less
15.4%
Java
21.5%
Post-css
9.5%
PHP
20.%
CSS modules
6.6%
C#
11.9%
JSS (CSS in JS)
6.2%
Python
11.4%
Stylus
3.5%
Ruby
5.2%
Compass
2.1%
CoffeeScript
2.2%
Other
2.4%
Other
9.9%
W EB D EV
Which desktop browsers do you target?
Which mobile browsers do you target?
Top 9 browsers from Nov 2015 to Nov 2016
(851 responses)
(763 responses)
Source: gs.statcounter.com
Chrome
Chrome for Android
90%
Chrome
48.68%
Firefox
83.1%
iOS Safari
Safari
Safari
68.4%
Android Browser
32.4%
Firefox
8.24%
Edge
67.7%
Firefox Mobile
28.4%
UC Browser
7.56%
Internet Explorer 11
58.9%
Opera Mobile
9.7%
IE
6.91%
Opera
26.9%
Samsung Internet
Opera
Internet Explorer 10
Opera Mini
97.1%
24%
80.2%
9.2%
6.7%
13.17%
5.48%
Android
4.21%
Internet Explorer 9
10.7%
UC Browser for Android
4.8%
Samsung Internet
1.89%
Internet Explorer 8
Not a web project
2.5%
Edge
1.32%
Other
3.8%
Other
2.55%
4%
Not a web project
2.1%
Other
1.4%
Responsive Apps
Reasons to build native apps instead of mobile web?
(766 responses)
Performance
80% of respondents build responsive apps
(apps for more than one screen size.)
50.7%
Access to hardware
41.9%
9.3% want to build responsive apps, but
don’t.
None, I'm pleased with the mobile web
27.7%
App store - discoverability
26.6%
8.5% of respondents do not think responsive
design is necessary for their projects.
Offline functionality
25.3%
App store - monetization
23.1%
66% build for desktop, phone, and tablet.
Advanced graphics
20.8%
Push notifications
11% build for desktop and phone.
19.8%
Other
7.3%
T ES T S , P ER F O R MA N C E , ACC E S SI B I LI T Y A N D SE C U R I T Y
Tests
Perf, a11y, security
UI tests appear to be important,
but
of respondents said
Overall, performance is a greater concern than security,
which is more important that accessibility.
65%
they don’t do them.
Security, performance, a11y are all more important for public
apps than private
Other testing
Unit and manual
testing is done by
Public vs Private
70%
of respondents
Integration testing is slightly more important for
bigger companies.
Security
74%
67%
Performance
67%
54%
A11y
32%
17%
Public
Private
Overall Importance
Performance
Accessibility
Security
very important
60%
25%
65%
somewhat important
35%
45%
30%
5%
35%
5%
not important
of time
of time
of time
of time
of time
of time
of time
of time
of time
W EB COMP ON EN T S
Overall
Over
At companies
70%
of respondents say they have at least
tried using web components.
Launched with web components in cases:
Large companies
Experience
More experienced developers are more likely to use web
components.
50%
of developers with 10 years of
experience or more
have used web components for more than 1 year.
51%
Smaller companies
40%
Why web components?
How do people use web components?
(591 responses)
(579 responses)
The structure it brings to building our application
Entire app is built with Web Components
72.1%
Reduces code complexity
70.9%
Faster to develop with
64.3%
Ease of interoperability
57.5%
The quality of ready made components
45%
The number of ready made components
33.2%
I found a component I needed for my project
73.7%
Building simple widgets
53.7%
Layout is web component based
46.6%
Non-graphical web components, e.g. an ajax request
38%
Navigation is web component based component
36.8%
Used one or two small prebuilt components
27.5%
Advertisement
16.1%
1.6%
Other
Other
7.8%
5.4%
W EB COMP ON EN T LIBR A R IE S
Which web component libraries do you
start with?
Which web component collections do
people use?
(766 responses)
55%
of respondents who use web
components use Polymer
About 2% used Skate
Polymer Elements
83.2%
In-house developed set
51.5%
Google Web Components
41%
Vaadin Elements
23%
A-Frame
1.8%
About 2% used x-tag
Other
4%
What does Polymer do well?
P O LY M ER
documentation
quality
Encapsulation
easy
support
binding web use Syntactic
ready
material
create
Tooling Everything tools standards
nice
like
UI well
Makes ease other community build love
learn docs
etc
design
started
Who uses Polymer?
Polymer Elements seems to be used more at
larger companies versus smaller companies.
declarative
definition
API
data polyfills
pretty examples getting
really better things
lots
high big allows
layer sugaring
some
Bindings
js
boilerplate styling
library
component
creation
Provides
make structure
components
app
great framework
code
much
sugar syntax
project work
simple just
Google set write HTML
easier way lot made fast development close tutorials
CSS
awesome
native Using
platform
being Simplicity
Polymer
good catalog
element
all
Polycasts
Performance
databinding
custom
elements
Polymer usage:
Large companies
42%
Smaller companies
28%
What do people dislike about Polymer?
•
•
•
•
•
•
Data binding with structured data in 1.0 can be challenging
Community currently on the small-side
Confusion between Polymer-the-library vs the elements built by the Polymer team
Worry about adding a dependency to a web component
Difficulty getting started - high mental effort
Not enough docs - especially long form
P ROGR ESSI VE WE B A PPS
Who writes PWAs?
What PWA tech do people use?
(766 responses)
30%
of respondents say they have written a
progressive web app.
55%
of respondents have some knowledge of
PWAs, but have not yet written one.
SSL/S
70.9%
Websockets
59.3%
Service workers
Respondents working on free public apps are more
likely to build progressive web apps versus either
internal apps or paid public apps.
53.3%
HTTP2
43%
Web workers
Free public apps
38%
27.2%
Web push
21.3%
Internal apps
25%
Native hardware access
16.2%
Paid public apps
27%
PWA and Mobile
Reasons for writing a native mobile or progressive web
app does not depend on what kind of project it is
(private, public free/paid.)
Why might you prefer to write a mobile native
app instead of a mobile web app?
(766 responses)
Performance
50.7%
The main reasons someone might prefer to write a
native mobile app versus a progressive web app are
performance and hardware access.
Access to hardware
41.9%
None, I'm pleased with the mobile web
27.7%
App store - discoverability
26.6%
Offline functionality
25.3%
App store - monetization
23.1%
Advanced graphics
20.8%
Push notifications
19.8%
Other
7.3%
FR E EF OR M R E SP O N S E S
What concerns do people have about web components?
•
•
•
•
•
•
•
•
•
•
OTHER COMMENTS
Ubiquitous “browser support” comments.
Data binding seems like a big deal.
Learning resources could be better.
People who say they have
Styling/layout.
used web components wrote
1.5 times as many comments
Marketing is insufficient/makes a poor case.
as others.
Communication between components, chaining callbacks between components.
A handful of people are concerned about using forms with WC.
A bunch of people wanted “is” back.
Component upgrading / no-Javascript solutions.
People are vocal about HTML imports and others really dislike ES6
A handful of
responses
were written in
ALL CAPS.
What do people enjoy about
developing with web components?
modularity without
simple
reuse structure browser between
Isolation standard Interoperability
app
Separation
encapsulation
really
encapsulated each
fun
architecture apps
Use
data
fast
using
standards
just more
declarative working UI elements
API concerns
one project
all work brings
create
quality being
based
native time able
element across page build
good much modular
Simplicity different pieces
easy
complex extensibility built learn less features concept small
Composability
reusable close CSS
like
team
nice
great
application
other Speed
understand
DOM
HTML
reusability
custom
code building way integration
JavaScript
platform new
clean makes
framework
feels
performance functionality
everything
frameworks
development
component Web
community
Ease
What challenges do people face
when using web components?
web
browsers
polyfills HTML
element
sharing keep technology None styling
building
support
really Learning
issues
things
some
using management
polyfill documentation complex know
time
spec between binding dependencies angular
changing structure libraries flex native
JS use
like more
shadow
tag
VS
new
most people many
dom
IE performance different just code
CSS create need Lack design global difficult much
still
tooling
hard component work application any
think ES
great
having developers
all only
one version
other elements
components
Polymer
sometimes integration
custom challenge
change
frameworks
Browser
about
way
app
best
data
communication changes
functionality Progressive
compatibility especially
used react
often
Here are some interesting full comments:
Have a common use case "playground" with non-WC use
cases (e.g. form submission) alongside the same use
cases implemented with WC. This will help show the
differences in possible WC implementation and also
highlight gaps in the specs.
Web components should all have an isolated js context
with an api for exposing values between contexts. They
also need to integrate much better with js modules. The
problem is that what I *want* from web components is
not calendar widgets. Instead, I want marketing to be
able to expose to me a "recommended-products"
component that I could do a minimal amount of
configuration to and drop onto my page. In the current
implementation last I checked, I would have to carefully
manage all of *their* dependency tree. That means if
they use signalr and I use jquery 3, it will break their
signalR version unless I hack in manually a way of
providing a *separate* version to their component. This is
a huge problem that I’ve seen very little will to address.
I think, there will be the need for an other abstraction layer.
Because we're all going to build bricks (element,
components). With that we can build beautiful things. Use
bricks to build a house, an office, a tower, etc. But buildingcontractors need guidelines, need an architect who sketches
the building, makes the blue prints. Then you now which
elements you need, going to buy or create them by yourself.
And the architect need a lot of knowledge what there is on
the market and what the user needs / want.
As part of a bigger response:
As you may see, my approach is probably miles off of a lot of
other people. And I think that is the problem. Each person has
a different approach to web components, and while it makes
for brand new way forward, it feels there won't be enough
consensus to justify it's longevity. They seem to be competing
to be Angularjs, which I don't like