There's trouble in open source land, revolving around a text editor that's popular with developers and a proprietary toolset, Kite, that wants some of that open source business. Their way of getting it, however, seems to have backfired.

Atom is a text editor developed by GitHub and released under the MIT license. It's been around for about three-and-a-half years, during which time it's built a sizable user base. Developers like it because it runs on most operating systems -- Linux, Windows and Mac -- and comes with a lot of dev-friendly features built-in. They also like its modular design, which has spawned a community of devs creating plugins that further expand its capabilities.

A brouhaha began surfacing in April, some time after Cédric Néhémie, the developer of mini-map, a popular open source Atom plugin that shows a "mini-map" overview of a user’s code for easy navigation, took a job at Kite, which is a new-kid-on-the-block closed source developers' tool. Offered as SaaS, it indexes all of a user's code, then uses machine learning to offer suggestions, fix errors, and show examples as the user types. It came out of beta for Python developers around the beginning of April, with plans to support other languages in the future.

On April 20, Néhémie quietly made a change to his mini-map plugin called "Implement Kite Promotion," which allowed Kite, his employer's service, to look at a user’s code as it's typed within mini-map, then offer links to pages on Kite’s website. This upset many of mini-map's users, who didn't see this as a "feature" -- which is how Kite tried to later explain it -- but as spam.

This began a discussion on the plugin's GitHub page on April 27, after a user started a thread, linked to the page with the Implement Kite Promotion code, and asked, "Could you add the way to disable it?" That was followed by a user who noted, "As I understand the function of this package, it should not even be in there at all." A third user replied, "Time for AdBlock for Atom." The fourth commenter indicated he was disabling and not using the plugin until the issue was worked out.

On May 3, GitHub user Juan Lozano posted to the discussion, identified himself as a Kite employee and attempted to do damage control. He quelled some fears by explaining that the mini-map plugin does't upload code to third party services, which had been a concern, but is analyzed locally by the plugin on the user's machine. He also said, addressing another concern, that even though the Kite connection could, by that time, be disabled by the plugin's user, the feature would remain opt-out instead of opt-in "since many users have found it useful."

Opt-out is rarely a way to gain fans, and it didn't work here. As for the claim that some "have found it useful," one user wanted to know: "How exactly did you determine that? Do you mean initial 'WTF is this?' traffic to your website?"

The folks at Kite should have expected unhappy campers; the company's founder and CEO, Adam Smith, is not new to the software game. He was a co-founder of Xobni, which developed email tools that worked with Microsoft's Outlook, and wore many hats there during the lifetime of the company, including CEO and board member. In 2013, Xobni was sold to Yahoo -- reportedly for over $60 million -- and in typical Yahoo fashion, was closed down a year later. Smith founded Kite in 2014.

So why would he, or the company he runs, attempt this sort of end-run around an open source project that was sure to devolve into a PR nightmare?

Indications are that Kite shouldn't be overly desperate for customers. According to a March article on VentureBeat, when it entered into public beta in April 2016, over 60,000 signed-up and it received "dozens of inquiries from Fortune 500 companies for an on-premise solution." From the sound of it, devs were already beating a proverbial path to their door.

The company also doesn't seem to be underfunded or in dire need of cash. The same VentureBeat article reported that Kite has raised more than $4 million from a roster that includes PayPal co-founder Max Levchin, WordPress co-founder Matt Mullenweg, Palantir co-founder Joe Lonsdale, Dropbox co-founder Drew Houston, and Twitch.tv co-founder Emmett Shear. And it's almost certain that Smith still has a substantial amount stashed away from the sale of Xobni.

And the software evidently works well. Several people in the mini-map discussion commented favorably on Kite's capabilities, indicating they might have become customers if the company hadn't tried to force itself on them through an open source toolset that many believed belonged to the community.

It eventually turned out that mini-map hadn't been the first Atom plugin to receive the Kite treatment. Another popular Atom tool with over 971,000 downloads, autocomplete-python, had been hooked to Kite since December. This didn't come to light until May 13, when GitHub user Armin Sebastian posted that he'd noticed that a Kite employee, Daniel Hung, along with mini-map's Cédric Néhémie, had been making pull requests and merging Kite code into autocomplete-python. He also noted that since then the plugin's main developer, Dmytro Sadovnychyi, had "gradually stopped contributing and all new commits were authored by @abe33 [Néhémie]" and that "other Kite employees are also showing activity on issue threads."

On the surface, autocomplete-python and Kite might seem to be a great match. The plugin pretty much does exactly what its name says; it adds an autocomplete function when coding in Python. Traditionally, the plugin has pulled data from Jedi, a Python autocompletion/static analysis library. Kite offers a similar functionality, but with added bells and whistles, so including it into the mix might be considered a no-brainer.

But this wouldn't be the way to go about it. According to The Register, Hung was not only a Kite employee at the time of Sebastian's May 13 post, but had been employed by the company in December when he'd added the company's code to the plugin, a relationship that wasn't at the time disclosed.

"For me Kite seemed to be like an interesting *optional* integration for python completions, so I did gave them the access since I don't have much time [for] implementing another completions provider by myself," Sadovnychyi, the plugin's main developer wrote. "It seems great – I'm keeping the Jedi support, while Kite could work on some awesome features from their side, so the package could constantly improve, even when I don't have time for it. Well, it seems like it didn't go as smooth as I expected, they did introduce some bugs and some questionable choices, but most of [the] bugs are already fixed."

For developers, Kite's intrusion into autocomplete-python is much more problematic than the opt-out annoyance in mini-map. Under the plugin's new configuration, the app's traditional source engine, Jedi, isn't the default. Users are required to choose their engine on a screen that makes Kite appear to be the obvious best choice.

The trouble is that often Kite is far from the best choice. Unlike with mini-map, use of Kite in the autocomplete-python plugin requires code to be processed on Kite’s servers. This can be a big problem for devs working in corporate environments with policies against having company code hosted in the cloud except on company servers. And in some industries -- say, medical or financial -- sharing code with a cloud service such as Kite might violate industry or legal security and privacy regulations.

With mini-map, the problem appears to be resolved. In early July, Ryan Leckey forked the project as minimap-plus and "reverted the Kite nonsense." The forked plugin has seen over 7,000 downloads. Then last week, Néhémie brought Leckey into the original mini-map project as a collaborator with write access. "I'll do my part to prevent this from happening again," Leckey wrote.

The problem also seems to be resolved for users of autocomplete-python, although that might not last as long. Last week Brennan Vincello forked the project to create Python Autocomplete Jedi Package, which is listed on Atom's packages page as "a streamlined fork of autocomplete-python with good intentions."

Time will tell how well that works out. Forks don't maintain themselves on their own and require work. We'll see how it goes.