Solvedpolymer Polymer Team - I'm really frustrated!

@tjsavage and the Polymer team, I am really frustrated with the Polymer Project / team!!!

I believe there are very few frameworks out there that are so committed to taking full advantage of and working so close to the metal of the amazing next generation web platform and specifically the Web Component technology set! Polymer should be (is?) that project! The tech benefits for WebApp development using Polymer is a no-brainer on many levels IMHO...

I keep seeing tweets and articles like this which continuously show the performance benefits of sticking with the platform and therefore Polymer!
https://twitter.com/paulcuth/status/837632180352401408
https://twitter.com/marcushellberg/status/837451438418616321
https://aerotwist.com/blog/when-everything-is-important-nothing-is/
(there are many more)

So why is Polymer not totally buzzing right up there with these other frameworks - React, Vue, etc.? Why is the community not jumping on this?

From the outside looking in I can only attribute this to two possibilities:

  1. A lack of energy from the Polymer project management team who I feel do not spend enough time pushing the benefits of Polymer through the various media channels... It just feels like there is no energy there...
  2. Internally Polymer is possibly a conflicting project with other projects such as Angular and is therefore not being pushed!?

On the first point:

  • why does this issue have comments like "it would be nice if there is a little more communication", "Again, a update of the current state would be nice?" and "No News? Would realy be interesting to know where we are? When can we estimate first release?". Feedback on how things are to the community is slow and usually comes from issues like the one above.
  • Polymer has been slow to adopt ES6/7 which other frameworks like React, Vue are not scared to assume by default - I understand the no-build concept but these days nearly every decent framework requires a build step! Just package built & unbuilt code in the same projects and default to the built one.
  • Recently, not taking the perfect opportunity on the v1.0 release of the Web Component spec to solidly make 'breaking changes' to Polymer 2.x and therefore transport it into a project that competes with frameworks like React/Vue in terms of popularity - look at the Github Stars for these projects (React 61K, Vue.js 45K, Polymer 17K)!
  • In v2.x not providing an imperative API that supports runtime DOM composition that makes binding to existing parent element just work - is this a design flaw in Polymer?

On the second point, it's anyone's guess - this is unlikely though, I would think!

Another point - look at the job market and compare the call for React jobs vs Polymer jobs!

The Polymer Project is such an opportunity to be the framework that drives Web Component technologies into being better supported by all modern browsers! Why is this not happening!?

If it doesn't take this opportunity then we may see another framework take up it's position of being the Web Component framework of choice!!!

I truly do not mean to offend here, if anything, I would like to see Polymer at least reach the level of recognition it deserves - right up there with React, Vue, etc!!!

How can we get it there!?

20 Answers

✔️Accepted Answer

Hey @clintwood!

I hear your frustration, and appreciate your enthusiasm. We think there should be much more buzz too!

Polymer's growth has been tightly and necessarily constrained by broad adoption of the Web Components specs. I'm sure I'm preaching to the choir here about the promise of Web Components: platform-level, encapsulated component model, to make sharing components/possible easier across frameworks, to not have to re-invent a component model for every new framework, and ultimately to allow devs to write higher-level code while shipping less JS down to the client.

The Polymer project was designed to prove out Web Components, help shape the low-level API's themselves, and then ultimately to make it easier to build Web Components.

The history of the project has very tightly progressed along these lines:

  • Polymer 0.1-0.5 releases were all about proving out early Web Components, as well as looking to tie in additional experimental specs (remember Object.observe!). With this, we helped bridge the gap between spec authors and developers to land on what might work and what might not.
  • Polymer 1.0 was about proving Web Components could be used in production. This meant optimizing for performance - this is where Shady DOM came in so that we wouldn't have to lug around the full Shadow DOM polyfill on Safari.

Even with Polymer 1.0 though, we haven't come close to realizing the full potential of Web Components. True encapsulation, true re-usability, truly minimal JS is not possible without broad browser support for native Web Component API's. Polyfills are typically fine on desktop browser with big beefy CPU's and Wifi/Cable connections, but they do matter on mobile browsers.

Unfortunately, even though I think we've shown that despite polyfills you can still ship really fast, powerful experiences on mobile using Web Components, and even though I believe relying on polyfills should be considered an advantage, not a weakness, given that they disappear over time, the current state of Web Components is an incredibly easy thing to nitpick.

