240 comments

[ 5.0 ms ] story [ 250 ms ] thread
Hi everyone, we couldn't be more excited to tell you about Kite and get your feedback!

We think connecting programming environments to a smart backend will improve programming in a lot of ways, and this is just the first step. We'd love to hear your thoughts on where we should go from here!

This looks great! Loved the left-pad joke in there.

Could you elaborate on when it'll be available? Will you make it or parts open source?

Also the hostname of "TayandYou".
And the icons on the desktop.
And the Batman v Superman. lol
We will begin inviting folks today. We want to control the upramp for two reasons: first, with desktop software, every time you take a step up in user base order-of-magnitude (1 -> 10 -> 100 ...) you see new bugs from odd desktop configurations. For example, we've already had one user whose machine wouldn't resolve "localhost" when docker was running : )

Second, we have to also manage backend scaling. We have some pretty strong systems engineers, but maybe because they're experienced they know what they don't know!

But we want everyone to be using it ASAP also.

RE open source, today we open sourced our client plugins (http://github.com/kiteco/plugins), and published instructions for writing your own. If you use an editor that isn't supported, it's about a 2-3 day project to create a plugin for a new editor. : )

Someone I know can only ping localhost as root on his Mac. Still haven't figured that one out hah
Are you open to new clients being written in addition to editor plug-ins to the existing client? For example would you be open to a client interface directly from Atom or the terminal instead of a side by side window experience?
I have a question that is not answered on your /privacy page. Do you anonymise the data you collect? I'm curious about terminal commands in particular, but I don't care so much if the usage information can be linked back to me.
Fantastic idea. Disappointed I can't use it now! I'll be waiting for use with Swift.
Thanks! FYI: if you sign up at kite.com then you'll get to enter the language you use, so we can get in touch when we get to swift.
One of the best demo videos I've seen
Wow, this looks pretty amazing - well done with the demo. I'm super excited to try it out, how soon will it be ready?
We have some folks outside of the company using Kite already, and will be scaling that up as quickly as we can!
I was exited until:

    What platforms does Kite run on?

    For now, Kite only works on OS X, but we'll support Linux and Windows soon, too.
bummer :(
It's good to polish it first for one OS. Honestly, I would have been disappointed with them if it were otherwise.
I started slinging code in Visual Basic 5 back in the day, and ran Windows until recently. I hope to be able to jump into building the Windows client soon : )

Fortunately all of our UI is html and javascript, so no windows controls needed : )

+1 for Electron sounds like you have a knowledge gap and are missing an easy cross platform opportunity.
Do you support code linting or code smells in addition to completions?
Looks great!

The only thing is I don't like the thought of having to share my screen real estate. Would it be possible to have some kind of navigable popup box within the editor?

Yeah this is something we're still iterating on. Though it wasn't in the demo video, there is actually a global keyboard shortcut to show/hide the sidebar without defocussing your editor. We're going to be experimenting more.
Justin kan mentioned the upcoming launch of this on snapchat the other day and I was intrigued. This does look awesome!
That's great, very exciting to have it internet based and to have it become smarter and smarter over time.
This looks really interesting. One question I have is how will you handle hotkeys? If I'm focused in my editor, I don't really want to have to move my mouse to select options suggested by Kite.

Excellent demo. Concise, simple overview of features but with enough little details (loved that rm -rf warning!) to keep me interested, and really well-edited.

I certainly hope there is a way to use Kite comfortably with minimal/no mouse usage.
The plugin API doesn't make it look likely.
Hi, Jay from Kite here. Agreed. We are definitely heading in the direction of keyboard shortcuts to access key features in Kite. For example, we have Cmd+; for switching between your editor and Kite. And more are coming up. We want you to get the most relevant info without leaving your keyboard!
Often I work in a full screen editor environment like terminal Vim with Tmux. Are you considering support for a command line client that could run in a split pane or window alongside my terminal editor?

If you implemented such functionality the suggestion experience could be more seamless for myself and those with similar workflows.

Supporting the variety of dev setups will definitely be one of our challenges. We've tried to start addressing this with 2 column mode (not shown in the demo video, but happens when Kite is in landscape mode; good for multimon), snapping to the side of your screen, and left/right-handed orientations.

This will be a long term effort. We have a lot more work to do here, along the lines of assisting with Z-index management, attaching to windows, etc.

Overall there's a lot to do! We will get there and are signed up for the long term.

