DEV Community

Cover image for Why I'm building Moiva.io

Why I'm building Moiva.io

Alexey Antipov on December 14, 2020

Introduction 👋 Hi dear developers! Christmas is coming and I have a gift for you 🎁 :) My name is Alexey. I'm a software developer and ...
Collapse
 
shaijut profile image
Shaiju T

Hi this is nice idea. 😄 , But are the data accurate ?

Angular:

Jsdiff Github Stars: 59587

jsdiff.dev/?compare=angular -

Github Stars: 68.7 k

github.com/angular/angular

?

Collapse
 
aantipov profile image
Alexey Antipov • Edited

Hi Shaiju,

Thanks for the question!
The information is correct, it's just confusing naming of Angular's npm packages.
It's the old AngularJS (angular npm package) which has 59587 stars - github.com/angular/angular.js/
The latest Angular framework (which has 68.7 k stars) is exposed as @angular/core npm package
moiva.io/?compare=%40angular%2Fcor...

I will later provide more details so that it'll be easy to validate data and get more information

Collapse
 
shaijut profile image
Shaiju T

Nice , It will be useful if you can provide tag options to select top JS frameworks as options like angular, react, vue. So users can select each tag to search faster instead of typing.

Also you can show in sidebar top trending JS framework by day, week , month and year.

Thread Thread
 
aantipov profile image
Alexey Antipov

Nice idea, thanks! 👍 I noted it down.
Another idea that I mentioned in the "Upcoming features" section is "alternatives autosuggestion", it should also help to some extent to select libraries for comparison

Collapse
 
shaijut profile image
Shaiju T

Also change the repo text, currently it says : A repo for jsstats.com issues

Thread Thread
 
aantipov profile image
Alexey Antipov

Oh, right! Thanks for noticing it! I fixed it now.
I thought I cleaned it and fixed it everywhere :)

Collapse
 
zarehba profile image
zarehba

Love your idea. I always visit a few websites and sort of compile this data myself when looking for a library.

In my opinion 2 most important things:
I) Add autosuggestion as you have planned and do the autosuggestions RIGHT. I don't mean any fancy AI model, just autosuggestion of the most POPULAR ALTERNATIVES. That's whats missing for me in npmtrends and would be a good reason on itself for me to switch to JsDiff.
Because the biggest issue with npm is there are hundreds of libraries named reasonably yet being not used at all or just being complete bullcrap...
II) You should prioritize like this: |accuracy of data| = |UX| > |number of data sources compiled on the website|.
It's a 'at one glance' tool. I'd say it can really only by done by trial and error (or surveys...).

The metrics I find the most important are:
1) npm downloads (that you have) - social proof
2) github stars (must be somewhere at the top!) - social proof
3) date of recent commit - is the project maintained
4) number of contributors - will the project be maintained, is there a community or is it a one-man band's work
5) features - not something you can put on a chart though ;-)
6) variety of metrics: issues, issues resolved ratio, date created, size, commits/PRs trends (how actively does a project grow, it's actually missing from npmtrends),

As to what you already have:

  • Your NPM downloads chart reads wrong. At the beginning / in the middle of a month, like now, the trend always goes downhill. Either make it a 7week average, 30days rolling or extrapolate the December based on the downloads in this month (usually shown as a dotted line)
  • You need to ditch the gray color and use the colors you assigned to search results consistently.
  • Bundlephobia chart is wrong. Min+Gzip must be at the base of charts otherwise one does not know how to read the chart. I'm not convinced as to cumulative character of this chart either.
  • Google trends are not useful as they come. Hard to see what's going on with all these peeks and lows. They might be useful if you show an average of sort or a cumulative value. You'd have to look into that.
  • Obviously some users' score would be great but there simply is no good source of such data... maybe an average of different sources or displaying'em all could work.
  • PR chart -> logically, PR closed have to be at the base, not at the top

Damn, I am so opinionated ;-)
I've added it to bookmarks, though, and keep fingers crossed for you making a great tool! :-)

Collapse
 
aantipov profile image
Alexey Antipov

