Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

Bashore Technologies


Blog of Andrew Bashore. Featuring project updates, tutorials, code, tidbits and other jargon.

The Story of GeoTTV

Recently I've been getting a lot of hate about maintaining the GeoTTV extension for Twitch.tv. I'd like to take the time now to tell you the story about why I created GeoTTV. Hopefully this might change some opinions about the extension.

For those of you not familiar with GeoTTV, its basically a fork of another extension that adds similar features called BetterTTV.

tl;dr

Before I go any further I want to say: There is nothing inherently wrong with either extension. Whichever one you choose to use, if any at all, falls squarely on the users personal preference. I really don't care if you use GeoTTV or not. My intention was to maintain it for personal use but also allow anyone to use it if they wish.

It's not a war or competition to get the most users and I really don't want people trying to make it one. I don't market it as "Better than BetterTTV" and I'd appreciate if others wouldn't do so either.

Story

GeoTTV v1

GeoTTV has been around for quite some time. Before I publicly published on Twitchapp, Userscripts and the Chrome Web Store, it was a private application based off another much earlier fork on BetterTTV called Itaku's Twitch Chat. I originally forked the extension because I wanted to make some slight alternations to some of the behaviors such as message deletion. (I wanted a strike through approach instead of having to click to reveal.) Also, I wanted to remove things like custom user tags and emotes that I had no interest in seeing.

Eventually after various breaks to Itaku's Twitch Chat and likewise GeoTTV, I decided I want to update to a more modern version of BetterTTV.

GeoTTV v2

Some people might ask, what not just use BetterTTV instead of making a separate extension? Well, that answer has a lot of parts.

First, Night and I have a very different design philosophy about what the extension should look like. He opts more for the change everything approach: purple to blue, JTV monkeys instead of robots, Meebo, etc. and I wanted a more stock Twitch experience with a few modifications.

Also as a Twitch Global Moderator account security is a big area of concern. What most people do not know is that browser extensions can basically do whatever they want in your sessions on the sites where they request privileges. On Twitch, this includes stealing chat login token, user session data, and running /any/ arbitrary code they see fit. You browser could unwittingly be turned into a zombie chat spam bot with a few lines of new code. Because of this I wanted to have a version with a remote script I controlled so the only changes that could get pushed into the extension are ones I approve. It's not that I don't trust Night personally, I simply don't trust /anyone/ besides myself with my Twitch account access.

As with v1, v2 was originally a private manual install extension. However, as time grew and more people expressed interested to use it, I decided to publish it to the Chrome Web Store for ease of installation. This also had the added benefit of allowing GeoTTV to be synced across multiple linked browsers since manual install extensions are not.

There isn't really too much else to this story. I forked the extension, removed a lot modifications and features I did not want and then added some of my own.

OMG! He's stealing code!

"OMG! He's stealing code!" "Why didn't you just ask first?" are comments I hear quite a bit and these are valid questions that users uneducated about the actual code backend of the application might have.

Simply BetterTTV is under an open source license that allows these type of forks. The license is pasted below. Pay special attention to the first paragraph.

/**
 * Copyright (c) 2013 NightDev
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice, any copyright notices herein, and this permission
 * notice shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

That copyright notice is present in the head of GeoTTV's remote script in the same place as BetterTTV. I also still include the BetterTTV copyright and credits in the footer of the settings panel. I will admit I never did ask Night directly if he minded that I forked his code but I didn't think I had to. I talk to him quite frequently and never once has he ever expressed any dissatisfaction with the existence of GeoTTV.



Discussions

comments powered by Disqus