This would be even more amazing if it was free or cheap.

It would be cool if they also open sourced it

I'm sure it will be one of many of the same kind of tool come time enough. I hope the team makes tons and tons of $$$. Also I can't wait to try it out!
What we be really cool is if you wrote an open source version. I'm sure if you started it, you'd find people to help once you reach minimal functionality.
Probably not the problem you're trying to solve but I'd like a better typing assistant as well as a co-pilot. For example, on the first line, I'd like to type "r" then be prompted for "import requests" Anywhere where the video had to be sped up is ripe for an advanced typing assistant. Typing entire lines like this seem unnecessary:

"from left_pad import left_pad"

I guess a super autosense along with Copilot would make for more exact coding.

Absolutely. We're going to be working on this for many years, and this is the kind of thing we're aiming at.
Agreed that this looks awesome. Seeing code completion and context sensitive help for running terminal commands (e.g. netstat), not just programming languages, was what made me hit the sign up button.
You might want to check out the Fish shell. I've been using it for about a year and it supports completion for most commands by parsing their man pages. It's pretty nice.
I tried Fish a while back, and liked it very much. Trouble is, I can't roll Fish out across a work server estate.

Well, I could. But then I probably wouldn't be at work much longer. ;-)

I was about to ask some questions about exactly what gets sent to Kite and what you do with it. Your privacy page[0] answered my thoughts and concerns quite nicely.

[0] https://kite.com/privacy

This is a great idea. I particularly think the trade-off between a separate tile vs. a traditional overlay is interesting.

While we lose things like auto complete, it might be less intrusive for the times when we don't need help. It will be interesting to see if we see a new generation of smart IDEs.

I was really excited, then very disappointed to see the code I type is sent to your servers. This immediately prevents it from being used by many businesses, including my employers.

Super bummer :(

Please get the on-prem sorted out pronto!

seriously, I don't think anyone is after your code.
Tell that to a tech Fortune 500's legal department.
Not even. I work for a 30 person company and I can't even share my own personal code with third parties.
Wait what
Yep... I'm exaggerating but I did trade some freedom to post whatever code I want wherever for a better salary. It's not uncommon for contracts to give employers ownership of any ideas/code an employee comes up with, or to specifically prohibit freelancing or contribution to open source.
That sounds absolutely terrible... but to each their own I suppose.
Indeed to the latter bit. I'm completely okay with it; otherwise I wouldn't have signed the contract. Kind of irritating that someone downvoted me too.

Thanks to the good Samaritan who gave my point back :)

Also, it's totally reasonable for some companies to have restrictions like this. At my company, for example, the primary business is some really smart math guys coming up with market models. By programming these models, a programmer will get algorithms and ideas which belong to the company in their mind. Depending on the nature of a personal/open source project, one could even inadvertently use the company's ideas--putting the company's property out in the open and potentially benefiting competitors.

I'm in a similar situation - had to have a detailed discussion with the our local legal counsel about what I can/cannot opensource. Long story short, for personal projects: a) I cannot use my company provided laptop. b) It cannot overlap with my employer's current or future business interests.
For others reading this thread - there are only 8 states that provide restrictions on what these contracts can say regarding what ideas/code are owned by the company. In the other 42, most contracts won't care if you used company resources, or if your work is in an entirely different industry - the employer will own what you make if they're paying you for the month in which you made it. It's not very nice, but it's not like you're being cheated when you choose to take a salary.

http://www.intellectualpropertylawfirms.com/resources/intell...

There's plenty wrong about California, but this is one of the nice parts about living here.
That doesn't change the fact that sending code to a third party is explicitly disallowed by many employers.
I'm not concerned about people stealing my code. I'm concerned about losing my job, which is the consequence of transmitting proprietary code over the network to an unknown 3rd party.
Also plain legal implication. Our code could contain some protected information (transient debugging code mostly) and it is illegal to transmit it to a third party first because of DNA our company has signed, and then with regards to data protection act (credit card information, name, address).

At the very least, the service would need to be validated quite extensively.

The problem is that it is not his code to begin with. So somebody cares: the employer, the owner of the code.
From the privacy page:

Does Kite offer an on-premise option?

Kite does not have any plans to add an on-premise offering at the moment. If you are interested in an on-premise or AWS co-managed installation of Kite servers, please email onprem@kite.com.

I'm not clear on why we need to upload the full codebase.