So while we're in this uncanny-valley, rather than target broad, Hacker News-type reach, we've been targeting large organizations and products inside and outside Google - those who have an immediate and crushing need for Web Components today - to make sure the project and toolset works for these use-cases.

As you note, we've recently hit a major milestone for Web Components - the Web Components v1 specs. Unfortunately, they haven't quite all shipped yet - Safari is yet to ship Custom Elements v1, though it is completed in Tech Preview. But we're extremely close.

So we've designed Polymer 2.0 to fully embrace these v1 specs. And we've been working hard to get 2.0 production-ready before v1 completely lands.

Polymer 2.0 is designed to actually realize the full promise of Web Components. One quick way to see this - here is a table showing the combined size of Polymer + the polyfills required to use 2.0's class-based element syntax:

Native Browser Support Combined size of Polymer & Polyfills (in kb, gzip)
Browser HTMLImports Custom Elements ShadowDOM Other Platform 1.x 2.x (legacy API) 2.x
Chrome ✔︎  ✔︎ ✔︎ ✔︎ 53 23 10
Safari w/ CEv1 ✔︎ ✔︎ ✔︎ 53 26 13
Safari 10 ✔︎ ✔︎ 53 30 17
Firefox ✔︎ 53 45 32
Microsoft Edge/IE 53 49 36
Polyfill size 3.5 3.7 14.8 3.5

The more specs supported natively, the less code required. Down to ~10kb on Chrome.

I wish we had a magic switch we could pull that would make Web Components wildly popular. By hitching our cart to the Web Platform horse, we're at the whim and the pace of the overall spec adoption - which is a long arc. Thanks to Google's backing we've been able to take this long view - to target the long-term paradigm shift rather than seeking short-term popularity.

I have not done as good a job as I'd like keeping the community updated on our progress - this is something we're actively working on changing our culture around.

We've also needed to conserve our credibility. As we all know, web developers can be an opinionated bunch :). We set out our long-term thesis and set the goalposts when Web Components v1 first solidified. Rather than continually pound this drum, we've put our heads down the last few (many) months to execute on this. The result will be Polymer 2.0, which will be released imminently.

We hope 2.0 will be a major transformation in Polymer's broad appeal. But we need this amazing community's help:

  • We need help with feedback on the 2.0 release candidate, to make sure we end up shipping the right thing to stable. The community is absolutely critical here. We'll have more information coming on this release candidate very shortly.
  • We need help building up a corpus of content on the web about Polymer. Answering StackOverflow questions, posting "How to get started" blog posts, etc.
  • We need help growing the set of high-quality components available in the ecosystem - publishing to webcomponents.org. The set of components on webcomponents.org has been growing in leaps and bounds - let's keep it growing!

I hope this at least speaks to your concern, @clintwood. As a team we're pouring our hearts and souls into building the right next product, with 2.0. We need all the help and community energy we can get to make sure it's great. From there, I think we'll have a solid foundation to reach the popularity you're hoping for.

Other Answers:

Hey guyz, take it easy...
Polymer 2.0 is on the way, I can't even imagine how much effort these guys are putting on it

I am sure we'll have tons of news when we get 2.0.0-stable... Then all of these feelings will go away and happiness will take place again 😇

I agree that there's more transparency needed. What's so hard about creating pull requests and showing progress there? I like how the html modules are approached on the github repo. Recently on the npm migration topic, one of the biggest ones, someone asked for a PR - no reply.

The answer is "we are working on it". Don't get me wrong, I do believe you are working on it, and the Polymer team is far more competent to get it done than the majority of developers relying on Polymer, but a little transparency what you're actually doing would be nice to have.

Transparency is better than just bullshitting us - we've also heard that html imports are coming for the last idk ... 3 years? It would be nicer if it would be kept real and expectations are realistic, not wishful thinking. At the last IO, again someone spoke "webcomponents are finally here, in x browsers and in progress in others". It's not even true. Microsoft still hasn't begun work on webcomponents and Firefox idk ... is it ever coming? Who knows... All I'm saying, a little bit more honesty would be appreciated with the entire project. (I'm aware the last example is actually a problem created by Microsoft & Mozilla, still please let's be a bit realistic with what the community should expect)

Also, no roadmap update after 2.0, which probably was your most significant webcomponents release so far is also meh :/

