I was prepared to give Kite another shot but seeing that checkbox just made me lose confidence. Caddy almost got destroyed by this! Please please please reconsider and make telemetry opt-in, you don't have enough goodwill given Kite's history with exfiltration, and the product has access to too much vital information to be playing around with users trust like this.
https://github.com/atom-minimap/minimap/issues/588
https://github.com/autocomplete-python/autocomplete-python/i...
https://news.ycombinator.com/item?id=23160881
I suppose I should add that we have no interest in the competition or which product is better, but we have a strong interest in preserving the integrity of HN threads, and the community demands that of us.
After years of work building our Python product — now to over 250,000 monthly active users — we decided we were ready to expand a new language. JavaScript was a clear choice given how well it pairs with Python, and it was the our most-requested language.
We took what we learned from building our Python product, adjusted it to JavaScript’s nuances, and trained the model on 22 million open-source JavaScript files. We then spent months dogfooding, user testing, and applying advanced model filtering techniques to ensure the UX was ready for everyone to enjoy.
We think the end-result will help you have more fun writing JavaScript, while also helping you ship software faster. We can’t wait to get feedback from you to help us improve our JavaScript completions from here! We'll be online to answer your questions here today as well.
Since a lot of folks ask, Kite continues to work 100% locally and Kite for JavaScript is free. We plan to release support for more languages later this year, and are taking requests at kite.com/letmeknow. Thanks!
Kite was collecting usage data without consent through an unrelated and popular Sublime Text package [2], and they've sent the data to an IP address instead of a domain name, presumably to conceal their involvement. Kite has also transferred private package names to that IP address.
When they were discovered, Adam Smith has said that they've forgot that the data collection was taking place [3], after having paid the maintainer of the package to send data to Kite.
This is on top of Kite covertly buying up popular Atom packages to push their service on developers. [4]
I'm surprised their domain wasn't banned from HN, it has been repeatedly demonstrated that Kite can act maliciously whenever it's in their interest.
[1] https://news.ycombinator.com/item?id=14857944
[2] https://news.ycombinator.com/item?id=14902630
[3] https://forum.sublimetext.com/t/rfc-default-package-control-...
Intelligent autocomplete is great. Big fan of it. However, Microsoft has already built this out in VS and VS Code as IntelliCode, and it supports Python, Typescript, JS, and Java.
VS Code is the most used JS editor by far and has first party support for this that comes out of the box. What is the reason for Kite for the VS Code users out there?
IntelliCode has a similar vision but uses much simpler models. IntelliCode can essentially give you to the top 5 attributes for a global type.
Kite uses statistical models which are orders of magnitude larger and richer, both in terms of the context they understand and the sophistication of the completions provided.
Here is a good example from the blog post:
var server = express(); server.
IntelliCode returns: use, set, get, listen
Kite's first completion is use(bodyParser.json
(bodyParser is defined earlier in the file.)Finally, IntelliCode only returns completions for attributes (foo.) whereas Kite returns deep learning completions in all the places they are useful.
Examples:
1. I memoized the arguments for a util function. Repeat this on the very similar functions defined alongside it.
2. I need to put a wrapper component around six similar components. Just do it for me after seeing me do it once.
3. I imported a new logging mechanism and called a specific method from it in one of my class's methods. Repeat for four similar classes.
Basically I want a "repeat after me" functionality that can intelligently infer which part of thing I just did is generic and can thus be replaced with the next item in the series. In a dream future it would also infer what the next items in the series are.
I haven't a clue how such a thing could be created though, or I would already be on it myself. It would have to understand the code not just syntactically but conceptually.
God it would make development less tedious though. The difference between today and that future is the same as the difference between today and the days of punchcards.
The things you mentioned all seem to yield to the decorator pattern.
Creating the right abstraction (instead of using autocomplete) would benefit future collaborators who may not have access to the same autocomplete functionality.
This has a taste of the old "they would have asked for a faster horse" argument.
How would an IDE know the local variable you've declared, that is a suitable match to the logging method's parameter?
i.e. a modal asking:
"As done to MethodA, do to MethodB?" "As done to VariableNameA, do to VariableNameB?"
And the B values would just be dropdowns that would let you correct it. Idk.
I'm just imagining what you could do with some decent speech-to-text, NLP, and an engine that understands code conceptually on a basic level.
"Create a new enum on line 14 called SuchAndSuchCategories, with the values A, B, and C. Replace the string literal on line 27 with SuchAndSuchCategories.B."
"Move method A above method B."
"Add a new method to class X called doSomething() that accepts three parameters: a string called A, a generic called B, and a SomethingClass called C. Inside the method, start a for-loop...."
Like, idk. These aren't repeat-after-me tasks but they're complimentary to them. It would just be great to be able to just talk code into existence.
These kinds of repetitive tasks are really where AI-based autocomplete shines!
There are some folders that Kite ignores, namely folders that usually contain private data. More info here: https://help.kite.com/article/97-adding-libraries-from-pytho...
2. Is there any good example of it suggesting good comments? AFAIK, comments are hard even for humans to write, so if they are able to generate good comments, it should be a major advance in NLP.
3. I don't believe this. Unless these are very trivial functions which are copy pasted across the internet, this is very hard. Is there any showcase or example where I can see this for myself?
Sure if you are just re-implementing the same thing over and over, then this might come in handy, but so would using OOP.
Again, haven't tried, just some thoughts.
And it costs more than my whole IDE (IntelliJ complete license for _everything_) as well...
Subscriptions are a tool that can both extract more money from customers and also increase the customer base by reducing the upfront cost.
I recommend TabNine but maybe kite is just as good these days, idk.
I tried it for about 10 minutes, but had to disable the extension. Two reasons:
1. My editor no longer brought up the useful function signature hints for library methods I wanted to call, which is really annoying.
2. There was a noticeable increase in lag from when I hit a key on my keyboard to when the corresponding character appears on screen. It was hard to get used to.
Have you noticed these issues? Would appreciate any tips you have for how to get over this - maybe just stick with it a while?
Thanks.
First, the most important consideration for us was if our completions model could provide a good user experience 1) locally and 2) with minimal CPU and memory usage footprint. While we're constantly tuning the product's performance, Kite already uses less memory and CPU than TabNine. We know how important it is to save resources (and battery life!) when you're developing, so this was a huge sticking point for us.
Second, we've also put a ton of thought into dealing with the visual noise that completions of this nature introduce. The completions that are predicted by models such as Kite's and TabNine's can sometimes be irrelevant or redundant, so it's important to design filters that reduce the amount of what we call "low value" completions shown so that developers are less distracted. In Python, we have a best-in-class static analysis engine that we use to filter out low value completions. We don't have our own proprietary JS static analysis engine yet, but we've done some UX "hacks" to make sure Kite's JS completions aren't redundant and don't crowd out other completions the user may find useful e.g. native completions from the IDE.
Third, (and this is a point mainly for Python), is that Kite is much more than just completions. We also provide help for calling functions, instant documentation and we have some more features in the works. Completions certainly help developers physically write code, but we know that "writing code" also includes a lot of reading, debugging, etc. So we're trying to build a product that helps out developers in all phases.
You can now install vscode-server on a remote machine and connect to it over ssh from your local vscode or even from vscode in the browser (using Visual Studio CodeSpaces or the upcoming Github Codespaces)
Will Kite work with this??
Github CodeSpaces annoucement a few days ago: https://news.ycombinator.com/item?id=23092904
The thing that convinced me in the end was that Kite had a super heavy editor integration UX that needing a constantly-running Electron "copilot" app, even uploading some of my code without clearly asking for consent first. This has maybe changed now, but at the time that was my impression.
Meanwhile, TabNine has almost no UI, it's just the tab button and nothing else, and somehow the autocomplete "just worked" amazingly well with any language I wrote, including English prose. The ratio of "fuss" to "gain" was just so different between the two. One I barely remembered I had even installed anything, my editor just suddenly became a pair programmer overnight, and the other felt like I was running a whole electron app just to get occasional library headers autocompleted and docstrings on hover (in only a few supported languages).
I wish the Kite team all the best though, and I hope to see their solution grow and improve. There is definitely room for more players in this space, and I know they've learned many lessons from their past issues with code uploading UX, so I hope people give them a break over that past PR gaffe.
We hope you'll give Kite another shot. We're always improving it and have covered a lot of ground in the last few years.
In particular, a common complaint about TabNine on Twitter is that it's heavyweight. Based on our comparisons of today's Kite versus today's TabNine, we believe Kite uses less CPU/battery, and far less memory. (My teammate dhung posted a longer comment about TabNine.)
Kite seems to require a background daemon, Electron copilot app, and editor plugin, with a multi-step setup to customize what things are shown on hover vs ctrl+space vs tab. By comparison, Tab Nine was a single command to install in SublimeText, and I have never had to interact with it since other than pressing "tab". It seems to be completely language-agnostic with no additional setup as well.
FWIW, here are a few pain points from trying Kite today:
- Kite is a 1GB download vs TabNine's 64mb
- Kite Engine is using 300MB of RAM on my machine right now, and I don't have a single editor open, and there's no way to stop the daemon in the UI
- "sending usage metrics" is on by default in the preferences :/ this is really scary to someone who remembers Kite's issues with code exfiltration and telemetry in the past, haven't ya'll learned that lesson? I had hoped all of that stuff was disabled these days but I guess not.
- there is no uninstall option provided, and you cannot delete the .app on macOS because "the application is in use", yet there is no UI to stop or diasble the daemon anywhere, do I really have to manually `pkill kite; rm -RF /Applications/Kite.app` to remove it?
- Your "Start free trial" link on the homepage appears to redirect to forms filled with real user email addresses? Who do those addresses belong to, are you leaking your users emails? [screenshot link redacted]
I can't wait until they release a shell autocomplete solution, I imagine it'll blow the fish shell's (already amazing) autocomplete out of the water. (https://github.com/codota/TabNine/issues/171)