Understanding AI for coders: Tabnine (your alternative to GitHub Copilot)

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews

    For my curiosity, https://www.tabnine.com/code/java/classes/com.google.gson.Js... says it was taken from https://github.com/Vedenin/useful-java-links/tree/master/hel... which Tabnine annotates as "license: other" (it's actually CC-BY-SA-4.0 <https://github.com/Vedenin/useful-java-links/blob/1f4278c9ad...>) but (a) does Tabnine not know about CC licenses? (b) how is the downstream user (i.e. the person accepting said snippet completion) supposed to interpret "license: other" without doing the same research I just did?

    That story gets even weirder with the 3rd link on that page whose license is also "other" but this time the "view source" link goes to https://www.tabnine.com/web/assistant/code/rs/5c781237e70f87... . I find that weird for at least two reasons: (a) it clearly says "This snippet was taken from github" and has a GitHub style "org/repo" nomenclature, but doesn't link to the actual repo (b) at the very top of that file is the boilerplate Apache 2.0 license header

    Finally, one should be very cautious about ever linking to "master" URLs, since the branch can get nuked if the repo owner decides to go with the "master to main" rename, it can lead the user to a copy of the file that is almost guaranteed not to be the same sha as the one Tabnine indexed, and related to that the repo can undergo a license change (FOSS to BSL is a very common one) leading to some complicated discussions

  • renaming

    Discontinued Guidance for changing the default branch name for GitHub repositories

  • There's a standard GitHub uses for license files (which must be at the root of the repo) which fills in the "license" field on the right column of the repo. If the standard isn't met then the link just says "View license". I imagine TabNine is pulling the license from the GitHub API.

    https://docs.github.com/en/repositories/managing-your-reposi...

    https://github.com/Vedenin/useful-java-links

    When master branch is renamed to main, GitHub redirects any old links. https://github.com/github/renaming#renaming-existing-branche...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • tabnine-vscode

    Visual Studio Code client for Tabnine. https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode

  • Both are related to limitations of vscode completion engine, so Tabnine can't really blamed for them in any way.

    1. Initially Tabnine's auto-completion was triggered on any character, which best leveraged Tabnine's power but also had inherent problem: when Tabnine was triggered on non-letter character it sometimes prevented Vscode from showing suggestions from other completion sources (LSPs, snippets). There is a discussion in https://github.com/codota/tabnine-vscode/issues/6 with me explaining that the only viable solution is to reduce set of trigger characters to letters only. In the end a fix was pushed that reduced the set of trigger characters, which made the problem less likely but still not solved. The are numerous duplicates of this issue on Github.

    2. Another problem is when Vscode has auto-completion suggestions from Tabnine and other sources (LSP, snippets), it frequently puts Tabnine's at the top of list. This is a big no-go for me because most of the time just want to complete the identifier (class field, method etc.). Modifying just the extension code didn't help so in the end I had add a small patch to Vscode itself, which gives lowest score to Tabnine's candidates: https://github.com/sergei-dyshel/vscode/commit/ee73034b9ec6c....

    I must admit that both problems can be practically solved by new "inline auto-completion" mechanism in vscode which looks very promising for AI-based completion in general. I'm looking forward to evaluate it.

  • vscode

    Personal tweaks for Visual Studio Code (by sergei-dyshel)

  • Both are related to limitations of vscode completion engine, so Tabnine can't really blamed for them in any way.

    1. Initially Tabnine's auto-completion was triggered on any character, which best leveraged Tabnine's power but also had inherent problem: when Tabnine was triggered on non-letter character it sometimes prevented Vscode from showing suggestions from other completion sources (LSPs, snippets). There is a discussion in https://github.com/codota/tabnine-vscode/issues/6 with me explaining that the only viable solution is to reduce set of trigger characters to letters only. In the end a fix was pushed that reduced the set of trigger characters, which made the problem less likely but still not solved. The are numerous duplicates of this issue on Github.

    2. Another problem is when Vscode has auto-completion suggestions from Tabnine and other sources (LSP, snippets), it frequently puts Tabnine's at the top of list. This is a big no-go for me because most of the time just want to complete the identifier (class field, method etc.). Modifying just the extension code didn't help so in the end I had add a small patch to Vscode itself, which gives lowest score to Tabnine's candidates: https://github.com/sergei-dyshel/vscode/commit/ee73034b9ec6c....

    I must admit that both problems can be practically solved by new "inline auto-completion" mechanism in vscode which looks very promising for AI-based completion in general. I'm looking forward to evaluate it.

  • Terasology

    Terasology - open source voxel world

  • A fine reason for them to bork the useful-java-links case, I guess, but your argument falls over for the 3rd link: https://github.com/MovingBlocks/Terasology/blob/develop/LICE... and the sidebar widget correctly says "Apache-2.0 license"

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts