Our great sponsors
-
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.
-
tabnine-vscode
Visual Studio Code client for Tabnine. https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode
-
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.
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
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...
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.
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.
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"