The Privacy Policy indicates that this is because their index of public code is too large to copy to the client machine. So why can't my machine just send queries as needed, or, even better, download the subset of the index relevant to my project?

Maybe it was easier to ship the "local code" search features by building on top of the existing public code indexing, which is server-side. But, despite the extra engineering work, client-side indexing for local code would definitely make a lot more sense for most customers.

We really did think a lot about this. It turns out that there is no clean separation between "index code" and "query for results". E.g. In Python if you see x.foo() you may need to know a _lot_ about the universe of Python libraries to do the type inference required to figure out what foo is in that particular expression.
I'm not sure that addresses the question; likely I'm missing something. Why does it need to send the user's entire codebase over? If it's a question of needing to analyze a given source file to infer types so query results are relevant, then why not do that inference work client side and ship back just the type information to the server where the query is run?

Even if that is a step too far, you could strip out string literals (e.g. API keys), and obfuscate variable, method, type, and file names while retaining a map on the client side so results line up.

That seems possible with a strongly-typed language, but for something like Python, they'd basically have to recompile the code on every keystroke, right?
Wouldn't they basically need to do this (compile the code) even if they have all of it?
nooooo! why does it do this?? It's a cool tool but it'll never fly in industry.
We want you to be able to use it just as much! : )

There will be an adoption curve from early -> late adopters. Working through this is something we're committed to, and we know it will take time.

We're committed because we think it will be incredibly valuable to our field. We just can't imagine a future 50 years from now where programmers don't benefit from a smart backend helping them work.

So we start with step one today, and here we go : )

(comment deleted)
(comment deleted)
(comment deleted)
I'm very impressed!
Privacy question - what will Kite do with the source code stored in its databases when/if Kite shuts down or is acquired? How will you respect the licenses of the files you upload?

(paraphrased) "You trust Github/Slack, why not also trust us?" Perhaps because Github and Slack's monitization models are well known, and Kite's are not.

It's a great concept for a tool, but I could never get it to fly at work. I couldn't even begin to imagine trying to convince a technically savvy cofounder (let alone their lawyer) with "let me use this tool which uploads all of our code to their server."

Alex from kite here. Re privacy: we totally agree that it's a legit concern. when we started working on this we realized if we wanted to index tens of thousands of libraries, we wouldn't be able to ship the entire index along with the client. Hence the cloud-based architecture. We've thought a lot about privacy and written up our thoughts here: www.kite.com/privacy. The short answer is: we don't index anything on your computer that you don't explicitly ask us to, and our plan is to earn trust the hard (i.e. only) way: transparency, published policies, and a track record of good decision making.
How about offering an on-site solution, where the client can deploy the Kite service on their own machines?
It's something we've thought a lot about. For anybody interested in this, shoot us a message at onprem@kite.com
I would agree with this. Every client doesn't need this running, but having it running locally would be nice. I imagine, a business with many programmers all using this would get pretty cluttered with constant updates to this, but an onsite installation could easily clean that up.

Even if you have to ship individual backend modules (when more languages get supported). One place might only need the bash/python/js syntax whereas another might need only php, etc.

An on-site installation would also be able to refer to internal documentation, wikis, etc.
I did read the privacy document, which does not address the acquisition/shutdown aspect, which is fairly important; Oracle (for example) may not have the same views on the privacy of the acquired data as you do.

Also, do you have plans to support deletion of indexed data?

Yeah, this is something we should have put in the privacy doc. We're talking about it now. Definitely want to think properly on this stuff before posting something publicly (as with anything privacy-related) but we'll have an update.
I think this is a great point. Does anyone know if it's possible to bulletproof against what an acquirer might want to do with the data? Is there a way, for instance, to shift the ownership away from the company gathering the data such that if ownerhship of the company changes, ownership of the data does not?
Lawyer here. Not my area of speciality but off the top of my head (and after thinking about it for all of 30 seconds) that strikes me as a surprisingly hard thing to do. Bankruptcy courts have extremely broad powers to administer the assets of debtors including disavowing contracts. There may be some way to do a structure where the data is escrowed with a 3rd party and the subject company is just holding the data as some sort of fiduciary, but I'm not sure anything like that has been tested. I would want to consult a bankruptcy expert to really figure something like this out.
Super helpful -- thanks for chiming in. I think its really interesting that this isn't worked out yet. It feels like there should be a way to say to a consumer "I'm just looking after your data -- you still own it, etc. Even if I go bankrupt or get bought, I can't change that and the acquiring company should consider that when valuing me." I mean, banks do it with money (and other assets). One bank buys another and there's no way for it say "Now your money is mine! Muwahaha". Feels like it's a whole missing regulatory / legal area to me.
What if Kite can't legally use the data for alternative purposes? I don't think disavowing a contract via a bankruptcy would let a company sell assets they don't own.

