crab VS Surprise

Compare crab vs Surprise and see what are their differences.

crab

A community fork of a language named after a plant fungus. All of the memory-safe features you love, now with 100% less bureaucracy! (by crablang)

Surprise

A Python scikit for building and analyzing recommender systems (by NicolasHug)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
crab Surprise
37 8
5,061 6,153
0.6% -
9.9 0.0
2 months ago 11 months ago
Rust Python
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

crab

Posts with mentions or reviews of crab. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-05-30.
  • Rust language forked by community into Crab
    4 projects | /r/linux | 30 May 2023
  • Rust has been forked to the Crab Language
    8 projects | news.ycombinator.com | 30 May 2023
    8 projects | news.ycombinator.com | 30 May 2023
    If that’s what happens, it’s not a great outcome. Foundation changes policy, restricting the use of a mark. The community responds by… ceasing to use the mark. That’s what they were asking for!

    If a whole slew of things were only available in Crab, the Rust trade mark would be devalued. That would be the one coherent theory of why you would launch such a project and try to get others on board. And it is why Ashley G Williams was commenting in that Register piece on the lack of technical talent (“language designers”) that had jumped ship. Commitment of talent and effort and resources is by and large what makes the trade mark valuable. People who are important to the project leaving is the only useful measure of an effective protest.

    Since the Crab project fails to mention any specific people who have signed on, or even who decided to create it, I don’t see it having any impact whatsoever. The Rust Foundation will not feel threatened by this. I suspect the maximum it can be is just another IceWeasel. That is certainly the vision laid out by this person on one of the issues, who despite posting as if they created it, is careful to disclaim any responsibility for the project or to call any of the decisions their own. (Come on!) https://github.com/crablang/crab/issues/14#issuecomment-1508...

    It’s also the vision laid out on the website: “promoting the language without worrying about the litigation associated with trademark infringement.” Basically the project has outlined the least ambitious possible goals and apparently nobody is willing to sign their name on it. My advice is to write an open letter and open it for signatures instead.

    8 projects | news.ycombinator.com | 30 May 2023
  • On the RustConf Keynote
    2 projects | news.ycombinator.com | 29 May 2023
    I think https://github.com/crablang/crab is the healthy path forward.
  • Why I Left Rust
    5 projects | news.ycombinator.com | 28 May 2023
  • JT: Why I left Rust
    2 projects | /r/rust | 28 May 2023
    Crablang is something I spotted further up the comments.
  • CrabLang
    2 projects | news.ycombinator.com | 16 Apr 2023
    Is it ok to include the copyright message from Rust including references to Rust? https://github.com/crablang/crab/blob/master/COPYRIGHT

    What about attribution?

    2 projects | /r/programming | 15 Apr 2023
    There may or may not have been an issue open for this: https://github.com/crablang/crab/issues/5
  • Should I start renaming my crate repositories that have "rust" in their names?
    2 projects | /r/rust | 16 Apr 2023
    Lol we had a similar joke about that: https://github.com/crablang/crab/issues/5

Surprise

Posts with mentions or reviews of Surprise. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-10-16.
  • Dislike button would improve Spotify's recommendations
    4 projects | news.ycombinator.com | 16 Oct 2021
    I spent the latter half of 2019 trying to build this as a startup. Ultimately I pivoted (now I do newsletter recommendations instead), but if I hadn't made some mistakes I think it could've gotten more traction. Mostly I should've simplified the idea to make it easier to build. If anyone's interested in working on this, here's what I would do:

    (But first some background: The way I saw it, you can split music recommendation into two tasks: (1) picking a song you already know that should be played right now, and (2) picking a new song you've never heard of before. (Music recommendation is unique in this way since in most other domains there isn't much value in re-recommending items). I think #1 is more important, and if you nail that, you can do a so-so job of #2 and still have a good system.)

    Make a website that imports your Last.fm history. Organize the history into sessions (say, groups of listen events with a >= 30 minute gap in between). Feed those sessions into a collaborative filtering library like Surprise[1], as a CSV of `, , 1` (1 being a rating--in this case we only have positive ratings). Then make some UI that lets people create and export playlists. e.g. I pick a couple seed songs from my listening history, then the app uses Surprise to suggest more songs. Present a list of 10 songs at a time. Click a song to add it, and have a "skip all" button that gets a new list of songs. Save these interactions as ratings--e.g. if I skip a song, that's a -1 rating for this playlist. For some percentage of the suggestions (20% by default? Make it configurable), use Last.fm's or Spotify's API to pick a new song not in your history, based on the songs in the current playlist. Also sometimes include songs that were added to the playlist previously--if you skip them, they get removed from the playlist. Then you can spend a couple minutes every week refreshing your playlists. Export the playlists to Spotify/Apple Music/whatever.

    As you get more users, you can do "regular" collaborative filtering (i.e. with different users) to recommend new songs instead of relying on external APIs. There are probably lots of other things you could do too--e.g. scrape wikipedia to figure out what artists have done collaborations or something. In general I think the right approach is to build a model for artist similarity rather than individual song similarity. At recommendation time, you pick an artist and then suggest their top songs (and sometimes pick an artist already in the user's history, and suggest songs they haven't heard yet--that's even easier).

    This is the simplest thing I can think of that would solve my "I love music but I listen to the same old songs everyday because I'm busy and don't want to futz around with curating my music library" problem. You wouldn't have to waste time building a crappy custom music app, and users won't have to use said crappy custom music app (speaking from personal experience...). You wouldn't have to deal with music rights or integrating with Spotify/Apple Music since you're not actually playing any music.

    If you want to go further with it, you could get traction first and then launch your own streaming service or something. (Reminds me a bit of Readwise starting with just highlights and then launching their own reader recently). I think it'd be neat to make an indie streaming service--kind of like Bandcamp but with an algorithm to help you find the good stuff. Let users upload and listen to their own MP3s so it can still work with popular music. Of course it'd be nicer for users in the short term if you just made deals with the big record labels, however this would help you not end up in Spotify's position of pivoting to podcasts so you can get out of paying record labels. And then maybe in a few decades all the good music won't be on the big labels anyway :).

    Anyway if anyone is remotely interested in building something like this, I'll be your first user. I really need it. Otherwise I'll probably build it myself at some point in the next year or two as a side project.

    [1] http://surpriselib.com/

What are some alternatives?

When comparing crab and Surprise you can also consider the following projects:

LightFM - A Python implementation of LightFM, a hybrid recommendation algorithm.

scikit-learn - scikit-learn: machine learning in Python

tensorflow - An Open Source Machine Learning Framework for Everyone

python-recsys - A python library for implementing a recommender system

Crab - Crab is a flexible, fast recommender engine for Python that integrates classic information filtering recommendation algorithms in the world of scientific Python packages (numpy, scipy, matplotlib).

MLflow - Open source platform for the machine learning lifecycle

Navidrome Music Server - 🎧☁️ Modern Music Server and Streamer compatible with Subsonic/Airsonic

Keras - Deep Learning for humans

HotBits Python API - Python API for HotBits random data generator

xgboost - Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

implicit - Fast Python Collaborative Filtering for Implicit Feedback Datasets

gym - A toolkit for developing and comparing reinforcement learning algorithms.