Coder Social home page Coder Social logo

stateofjs-legacy's Introduction

State of JS

Travis CI

Translation

If you'd like to help translate the 2018 survey results, check out this blog post.

Structure

The project is split by surveys, each one has its own folder containing the dedicated website (website folder) and data processing logic (data_processing folder).

You also have a dedicated folder for the homepage home.

Development

If you're in a hurry, you can run make. It will list all the available commands used to work on the project.

Requirements

  • Node.js >= 8.3.0
  • Yarn
  • docker and docker-compose to be able to run the data processing tools
  • GNU Make

Installation

Please make sure to use yarn if you go for manual install as we only provide lock files for this tool.

You have several options to install project dependencies, either by installing them manually via standard yarn install inside the various directories you're planning to work on, or by using custom make targets.

Another option is to install all dependencies using the following command:

make install

And if you only want to work on a specific survey, you can run:

make survey_install_2018

Coding style

This project uses prettier which can be run using this command:

make fmt

There's another command which only checks if the code was formatted as expected:

make fmt_check

The project also uses ESLint to enforce good practice and consistency, the configuration is common to the whole project, to run it:

make lint

make fmt_check and make lint both run on CI (travis).

Captures

In order to improve sharing on social networks, we generate screenshots of the charts, to generate those screenshots for a specific survey, you can run the following command:

make survey_capture_2018

This will take screenshots according to the config defined in surveys/2018/config/captures.yml.

Please make sure that the target survey's development server is running prior to running this command, using make survey_dev_2018 for example.

Deployment

Build

As for install, you have several ways to build the websites and homepage.

You can build all using:

make build

or just build the home:

make home_build

or a specific survey's website:

make survey_build_2018

Deploy

@todo

Authors

StateOfJS is Made by:

  • Sacha Greif Author of Discover Meteor and creator of VulcanJS, a React+GraphQL open-source framework.
  • Raphaël Benitte Creator of the Nivo JavaScript data visualization library as well as Mozaik, a tool for building beautiful dashboards.
  • Michael Rambeau Creator of Best of JavaScript, a platform that provides insights and resources about JavaScript libraries.

stateofjs-legacy's People

Contributors

adriantombu avatar balazsorban44 avatar bblackwo avatar cfleschhut avatar fehermarcell avatar gerasimov avatar jdsteinbach avatar joelalejandro avatar michaelrambeau avatar ndresx avatar plotisateur avatar ricardoerl avatar s1ngs1ng avatar sachag avatar shilman avatar tienle avatar vbelolapotkov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stateofjs-legacy's Issues

Data normalization

Jest and Gulp are both in the main section and in the "other" section as well. Remove them from "other" maybe?

Connections chart element color issue

Hi! Great work and thanks for making this great effort.

A fellow engineer (@sincospi) pointed out an issue with the "JavaScript Connections" chart here: https://stateofjs.com/2017/connections/

The issue is that in some selection combinations the last element of one section appears colored in the color of the next section. To make the statement more clear below are some illustrations.

In the example below "Webpack" should be grey as are the other build tools:
Issue

Here is another example (with only 2 sections selected) where "Plain CSS" should be red and not blue:
Imgur

Kind regards and keep up the great work for the community!

Country charts: focus more on relative counts

Absolute country counts will always follow population, so they'll be the same for every answer. Sorting the chart by relative count to see which countries use a given tech more than others might be more interesting.

New Chart: Number of Libraries Used

I think it'd be great to see the breakdowns of how many developers use how many libraries for each section.

So for example, for the front-end section we could have a donut chart showing which percentage has only used one library, which percentage has used two, three, etc. all the way to people who have tried all 9 options.

I don't think the data would be that hard to aggregate, and I think the chart could be pretty meaningful? ("oh, most people have tried four of these libraries but I've only tried two, maybe I should make more time to study new technologies!")

[New Feature] Comparison with previous year

Could we find a way to include a comparison with 2017 to show the trend, when applicable?

  • Vertically space out chart and legend:
  • remove legend frame
  • shorten legend wording
  • add dots on chart
  • add ability to highlight a specific datum (for example never heard of it) when we hover a legend

Happiness

Add happiness chart ("On a scale of one to five dogs, how happy are you with your current flavor of JavaScript?") to each Results page.

Visual Bugs

Just writing down all the small visual bugs/issues.

  • Overlap issues with bar labels

https://d3vv6lp55qjaqc.cloudfront.net/items/0b2M1W021P1B190C3A04/Screen%20Shot%202017-11-24%20at%2011.53.00.png?X-CloudApp-Visitor-Id=43642&v=b6be4cd9

  • Alignment issue with X axis

https://d3vv6lp55qjaqc.cloudfront.net/items/2S333h3x3x213c1W3T1J/Screen%20Shot%202017-11-24%20at%2011.53.39.png?X-CloudApp-Visitor-Id=43642&v=85c9f9d9

  • Overlap issue with horizontal bar labels for short bars (Other Tools page)

https://d3vv6lp55qjaqc.cloudfront.net/items/2P2y3N2p2q410Y1C080o/Screen%20Shot%202017-11-24%20at%2011.54.40.png?X-CloudApp-Visitor-Id=43642&v=b5cc57de

Chord Diagram is too complicated

Chord Diagram as a representation for connections look great but it doesn't bring more value than traditional heat map from the last year. Using Chord Diagram breaks the rule of “KISS” for “Keep it Simple, Stupid” more about of this here and here. The heat map is so much easier for detail analysis. Also, heat map will allow for easier comparison between years.

