GithubHelp home page GithubHelp logo

nagasaki45 / krihelinator Goto Github PK

View Code? Open in Web Editor NEW
45.0 6.0 2.0 804 KB

"Trendiness of open source software should be assessed by contribution rate, not by stars" - Meir Kriheli

Home Page: http://krihelinator.xyz/

License: MIT License

JavaScript 0.37% Elixir 72.49% CSS 1.71% HTML 17.24% Python 7.40% Shell 0.50% Dockerfile 0.29%
elixir opensource trending

krihelinator's Introduction

The Krihelinator

⚠️ This project reached its end-of-life! The info here is only for documentation. The project was shut down on April 2020. On July 2020 the krihelinator.xyz domain will stop working and this page will only be available on nagasaki45.github.io/krihelinator.

About

"Trendiness of open source software should be assessed by contribution rate, not by stars"

- Meir Kriheli

This project proposes an alternative to github's trending page, by exposing projects with high contribution rate, instead of daily stars. The krihelimeter of each repository is calculated using the commits, pull requests, and issues of that project, from the past week (based on github's pulse page).

Krihelimeter =  20  * authors +
8  * merged and proposed pull requests +
8  * new and closed issues +
1  * commits

During the development of this project I found out that people use github as a backup service, automating hundreds of commits per week. Therefor, to filter these projects out, only projects with more than one author enters the Krihelinator DB.

Drop me a line at [email protected] if you do somethig interesting with this project. Will be happy to hear about it and might be able to help.

About the shutdown

  • On January 2019 github changed the way repo's pulse page is loading. Instead of having the entire HTML available at once, some info was fetched in subsequent calls. Specifically, the number of commits and authors were missing from the pulse page. This broke the calculation of the krihelimeter. Note that although the krihelimeter calculation was now different than the one intended, the information presented on the krihelinator was still relevant because it affected all projects / languages in the same way.
  • By the end of March 2020 github started to block scrapers like the krihelinator, returning HTTP error code 429 (Too Many Requests).
  • On early April 2020 I've decided to shutdown the project. The krihelinator.xyz domain now points to a page saying that the project is down. Links to badges return an end-of-life (EOL) badge.
  • On July 2020 the domain shut down. The end-of-life remained available on nagasaki45.github.io/krihelinator.

Similar projects

krihelinator's People

Contributors

nagasaki45 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

krihelinator's Issues

Improve the docs

  • Document the Periodic process.
  • Document the DB structure (GithubRepo / Language / LanguageHistory).
  • Document the web routes / controllers (PageController / BadgeController endpoints).
  • Embed README.
  • Hide modules that are not interesting.

The poller fail repeatedly on timeout when trying to scrape github page with server error (status code 500)

I started to hit an error on github, which stopped the polling completely. The following page returns a server error (status code 500) after ~10 seconds:
https://github.com/cobr123/cobr123.github.com/pulse
Therefore, the poller times out on poolboy timeout, and repeat, forever:

12:23:44.192 [info] Starting to poll from 'repositories?since=5108814'
12:23:44.196 [error] Task #PID<0.13194.0> started from #PID<0.357.0> terminating
** (stop) exited in: GenServer.call(#PID<0.394.0>, {:process, %{description: "", name: "cobr123/cobr123.github.com"}}, 5000)
    ** (EXIT) time out
    (elixir) lib/gen_server.ex:604: GenServer.call/3
    (poolboy) src/poolboy.erl:76: :poolboy.transaction/3
    (elixir) lib/enum.ex:657: anonymous fn/3 in Enum.each/2
    (elixir) lib/enum.ex:1628: anonymous fn/3 in Enum.reduce/3
    (elixir) lib/stream.ex:1264: anonymous fn/3 in Enumerable.Stream.reduce/3
    (elixir) lib/enum.ex:2843: Enumerable.List.reduce/3
    (elixir) lib/stream.ex:1284: Enumerable.Stream.do_each/4
    (elixir) lib/enum.ex:1627: Enum.reduce/3
Function: &Krihelinator.Background.Poller.process_repos/1
    Args: [:url_from_stash]
12:23:48.266 [warn] Failed to scrape cobr123/cobr123.github.com: %HTTPoison.Error{id: nil, reason: :timeout}

I must separate the scrapers from the poller, so scraper failures will pass almost silently. It might be fixed by #19.

Meanwhile, try to enter the process and set another URL in the PollerStash.

Add support for badges

I think it would be nice to be able to have your own badge, which would also help to improve to grow the pool of processes to scale.
(As far as I understand those get pulled from the list on GitHub at the moment only?!)

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.