#musicbrainz-devel

/

      • marcooliveira joined the channel
      • 2013-02-14 04539, 2013

      • ocharles
        laser* :)
      • 2013-02-14 04517, 2013

      • ocharles
        unless we're talking about light amplification by zimulated emission of radiation, which sounds like a crazy german professor's invention... so it could be!
      • 2013-02-14 04550, 2013

      • ruaok
        wut? its not musicbrains, afterall. :)
      • 2013-02-14 04542, 2013

      • Freso
        *itz
      • 2013-02-14 04545, 2013

      • Freso
        :D
      • 2013-02-14 04558, 2013

      • ocharles
        :)
      • 2013-02-14 04514, 2013

      • ocharles
      • 2013-02-14 04530, 2013

      • ocharles
        my ivory tower needs to come equip with rocket launchers. there is far too much wrong on the internet today
      • 2013-02-14 04500, 2013

      • ocharles
        alas, time to sleep
      • 2013-02-14 04542, 2013

      • Freso
        ocharles: You can't!
      • 2013-02-14 04512, 2013

      • Freso
        ocharles: Remember https://xkcd.com/386/ !
      • 2013-02-14 04528, 2013

      • Freso
        No sleeping after you discovered someone being wrong! D:
      • 2013-02-14 04540, 2013

      • ocharles
        oh yea, dems da rules
      • 2013-02-14 04553, 2013

      • Freso
        I also learned today that XKCD comics have a <div id="transcript" style="display: none"> with a transcript of the comic.
      • 2013-02-14 04556, 2013

      • Freso
        That's... awesome.
      • 2013-02-14 04518, 2013

      • JonnyJD
        freso: that's necessary to be indexed by text in google ;-)
      • 2013-02-14 04542, 2013

      • Freso
        JonnyJD: Sure.
      • 2013-02-14 04500, 2013

      • Freso
        JonnyJD: But you don't need to repeat the title/hover text of the image.
      • 2013-02-14 04505, 2013

      • Freso
        JonnyJD: Etc.
      • 2013-02-14 04513, 2013

      • JonnyJD
        right
      • 2013-02-14 04510, 2013

      • JonnyJD
        maybe that is better for screenreaders
      • 2013-02-14 04521, 2013

      • Freso
        That's what I was thinking.
      • 2013-02-14 04526, 2013

      • hawke_1 joined the channel
      • 2013-02-14 04519, 2013

      • JonnyJD
        and supporting that really IS better than just trying to get indexed by google. But I have no clue about any standards for this.
      • 2013-02-14 04544, 2013

      • Freso
        One my personal SEO tenets is to make stuff as accessible as possible.
      • 2013-02-14 04517, 2013

      • Freso
        The easier it is for people with "special needs" to read the page, the easier it will likely be for search engines etc. too.
      • 2013-02-14 04531, 2013

      • Freso
        This here being a good case for that. :)
      • 2013-02-14 04551, 2013

      • Freso
        Disable all CSS and images, and you will still be able to "get" the comic.
      • 2013-02-14 04553, 2013

      • ruaok
        ianmcorvidae: the 1099 is in the mail. try not to laugh at the handwriting. :)
      • 2013-02-14 04528, 2013

      • JonnyJD
        I found http://www.w3.org/TR/WCAG20/ and http://webaim.org/standards/508/checklist but I couldn't find a "transcript" id.
      • 2013-02-14 04530, 2013

      • Freso
        Do they have accessibility guidelines specific for web comics though? :)
      • 2013-02-14 04509, 2013

      • Freso
        http://www.w3.org/TR/WCAG20/#text-equiv " Guideline 1.1 Text Alternatives: Provide text alternatives for any non-text content so that it can be changed into other forms people need, such as large print, braille, speech, symbols or simpler language."
      • 2013-02-14 04539, 2013

      • Freso
        That seems to cover it pretty well. :)
      • 2013-02-14 04511, 2013

      • JonnyJD
        logically: yes. I was looking for some kind of syntax/api/naming scheme for that
      • 2013-02-14 04541, 2013

      • JonnyJD
        but maybe there is no such thing
      • 2013-02-14 04501, 2013

      • Freso
        I don't think there is.
      • 2013-02-14 04513, 2013

      • Freso
        The closest thing would be to include it in the alt="" element.
      • 2013-02-14 04521, 2013

      • Freso
        But I guess you quickly enter into browser compatibility issues with that, if you wish to support older versions of a certain browser, which IIRC didn't deal well with alt attributes more than a certain length. (Given how some XKCD comics can be somewhat long-ish.)
      • 2013-02-14 04553, 2013

      • JonnyJD
        and you probably don't want the whole description to fill the screen when your mouse lands on the image
      • 2013-02-14 04507, 2013

      • Freso
        Well, that should be the title attribute used for that. :)
      • 2013-02-14 04528, 2013

      • Freso
        (Which he's also using as part of the comic itself.)
      • 2013-02-14 04543, 2013

      • Freso
        But old(er) browsers may have different behaviour.
      • 2013-02-14 04538, 2013

      • JonnyJD
        oh right, that's the title. I seem to have forgotten that in the last years.. I am sure I checked that at some time
      • 2013-02-14 04532, 2013

      • JonnyJD
        oh well, time to go to bed
      • 2013-02-14 04519, 2013

      • _flow_ joined the channel
      • 2013-02-14 04523, 2013

      • Freso has been in bed the whole day
      • 2013-02-14 04536, 2013

      • Freso
        It's not good for me to have tatl back in function. :|
      • 2013-02-14 04510, 2013

      • ruaok joined the channel
      • 2013-02-14 04513, 2013

      • adrianw joined the channel
      • 2013-02-14 04529, 2013

      • MBJenkins
        * Ian McEwen: MBS-5759: make 'Reorder Cover Art' an autoedit
      • 2013-02-14 04530, 2013

      • MBJenkins
        * Ian McEwen: MBS-5520: remove extra level of indirection for some links whose text needs to be translated along with their containing string
      • 2013-02-14 04531, 2013

      • MBJenkins
        * Ian McEwen: Update mb_server.pot
      • 2013-02-14 04532, 2013

      • MBJenkins
        * Ian McEwen: Update translations from transifex.
      • 2013-02-14 04550, 2013

      • ianmcorvidae
        apparently I suck at writing non-test-breaking patches lately
      • 2013-02-14 04555, 2013

      • ianmcorvidae
        (it's running again though :P)
      • 2013-02-14 04541, 2013

      • MBJenkins
        Ian McEwen: MBS-5759: add proper includes to unbreak tests
      • 2013-02-14 04549, 2013

      • ianmcorvidae
        or not :P
      • 2013-02-14 04505, 2013

      • MBJenkins
        Ian McEwen: MBS-5520: Escape dollar sign in template to unbreak tests.
      • 2013-02-14 04546, 2013

      • Prophet5 joined the channel
      • 2013-02-14 04524, 2013

      • warp
        hello!
      • 2013-02-14 04515, 2013

      • ianmcorvidae
        bah, 3scale's docs are not what I'd like them to be :/
      • 2013-02-14 04521, 2013

      • ianmcorvidae
        well, really, it's more that they have a bunch of mutually-incompatible options for doing what should be the same thing
      • 2013-02-14 04558, 2013

      • ianmcorvidae
        you can use a language plugin, varnish, or nginx -- each language's plugin has a different set of features actually implemented, the varnish plugin has a different set, and the nginx stuff seems to be yet another set
      • 2013-02-14 04536, 2013

      • ianmcorvidae
        and most of this you can only find out by reading the code!
      • 2013-02-14 04544, 2013

      • ianmcorvidae
        of course, the specific thing I was hoping to do appears to be available only (in the places I've deciphered enough to find out) in the PHP language plugin
      • 2013-02-14 04521, 2013

      • ianmcorvidae
        (so neither the perl nor the varnish options -- haven't figured out how the nginx thing works at all yet, though I know it uses nginx features we don't have, so we'd have to replace our nginx on the frontends...)
      • 2013-02-14 04525, 2013

      • ianmcorvidae
        </rant>
      • 2013-02-14 04558, 2013

      • warp
        ianmcorvidae: sounds fun.
      • 2013-02-14 04522, 2013

      • ianmcorvidae
        heh, something like that :)
      • 2013-02-14 04531, 2013

      • warp
        ianmcorvidae: how complicated are those plugins?
      • 2013-02-14 04555, 2013

      • ianmcorvidae
        the varnish one is not something I'd be fond of dissecting, especially since it's in C, which I don't really know
      • 2013-02-14 04523, 2013

      • warp
        knowing C doesn't make dissecting any more fun :)
      • 2013-02-14 04526, 2013

      • ianmcorvidae
        the perl one is very straightforward and could probably be extended to do what I want, but I'm not sure about writing more perl or if that's the proper place to be doing things (especially since it might make caching of responses less than possible)
      • 2013-02-14 04547, 2013

      • ianmcorvidae
        well, it possibly makes it at least more plausible as a route forward :)
      • 2013-02-14 04514, 2013

      • ianmcorvidae
        my thinking is I may just see if I can interact with a real person at some point
      • 2013-02-14 04522, 2013

      • warp nods.
      • 2013-02-14 04529, 2013

      • ianmcorvidae
        the basic issue is that, at present, the varnish stuff is basically written such that we would only be able to know "they're authorized" vs. "they're not authorized", which means we could only have one sort of plan, which seems like bad forward-thinking :)
      • 2013-02-14 04524, 2013

      • warp
        it doesn't come with any sort of identifier of who is being authorized?
      • 2013-02-14 04500, 2013

      • ianmcorvidae
        it would pass along an application ID, but without another query to them from the perl (meaning we request from them twice per request) we don't know what plan that corresponds to
      • 2013-02-14 04527, 2013

      • ianmcorvidae
        the authorize/report endpoint we're using does return the plan, but it doesn't seem to be available via the 3scale plugin at all
      • 2013-02-14 04500, 2013

      • ianmcorvidae
        though, hm, I may be able to pass along the entire XML response from the authrep endpoint
      • 2013-02-14 04509, 2013

      • ianmcorvidae
        wonder if there's a character length on HTTP headers
      • 2013-02-14 04512, 2013

      • ianmcorvidae
        limit*
      • 2013-02-14 04547, 2013

      • warp
        ianmcorvidae: i'm also thinking how this ties into more flexible rate limiting for non-paying (but authenticated) webservice clients
      • 2013-02-14 04508, 2013

      • ianmcorvidae
        I think some of my other changes will help there
      • 2013-02-14 04558, 2013

      • ianmcorvidae
        we're moving more of that logic to the ratelimiter -- so mb-server just passes along some basic info (what's being requested, what IP they're requesting from, what user-agent, 3scale information) and the ratelimiter decides what keys to use
      • 2013-02-14 04554, 2013

      • warp
        ianmcorvidae: ok. if customers paying for webservice access want to be authenticated on musicbrainz, do they seperately authenticate to 3scale and MB, or is that just not supported, or something else?
      • 2013-02-14 04529, 2013

      • ianmcorvidae
        so, they sign up for an account (semi-fuzzy what sort of account that is, at present, though I think what we're doing is treating everyone as an "app developer") with 3scale
      • 2013-02-14 04547, 2013

      • ianmcorvidae
        then, when they request from us, they put on some X-whatever headers to pass along their info, which we then use to query 3scale
      • 2013-02-14 04519, 2013

      • ianmcorvidae
        where what we're asking 3scale is basically "hey, who is this key/application ID, are they paid up, and what bucket do they go in?"
      • 2013-02-14 04530, 2013

      • warp
        ah, ok
      • 2013-02-14 04545, 2013

      • ianmcorvidae
        user auth for MB itself just works as usual
      • 2013-02-14 04553, 2013

      • warp nods.
      • 2013-02-14 04523, 2013

      • ianmcorvidae
        and then obviously anything without the X- headers just gets put in the global/normal bucket
      • 2013-02-14 04537, 2013

      • ianmcorvidae
        with the current thing we can't get the "who is this" or "which bucket" answers, and there's no distinguishing "they're not paid up" from "they didn't try to authenticate"
      • 2013-02-14 04500, 2013

      • ianmcorvidae
        not sure the second distinction matters, but if we want to have, say, a user-level tier and a commercial tier, we need the first :/
      • 2013-02-14 04502, 2013

      • warp
        our ratelimiter is currently perl? are we moving that to something else?
      • 2013-02-14 04557, 2013

      • ianmcorvidae
        it's currently perl, I don't know if we have plans to move it
      • 2013-02-14 04505, 2013

      • ianmcorvidae
        I certainly don't see much need to rewrite it, I guess
      • 2013-02-14 04537, 2013

      • warp
        so the varnish/nginx plugin which pings 3scale would just set additional headers for the ratelimiter to act on, correct?
      • 2013-02-14 04519, 2013

      • ianmcorvidae
        yeah -- at present it just keeps the app ID/app key headers intact if the authorization works, and removes them if it doesn't
      • 2013-02-14 04550, 2013

      • ianmcorvidae
        but ideally, I think, it should set an X-3scale-plan (or something) header as well
      • 2013-02-14 04502, 2013

      • ianmcorvidae
        and obviously mbserver needs to pass along those headers to the ratelimiter, but that part's easy
      • 2013-02-14 04554, 2013

      • warp
        I think I would prefer that functionality to be part of the ratelimiter itself, that would focus all the ratelimiting bits in one place.
      • 2013-02-14 04556, 2013

      • ianmcorvidae
        and if we care about distinguishing "not paid up" from "didn't authenticate", it should never remove headers, but add some sort of X-3scale-authorized header (obviously all names are completely non-final)
      • 2013-02-14 04513, 2013

      • ianmcorvidae
        hm
      • 2013-02-14 04530, 2013

      • ianmcorvidae
        as in, pass everything through the whole way, and have the ratelimiter do the ping to 3scale?
      • 2013-02-14 04531, 2013

      • warp
        but then it seems almost a requirement to re-implement the ratelimiter in something faster/better, like nodejs or haskell.
      • 2013-02-14 04544, 2013

      • warp
        ianmcorvidae: yes.
      • 2013-02-14 04506, 2013

      • warp
        ianmcorvidae: well, I imagine nginx pinging the ratelimiter, not mbserver.
      • 2013-02-14 04524, 2013

      • ianmcorvidae
        ah -- that's not how it currently works
      • 2013-02-14 04529, 2013

      • warp
        I know :)
      • 2013-02-14 04532, 2013

      • ianmcorvidae
        mbserver / the search server are what call out to the ratelimiter :)
      • 2013-02-14 04552, 2013

      • ianmcorvidae
        heh
      • 2013-02-14 04556, 2013

      • warp
        sure, but that seems wrong. if someone is going to be denied access because they're over the limit, that shouldn't touch mbserver.
      • 2013-02-14 04509, 2013

      • ianmcorvidae
        that may actually basically be what their nginx thing does -- I know it requires the Lua plugin, so
      • 2013-02-14 04549, 2013

      • warp
        but 'over the limit' is more than just what 3scale thinks, because we have non-paying clients which need to be limited in various ways too.
      • 2013-02-14 04515, 2013

      • ianmcorvidae
        except their nginx thing assumes you're using 3scale's ratelimiting, which we aren't since not everything will need to hit them at all
      • 2013-02-14 04516, 2013

      • ianmcorvidae
        still, that may be the way to go -- move the ratelimiter to be lua code running in lenny/carl's nginx
      • 2013-02-14 04534, 2013

      • ianmcorvidae
        yeah, exactly
      • 2013-02-14 04554, 2013

      • ianmcorvidae
        that's what I mean by "their thing assumes you're using 3scale's ratelimiting"
      • 2013-02-14 04557, 2013

      • warp
        I wouldn't pick lua, but yes, the architecture of mbserver querying the ratelimiter seems wrong.
      • 2013-02-14 04516, 2013

      • ianmcorvidae
        well, lua is just the way that it can just be part of nginx directly
      • 2013-02-14 04535, 2013

      • warp
        yes, I know :)
      • 2013-02-14 04544, 2013

      • ianmcorvidae
        afaik nginx basically only has perl and lua integrated modules, so given *those* choices, lua :)
      • 2013-02-14 04558, 2013

      • ianmcorvidae
        I do like the workflow that creates: if something will be denied, it gets denied early in the process; updating ratelimiter configuration mostly just requires a HUP to nginx
      • 2013-02-14 04501, 2013

      • warp
        sure. so I wouldn't pick nginx for that part, because I don't want write perl, lua or C.
      • 2013-02-14 04532, 2013

      • ianmcorvidae
        yeah; I don't know how well nginx supports querying a separate service for something like this
      • 2013-02-14 04501, 2013

      • ianmcorvidae
        which I think may be part of why it's not currently done with nginx being the step that calls the ratelimiter
      • 2013-02-14 04537, 2013

      • ianmcorvidae
        (it's possible that the only way to get nginx to make an HTTP request in that way is to use Lua anyway)
      • 2013-02-14 04550, 2013

      • ianmcorvidae
        (er, well, HTTP or UDP or whatever)
      • 2013-02-14 04554, 2013

      • warp
        hm? that shouldn't be too hard
      • 2013-02-14 04517, 2013

      • warp
        I think you can use the regal fallback stuff.
      • 2013-02-14 04531, 2013

      • ianmcorvidae
        not quite sure what you mean -- I don't know a way to have nginx do something like "query this endpoint, and depending on the response either return 503/429 or proxy to <load-balanced upstream>"
      • 2013-02-14 04512, 2013

      • warp
        I could be wrong, my experience with nginx is limited, what I'm thinking of is:
      • 2013-02-14 04541, 2013

      • warp
        something like location / { proxy_pass http://ratelimiter; error_page 420 = @denied; error_page 204 = @musicbrainz_server; }
      • 2013-02-14 04531, 2013

      • ianmcorvidae
        oh, hm, that's true, that may work
      • 2013-02-14 04545, 2013

      • warp
        oh I guess the OK status needs to be a 4xx as well (ref: http://wiki.nginx.org/HttpProxyModule#proxy_inter… )
      • 2013-02-14 04547, 2013

      • ianmcorvidae
        I'll read up on nginx @location stuff
      • 2013-02-14 04520, 2013

      • ianmcorvidae
        yeah, but we can use whatever 4xx code we want, it's all internal
      • 2013-02-14 04528, 2013

      • warp nods.
      • 2013-02-14 04539, 2013

      • ianmcorvidae
        I propose our "okay" one be HTTP 418 I'm a teapot
      • 2013-02-14 04541, 2013

      • ianmcorvidae
        :P
      • 2013-02-14 04545, 2013

      • warp
        :D
      • 2013-02-14 04525, 2013

      • warp looks for some code to review.
      • 2013-02-14 04505, 2013

      • warp
        ianmcorvidae: I think we should also discuss how we want to implement rate-limiting headers (like on github and such) soonish.
      • 2013-02-14 04519, 2013

      • ianmcorvidae
        hm?
      • 2013-02-14 04532, 2013

      • ianmcorvidae
        oh, as in for adaptive ratelimiting
      • 2013-02-14 04553, 2013

      • warp
        yes.