So Kite should be able to avoid this fear by asking only for limited license. For example, a license can expire after 1 year, or be untransferable (or perhaps expire at bankruptcy?).

Facebook does this to some extent: "This IP License ends when you delete your IP content or your account unless your content has been shared with others, and they have not deleted it."

Here's what Heroku does: "Heroku claims no ownership or control over any Content or Application. You retain copyright and any other rights you already hold in the Content and/or Application, and you are responsible for protecting those rights, as appropriate. By submitting, posting or displaying the Content on or through the Heroku Services you give Heroku a worldwide, royalty-free, and non-exclusive license to reproduce, adapt, modify, translate, publish, publicly perform, publicly display and distribute such Content for the sole purpose of enabling Heroku to provide you with the Heroku Services. [...]"

(IANAL)

Disclaimer: I'm not a lawyer, but I did write my company's privacy policy with approval by lawyers.

A lot of companies' privacy policies have a section explicitly dealing with how data is transferred when company ownership changes. Sometimes this just says that all data will be transferred, but sometimes there are stipulations (for instance, my company doesn't sell or rent user data for marketing purposes, and its privacy policy requires that an acquiring company won't do that either).

Of course, there are edge cases (like what happens if the privacy policy changes) that complicate things, but the FTC has a pretty helpful discussion of all of this: https://www.ftc.gov/news-events/blogs/business-blog/2015/03/...

I raised this point with my lawyer recently. His view is that this is essentially impossible - any rules in the company articles can be rewritten or dropped at the whim of the acquirer.

Some technical solutions might be possible, in terms of allowing users provably to withdraw their data, but it would be messy and probably not bulletproof.

I like that you're planning to earn trust long-term, but, if customers are entrusting their proprietary codebase to you, some more concrete promises will be important, too.

There's a difference between trusting someone not to redistribute your work versus having it in writing. Both are important.

Even though I trust you, there's no way anyone can guarantee that a hacker won't get into your database and get my proprietary source code.

I'm no security expert but one way I can think of is creating an encryption system which works like this: all my source code will be stored encrypted on your (non-ephemeral) databases. The decryption key will be stored on my computer, and it'll be transferred to the server when I run Kite and destroyed as soon as I quit Kite. The key will be stored in your server only in an ephemeral storage (in-memory database etc.)

Except those keys could still easily be vulnerable to Heartbleed style overflow attacks. The only real answer here is hosting your own service behind your firewall the same way people do with Github.
Can I get an invite now? mariodel [at] gmail
The issue with actual source being uploaded is going to be a deal breaker with a _lot_ of corporations. People will use it for stuff that's already OSS, no problem, but not for the proprietary stuff they may get paid to work on. Is there any possibility of processing the code on the client side so that what you upload is not the source, but just the data structures necessary for the index, such that the code itself could not be reproduced from what you have stored on your servers?
I agree. Why would they even need to upload/store the whole file? It seems like it's basing the suggestions on the line you're typing at that moment, so it doesn't seem that hard to just throw away the history immediately, and only deal with the 1-3 lines you're currently typing.
It indexes your code as well. All your project's libraries for example so it can give you suggestions relevant to your project.
Could you also answer the other part of the question: What is your revenue model?
We host GitHub, etc on site. Not because we don't trust them, but they don't have the resources we do to keep bad guys out.
It's a great concept for a tool, but I could never get it to fly at work.

Not windy enough for flying a kite? ;)

(comment deleted)
What about passwords? Either from an ssh prompt, or in a static file like MediaWiki's LocalSettings.php.
They mention terminal passwords on their privacy page (short story, they don't read passwords if they aren't echoed on the terminal)

The ability to exclude files that I know contain sensitive data would be a very nice step. Even better if you explicitly state that retroactively excluding files will result in a deletion of the file from your servers.

Kite should just ask for a limited license like Heroku does (ideally more limited). Anyone worried about their IP should never use a service like Kite (or Heroku!) without looking at the legal docs — to ensure that they are not giving away their work for another organization to use or sell...