I propose to create a switch for changing between chord diagram and heat map.

What to do with "Share this chart" button?

I wonder how we should handle the “share this chart” button. On the worldwide page it’s not really practical. Same on the salaries page, if we offer per-country charts how do people link to a specific one?

A couple options:

A) we don’t put the button on that page
B) we put it but it’ll always link back to the default view
C) we generate sub-pages programatically (/developers/usa, /developers/france, etc.)

[Question] What for library/framework was used initially?

If I'm not mistaken, State of JS has used a library or framework that enables the creataion of sleek and simple forms/surveys. (can't remember if recently or in the past.)
I've been trying to find it, though unsuccessful.

I'd seen it used before, it fills the browser window, responsive across devices, keyboard focused (can be used with keyboard only), only shows a question at a time, large but simplistic styling.

Blinking yellow links

The frenetic blinking yellow hover on every link literally makes it painful to navigate what is otherwise an awesome and wonderful site. Please settle that down.

Salary charts: data should be weighed

Salary data should be weighed to cancel out framework popularity. Otherwise more popular frameworks will always show up as the most popular answers for every salary slice.

Affinity: Chord Diagram/Heatmap

Create configurable Chord chard that lets you pick which sections to compare. Put it in its own section.

Alternatively, use heatmap like 2016 results.

Update descriptions

Most of the textual content were copy/pasted from previous survey, maybe we have to update some of them.

Netlify Deploy Fail

6:08:06 PM: error Building static HTML for pages failed

See our docs page on debugging HTML builds for help https://goo.gl/yL9lND
6:08:06 PM: 
  322 | 
  323 | var sankeyLinkHorizontal = function() {
> 324 |   return d3Shape.linkHorizontal()
      | ^
  325 |       .source(horizontalSource)
  326 |       .target(horizontalTarget);
  327 | };


  WebpackError: d3Shape.linkHorizontal is not a function
  
  - d3-sankey.js:324 sankeyLinkHorizontal
    ~/d3-sankey/build/d3-sankey.js:324:1
  
  - SankeyLinks.js:41 Object.exports.__esModule
    ~/nivo/lib/components/charts/sankey/SankeyLinks.js:41:1
  
  - Sankey.js:39 Object.<anonymous>
    ~/nivo/lib/components/charts/sankey/Sankey.js:39:1
  
  - index.js:5 Object.exports.__esModule
    ~/nivo/lib/components/charts/sankey/index.js:5:1
  
  - index.js:101 Object.exports.__esModule
    ~/nivo/lib/index.js:101:1
  
  - AffinityChord.js:4 Object.<anonymous>
    src/components/charts/AffinityChord.js:4:1

Since we don't use the Sankey diagram, is there a way we could drop the dependency? Would we have to fork Nivo? Actually should we create a version of Nivo that only includes the dependencies we need to make the overall bundle lighter?

[Discussion] Domain & URL structure for each year

Currently, we have the following URL structure:

URL Content
stateofjs.com current homepage
2017.stateofjs.com/ 2017 site
stateofjs.com/2017 2017 results (but with current styling)

Which is a mess because links still point to stateofjs.com/2017 which can be broken by the new styles/features added for the 2018 version.

Question: should we do:

Solution A

URL Content
stateofjs.com current homepage
stateofjs.com/2017 2017 results
stateofjs.com/2018 2018 results

Pros:

  • Single monorepo
  • Single deploy target
  • No broken links
  • Possible to preload results when user is on homepage
  • Potentially easier to make comparisons between each year's data

Cons:

  • Requires maintaining backwards compatibility between each year
  • Bundle has to contain data/components/etc. for all years
  • Not possible to have different styling for each year 😡

Or:

Solution B

URL Content
stateofjs.com current homepage
2017.stateofjs.com/ 2017 results
2018.stateofjs.com/ 2018 results

Pros:

  • Completely independent sites
  • No risk of breaking previous year's results

Cons:

  • Requires maintaining multiple repos or branches, and multiple deploy targets
  • No preloading

v1.1

To-do

  • Add percents to charts
  • Opinions
  • Features

Nice-to-have

  • Per-country salaries
  • Provide anonymized data as csv
  • Salary vs experience Sankey diagram for each section

Mobile devices support

Nivo use responsive containers , it's just a matter of adapting the layout to this kind of devices.

Server-side rendering

Think about server-side-rendering for text and graphs. Ideally, graphs should be converted to PNG for easy sharing.

This would be an argument for using Gatsby or Next, but I think that would require migrating away from React Router, so it's not a trivial move…

v2: Better question asking

Instead of the current 5-option question, we could present things like this:

1. Which libraries have you heard of?

  • React
  • Angular
  • Vue
  • Ember
  • ...

2. Which libraries have you used?

[only present options checked in 1.]

3. Which libraries would you happily used again?

[only present options checked in 2.]

4. Out of the libraries you don't use, which ones are you interested in learning?

[only present options not checked in 1.]

[Question] More countries should be added to Worldwide Usage sub category?

I was reading through State of JS, flavors category and worldwide usage subcategory, and noticed major and some minor countries missing. I read the note (only countries which received over 100 total entries are shown.)

  • Can the threshold be reduced? 60 Maybe?
  • How was the survey shared across the developer eco system?
  • (So we collected data from over 20,000 developers, asking them questions on topics ranging from front-end frameworks and state management, to build tools and testing libraries.) Are the over 20, 000 developers specific countries or continent?

I'd like for this to be reviewed, and comments.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.