@zarehba I love your thoughtful feedback and very-very much grateful to you for that! 🙏
Agree with everything!

  • NPM downloads. Confirming the problem 👍 Noted it down.
  • not sure I understand the idea with ditching the gray color. Can you elaborate?
  • Bundlephobia. I already had a conversation about it on reddit and I agree that gzip and non-gzip should not be stackable 👍 Will fix it.
  • Google Trends... It's tough. I agree, I also think that for most npm packages it doesn't make any sense. Take for example table package. What will the chart show for the keyword table? I guess it won't reflect trends for the table package 😃 So it needs some thoughts how to improve it. I think the problem with peeks and lows exists mostly in case of not very popular packages. Popular packages should have more stable graphs. Unfortunately Google Trends doesn't provide a real API to adjust the data, so my abilities are also limited here. Anyway, I'll definitely think about what I can improve
  • PR chart. I think it doesn't say much in its current state (for example a number of closed or merged PRs) 😃. The chart should be improved to have real value.

Thanks a lot for your other notes about metrics and their priority.

Very much valuable feedback 👍 I'll come back to it and make sure I haven't missed anything.

Collapse
 
zarehba profile image
zarehba

About the gray color - the website would be easier to read when, say, in your example, the bars pertaining to angular would be red on every chart, react ones purple etc.

Yeah, I feel your pain about Google Trends..

Keep up the good work ;-)

Collapse
 
karfau profile image
Christian Bewernitz

That's awesome, did you know about npms.io? It's currently my goto resource when trying to understand my options.
Maybe there is a way to integrate their metrics? (As far as I know they are called the same as on npm but are working quite differently.)

Collapse
 
aantipov profile image
Alexey Antipov • Edited

Hi Christian,
I use npms.io for suggestions and in some other use case. I know that Bundlephobia uses it as well.
Unfortunately, it seems I can't rely on that service for several reasons:

  • the project is not active (the last activity was 2 years ago)
  • for some packages it doesn't give a link to github (npmjs, on the other hand, provides that information for those cases)
  • 2 days ago there was an incident - their service didn't work for some time. As a result, my project didn't work either. (I know it can happen with any servce, but it doesn't give you confidence when you only started using it.)

Having said that, I'm migrating to "native" npmjs api

Collapse
 
jonathanbouligny profile image
Jonathan Bouligny • Edited

This is great. Im going to use it on this article blog.bearer.sh/top-node-request-li... and see what it comes up with. Need to find an alternative to Axios and the now dead request.

Collapse
 
sachagreif profile image
Sacha Greif

Very cool! If you want to add in State of JS data in there we also have a public GraphQL API: graphiql.stateofjs.com/

Collapse
 
aantipov profile image
Alexey Antipov

Oh wow!!! That's really cool, you are awesome guys!
It simplifies my life 😀
BTW, looking forward to the results of StateOfJS 2020 survey!

Collapse
 
stokry profile image
Stokry

Very nice :-)

Collapse
 
gunn profile image
Arthur Gunn

Bundlephobia shows some useful metrics - Is it tree-shakeable? side-effect free? how many dependencies?
I also look at what languages are in the codebase, and whether there are tests.

Collapse
 
aantipov profile image
Alexey Antipov

Agree about dependencies!
I'll also check what can be done regarding tree-shakeability.
Thanks for the suggestions! 👍

Collapse
 
braydentw profile image
Brayden W ⚡️ • Edited

What a nifty idea! Thanks for making this 😍

Have you put this on GitHub?

Collapse
 
robole profile image
Rob OLeary

Nice idea. Looks promising!

Collapse
 
aantipov profile image
Alexey Antipov

Thanks Rob!

Collapse
 
aantipov profile image
Alexey Antipov • Edited

I got feedback that the project's name is confusing.

I agree with that to some extent :)
I'm open to your suggestions, folks.
Let's come up with a simple and catchy name! 🤘

Collapse
 
aantipov profile image
Alexey Antipov

What kind of metrics and resources do you usually use when comparing javascript libraries?
What kind of charts and graphs would be helpful to you?