Kite doesn't seem to currently have any legal docs that I can see, but I assume that will rectified soon.

More detail in another comment: https://news.ycombinator.com/item?id=11499670 (Also, hi Adam and Alex! Congrats!)

Autocomplete on steroids. This looks very cool and the demo vid was very well done!
All "my BigTech Co won't let me use this at work" and other privacy concerns aside, this is an amazing tool for budding programmers or experienced ones using an unfamiliar language. Can't wait to try it out!
This isn't that big a deal IMO. For a start, any non-trivial complex problem will probably not be included in kite, and the trivial stuff is generally memorised or easily googled.

This is really only spoon feeding.

I guess it depends on what a 'big deal' is exactly, but if it saves me all the Googling I do now then it'll be really useful (to me).

I don't expect them to really provide an intelligent artificial pair programmer, so you're right that this won't help with "any non-trivial complex problem", but that's okay with me.

I don't mind being spoon fed stuff I'm not interested in acquiring 'the hard way'. Do you also disdain autocompletion in your code editors?

Funnily enough, I've never used auto-completion. I've even gone through the trouble of deactivating it in Atom, but disdain is a strong word.

Also, it just occurred to me that Kite is basically a keylogger. Every keystroke is sent to their servers. That requires a lot of trust.

Fair enough.

And certainly Kite could be a keylogger. So you're right that using it requires a lot of trust.

> Funnily enough, I've never used auto-completion. I've even gone through the trouble of deactivating it in Atom,

Super 1337 bro

One thing I will say though. Is that I greatly respect 'the hard way'.
Meh – https://xkcd.com/378/

I certainly understand why it's enjoyable, and useful, to setup artificial challenges, but I have way too many projects I'd like to work on, and complete, to want to make programming generally harder.

I often Google for trivial syntax when switching back and forth between programming languages. A quick reminder without having to leave the editor window would be great. Also, typos.
Look into Dash. Even if you don't want to pay for the application (or can't run it on your platform), the docsets are free and ISTR there are some editor integrations for them that don't involve the paid app.
This looks fantastic. It would be great to get this working in Light Table.

Another commenter asked about hotkeys and I'd like to pile on to that sentiment – I've recently started using Vim (and Vimium) and it's really disappointing not being able to navigate by keyboard.

This kind of tool destroys ones ability to program long sustainable production code. For a novice programmer this has tremendous negative effect on the learning curve. For an experienced programmer this tool is useless, because an experienced programmer will NEVER rely on "popularity" of some code-snippet out there in the wild. Programming is a very intense and deep practice and it is certainly not crafted using this kind of tools. This tool helps people write poor quality code for customers. Makes me wonder, what Knuth would say on this?
IntelliJ already has most of what this tool offers (but for java as opposed to python). It has auto-complete, quick access to documentation, quick fix suggestions (such as missing imports, etc.) and many many others not available in Kite at the moment. You wouldn't say IntelliJ "destroys ones ability to program long sustainable production code" would you? Because if you would, you'd be absolutely wrong.
(comment deleted)
IntelliJ certainly doesn't do this. IntelliJ and Kite have functionalities in common, which are fine. The other parts of Kite that IntelliJ hasn't, are problematic.
What about experts who are transitioning new languages or technologies? I'd say this tool has tremendous value for them. Also, as long as novice programmers understand the fundamentals (DS, algorithms) something like this won't have a 'tremendous negative effect' on their learning curve.
In my opinion Kite is promoting "coding by gluing" which certainly gets the job done in our economy but it is not yielding long sustainable code.
So if there was an open source version of this, I'd use it. I would never trust it otherwise. Large corps will never trust it either, IT sec policies would roast you for using this. Instead I see an opportunity for IDE's to step up this space and provide this built in, without copying and keeping your source code.

"What information does Kite keep around on its servers? Usage information about which results you click on in the sidebar. Contents of all Python files in enabled directories."

Exactly, I really don't want to have to tie myself to a single company for my tools, and I definitely don't want to be handing over all the code I type to that same company. Having a company sponsored key logger just to remove googling for documentation/basic autocomplete is not something I'm interested in doing.
I thought I was signing up for Kite not for Kite's email list. Pretty misleading copy. Nowhere does it say "Coming soon" or anything to that effect.

Also, there seems to be no confirmation email.

Sorry if there was any confusion, but just FYI we're sending out the first invites today, so we're definitely "in motion".