As a last comment, I want to thank the Polymer team for their hard work. I still believe what you are working on and what you are producing is one of the most valuable things out there on the open source space and it's invaluable for the future of the web. But in terms of communication to the communication, this is the worst project I'm following and I really hope things will improve in the future. I guess the problem is there's no financial consequences. Meteor Developer Group suffered from similar issues and they definitely lost customers, now their communication is really good for the most part compared to before. Maybe they can serve as inspiration for future improvements.

IMO building Polymer apps is kinda like a back to Backbone times. I mean, Polymer is great to build components, but offers very few project-level architecture solutions.

This can be partially fulfilled by projects like UniFlow for Polymer, and Polymer Redux, but for a long time we didn't have any guides on this.

So, when using Polymer, project-specific part of the code is much bigger than framework-specific. This means that switching to a different project might be pretty hard, as you will need to learn new concepts and solutions adopted by that project's team.

Another thing is tools. A month ago we received a new polymer-bundler, which is a lot more faster than vulcanize used to be. But these existing tools are less powerful than Webpack, because of Polymer limitations (e. g. placing styles in HTML, not stylesheets). They also require spec-related tricks to work (e. g. not so easy to implement HMR due to lack of ability to unregister element, etc).

Years on and nothing changed. Polymer to me is a failed project compared to React/Vue a
and AngularJS - not AngularJS. Apart from Firebase I really think Google have failed on both Angular and Polymer

Related Issues:

47
polymer Polymer Team - I'm really frustrated!
Hey @clintwood! I hear your frustration and appreciate your enthusiasm @tjsavage and the Polymer tea...
14
polymer Yarn Flat Mode Attribute in Package.json breaks projects
hi~ we've got a thread going over at package-community/discussions#2 about this issue ...
175
storybook Webpack 4 support?
I'm getting the below error when running Storybook with a project using Webpack 4; This is preventin...
111
storybook babelHelpers is not defined using Rollup [Solved]
@alejandronanez you can remove external-helpers from your .babelrc file and enable it back only on y...
79
storybook Storybook doesn't work with the newest version 10.0.1 of PostCSS Autoprefixer plugin
I also get the same issue as @matamatanot (also with tailwind 2.0.2) I might have missed something f...
65
storybook Storybook build fails in Node 13 (cannot find module @babel/compat-data/corejs3-shipped-proposals)
Removing node_modules and yarn.lock and using node 13.13 has been helped for me. ...
65
storybook Storybook 5.0.0 emotion-themeing and React loader bug
Worked for us to add @storybook/theming as an explicit dependency Describe the bug When starting up ...
62
storybook [Angular] How to render a component that has <ng-content> in the template
That couldn't be the solution Why I should write the HTML manually again? It already in the componen...
62
storybook build-storybook doesn't respect tsconfig.json baseUrl config (Module not found: Error: Can't resolve 'components')
@jwm0 your solution worked for me Here's my main.js for reference: Bug or support request summary I'...
60
storybook TypeError: Cannot read property 'createSnapshot' of undefined
@shilman @jimmyandrade @ckwong90 For this issue in particular When I start storybook I got TypeError...
59
storybook Doc code preview "No display name"
What happens if you use {Story()} instead of <Story />? Describe the bug The Doc code preview does n...
57
storybook Feature: custom proxy settings
@ndelangen just when I saw your message I was able to find a solution to my problem using the awesom...
57
storybook TS1086: An accessor cannot be declared in an ambient context
Try skipLibCheck: true inside tsconfig.json eg Hope it will help you !! Describe the bug Upgraded to...
54
storybook Webpack Building Constantly
Having the same issue after upgrading to 6.2.1 Changing my main.js file to only load stories from th...
53
storybook Cant add aliases in storybook config
I think the problem may be trailing slashes Try using ~ and ../src/ exactly It seems to work for me ...
51
storybook TypeError: Cannot read property 'module' of undefined
Logging the three variables in the line (baseConfig env config) => { shows that the latter two are u...
51
storybook Error: Invariant failed: You should not use <Link> outside a <Router>
This is not an issue with storybook the error comes from react-router as is evidenced by the screens...
49
storybook Async/Await
I'm using a vanilla setup of StoryBook with no tweaks to babel ...
49
storybook Storysource is giving me linting errors
I ran into this same Import in body of module; reorder to top import/first error in SB 5.0.x ...
47
storybook Storybook is not able to resolve path with Next js absolute import
Its because thats not an absolute import from root your path is using an alias Describe the bug Stor...
40
storybook [webpack5] DefinePlugin cannot read property 'get' of undefined
If someone is still looking around for a solution Describe the bug I cannot build storybook using we...
40
storybook Uncaught Error: Target container is not a DOM element.
If there is someone who hasn't fix the problem jet check the order of your tag elements in html ...
37
storybook Story source code shows "MDXCreateElement" instead of actual source code
It seems to only occur when using an intermediate variable (including the template/bind pattern): ☝️...
36
storybook CSS modules
For webpack 2 I'm using this in .storybook/webpack.config.js and it's working fine: ...
35
storybook Error: exports is not defined
I'm getting this error without using TypeScript just vanilla JS I'm trying to use storybook for the ...
34
storybook [question] How to order top-level sections?
In the same boat as everyone else just sharing because it was such a headache. We've just upgraded t...
34
storybook Knobs not working with v5.2.0-beta.30
I am pretty sure it was caused by the wrong import: instead of Describe the bug When enabling the Kn...
33
storybook [Bug] "Invalid hook call" error after upgrading to Storybook 6
It's caused by multiple versions of React being loaded - @storybook/ui most likely contains its own ...
31
storybook Sorting stories
For reference here's the recommended setup for v5.2 onwards: This will sort your story kinds (files)...
30
storybook "Singleton client API not yet initialized"
The solution for vite builder — force dedupe (see https://github.com/eirslett/storybook-builder-vite...
30
storybook Can't get props for addon-info when using decorator (higher order component) on my component
Here is a workaround I used in my project And now my story will look like Hello I wanted to use addo...
29
storybook Getting 404 Registry returned when trying to run `npm install`
Yea I was using sinopia Doing a npm set registry https://registry.npmjs.org/ solved the problem. ...
29
storybook Decorator Children Displayed In Story Source
Place withInfo decorator before other decorator works for me. Describe the bug If a decorator itself...
29
storybook A working example with PostCSS for Storybook v5
Ok for those playing along at home this works perfectly. Is your feature request related to a proble...
28
storybook Cannot assign to read only property 'exports' of object '#<Object>'
For anyone stumbling across this I faced the same problem after importing a NPM package to a Vue com...
26
storybook babel-loader devDependency causes error in Create-React-App
Hello @ajrussellaudio thanks for your work Unfortunately Describe the bug Installing Storybook in a ...
24
storybook Add loader for .module.css to load CSS modules
I'm currently setting CSS Modules in a shared component library written in TypeScript (apps consumin...
24
storybook @storybook/angular: Expected 'styles' to be an array of strings
@literalpie Storybook hooks into the configuration of Angular in order to provide a zero-configurati...
23
storybook import markdown.md for addons "Cannot find module"
Try putting this in your TS code: Issue details I want to use markdown.md with addons but I can't im...
22
storybook Static file path returned instead of file content on require('./file.svg')
FYI just adding the following parts in .storybook/webpack.config.js did the trick: .. and: => I did ...
21
storybook storybook@6 throws a core-js error
just a reminder that now that you published 6.0 officially this is still a problem ...
21
storybook Can't import css
If I do this it works for style.css but not for external module So I have to include all the project...
21
storybook I can not import with absolute path in Storybook
Try adding something like this: Version @storybook/addon-actions: 3.4.8 @storybook/addon-links: 3.4....
21
storybook Static build (S)css issue
A good friend of mine (@leeran88) pointed me to an issue (#4918) that straight connected me to this ...
21
storybook Unable to embed mdx/md documents within mdx doc page stories
Hello there I was also stuck on this problem for a while until I found something that works for me: ...
20
storybook How can I change a property in a stateless component?
May be we need to have some kind of reactive variables where we can change values How about this: On...
20
storybook create-react-app babel-loader clash
This is a problem when installing babel-loader Original Post Hidden As It Relates to CRAv2 When inst...
20
storybook Dynamic Themes
Figured it out This definitely still feels like a hack though Unsure if this is a bug report or a fe...
19
storybook npx sb init does not work with NPM v7
react 17.0.1 npm 7.5.2 Finally npx --legacy-peer-deps sb init works for me. Describe the bug The ini...
19
storybook use storybook with vue and vue-i18n
If you use Vue CLI plugin for storybook you can modify the config/storybook/config.js as follows ...