If you want to add “you might also like” or personalised lists to a website or app without a cloud-solution lock‑in, there are several mature open‑source projects you can run and adapt yourself. Here are five that were widely used in 2019, what they are, which language/ecosystem they live in, and the typical way developers use them.
The five projects
1) Apache PredictionIO
What it is: A full stack machine learning server aimed at building and deploying predictive engines, with templates for recommendation systems. Language/ecosystem: Java/Scala; built on top of Spark and can use Elasticsearch for indexing. Typical use: teams that want a service-style recommender with an event collection layer, offline training and a REST endpoint for serving recommendations. It’s heavier to set up but geared to production deployments where you need repeatable training and an API for online queries.
2) LensKit
What it is: A recommender toolkit that started in research and evolved into a library focused on algorithm implementations and evaluation. Language/ecosystem: Java (with some tools and examples in Python historically). Typical use: experimenting with algorithms and evaluation metrics, prototyping recommenders and building straightforward Java-based services. LensKit puts emphasis on evaluation and clarity of algorithms rather than being an opinionated server product.
3) LibRec
What it is: A comprehensive, research-oriented recommender system library with many implemented algorithms (matrix factorisation, neighbourhood methods, factorisation machines and more). Language/ecosystem: Java. Typical use: academic-style experimentation and engineers who want lots of off-the-shelf algorithms to try on their data; useful when you need to test several approaches and measure offline performance before committing to a production architecture.
4) Surprise
What it is: A Python library for building and analysing recommender systems, with easy-to-use tools for rating prediction and cross‑validation. Language/ecosystem: Python; plays well with the broader PyData stack. Typical use: quick prototyping and offline experiments, especially for teams already using Python for data work. Surprise is lightweight and friendly for experimenting with algorithms, but you’ll need to add a serving layer if you want a production API.
5) MyMediaLite
What it is: A compact library of collaborative filtering algorithms, including implicit feedback and context-aware recommenders. Language/ecosystem: C#/.NET (runs on Windows and Mono). Typical use: projects in the .NET ecosystem that need an embeddable recommendation library or command-line tools for offline model training. It’s a pragmatic choice for teams tied to Microsoft technologies.
Picking the right one
Choose by language, scale and purpose. If you want a ready-made server with an event pipeline, PredictionIO is the closest fit. For quick Python prototyping pick Surprise. If you need lots of algorithms for offline comparison, LibRec or LensKit are good choices. And if you’re in a .NET shop, MyMediaLite is deliberately small and portable. All five are self‑hostable, so evaluate them on ease of integration, operational complexity and how well they match your data and traffic patterns.
This article has been restored to the What's New On The Net archive as part of the site's relaunch.