08:00:31 <Daisy> #startmeeting OpenStack I18n Meeting
08:00:32 <openstack> Meeting started Thu Dec 18 08:00:31 2014 UTC and is due to finish in 60 minutes.  The chair is Daisy. Information about MeetBot at http://wiki.debian.org/MeetBot.
08:00:33 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
08:00:35 <openstack> The meeting name has been set to 'openstack_i18n_meeting'
08:00:47 <Daisy> Hello, _anish_ and camunoz_
08:00:51 <ujuc> hi
08:00:54 <epico> hi
08:01:00 <_anish_> Hi Daisy
08:01:15 <Daisy> I invited Ilya Shakhat from stackalytics
08:01:20 <Daisy> I don't know if he would appear.
08:01:45 <Daisy> Today's topic is to discuss how to add our translators contributions to stackalytics.
08:01:47 <_anish_> If he comes then it would be really nice
08:02:03 <epico> _anish_, :)
08:02:13 <Daisy> #topic Add a new metrics "translations" to stackalytics
08:02:40 <Daisy> _anish_ has spent some time on the source codes of stackalytics
08:02:55 <Daisy> camunoz_ is from Zanata team who would provide us with APIs.
08:03:19 <Daisy> It looks like we don't have Ilya Shakhat now.
08:03:30 <Daisy> So let's start from the UI design firstly.
08:04:10 <Daisy> There are several drop down lists at the top of the web page.
08:04:13 <ilyashakhat> hi!
08:04:24 <Daisy> Hi, ilyashakhat
08:04:27 <Daisy> Nice to have you.
08:04:34 <_anish_> Okay,  may be we should have translations in combo box
08:04:38 <DeeJay1> o7
08:04:44 <Daisy> Hi, DeeJay1
08:04:48 <Daisy> Nice to have you too.
08:05:09 <Daisy> ilyashakhat: our translation team would like to add our contributions to stackalytics.
08:05:23 <Daisy> _anish_ is our python developers who has spent some time on the source codes of stackalytics
08:05:24 <camunoz_> Daisy, can you please share a url for the  page you are discussing?
08:05:25 <ilyashakhat> we can make it as separate metric
08:05:37 <Daisy> camunoz_ is from Zanata team ( our translation tool ) who would provide us with APIs.
08:05:50 <Daisy> http://stackalytics.com/
08:05:50 <ilyashakhat> is there some API already available?
08:06:17 <ilyashakhat> I saw https://bugzilla.redhat.com/show_bug.cgi?id=1092193 with discussions
08:06:19 <uvirtbot> ilyashakhat: Error: Could not parse XML returned by bugzilla.redhat.com: HTTP Error 404: Not Found
08:06:51 <Daisy> camunoz_'s team could provide us some APIs to response translators/reviewers contributions in words. We have both translators and translation reviewers.
08:07:12 <Daisy> camunoz_: could you provide a sample of these APIs?
08:07:25 <camunoz_> hi ilyashakhat, the API is ready for next release of Zanata... which will happen early next year
08:07:46 <ilyashakhat> ok, so there can be 2 metrics, one for commiters and one for reviwers
08:07:50 <camunoz_> We could set up a server with a snapshot version for development
08:07:53 <ilyashakhat> camunoz_: is there a doc?
08:08:23 <camunoz_> unreleased, but I can share it with you
08:08:59 <ilyashakhat> it would be helpful
08:09:06 <camunoz_> sure thing
08:09:06 <Daisy> ilyashakhat: we might not have versions, like kilo/juno. While we are working on documents translations, we just keep on translations. Will it affect ?
08:09:47 <ilyashakhat> Daisy: Stackalytics will still split contribution by versions depending on the date of contrib
08:10:06 <Daisy> oh. That makes sense to us too.
08:10:09 <ilyashakhat> everything done during Kilo timeframe will be assigned to Kilo
08:10:21 <Daisy> Here is a JSON sample of APIs:
08:10:23 <Daisy> {"myusername":{"zh-Hans":{"approved":0,"needReview":65,"translated":67,"rejected":0},"es":{"approved":0,"needReview":65,"translated":99,"rejected":0}}}
08:10:54 <ilyashakhat> what is the username? is it launchpad id?
08:11:02 <Daisy> no, it's a user id in Zanata.
08:11:13 <Daisy> Must it be a launchpad id ?
08:11:29 <camunoz_> that's a user id in zanata... selected when signing in
08:11:32 <ilyashakhat> then we need a way to map them to lp_id or email
08:11:48 <_anish_> Yeah
08:12:21 <Daisy> camunoz_: we may need to force our translators to have a launchpad ID and then use Open ID to register in Zanata.
08:12:38 <Daisy> I just don't know if it is acceptable for our translators.
08:12:49 <ilyashakhat> I see
08:12:50 <DeeJay1> Daisy: yeah, I was just thinking about it
08:13:21 <DeeJay1> Daisy: having a launchpad ID for translators would be good, because it is required for other things anyway
08:13:23 <Daisy> DeeJay1: do you think our translators will like it? Register a launchpad ID and then use the Open ID to login to Zanata ?
08:13:49 <Daisy> OK, great, DeeJay1 . I just don't want to make our translators to feel troubles.
08:13:51 <camunoz_> we can configure Zanata to only allow logins using launchpad's openid
08:14:07 <ilyashakhat> we can use Zanata Id, but if translator has some other contribution into OpenStack then it wouldn't be matched, so OpenId would be easier
08:14:31 <Daisy> Then the ID problem is passed.
08:14:36 <camunoz_> however, Zanata won't force them to have the same user id as in lanchpad (if that makes sense)
08:15:00 <DeeJay1> camunoz_: yes it makes sense, as long as we can get the launchpad ID from the api
08:15:05 <Daisy> camunoz_: even login with Open ID, the user id could be different ?
08:15:33 <Daisy> camunoz_: is it possible to get lanchpad id ?
08:15:35 <camunoz_> Daisy, correct... because open id's are url-like
08:15:49 <Daisy> or email?
08:15:55 <Daisy> ilyashakhat: would email work ?
08:16:02 <camunoz_> we could modify the api to return their email
08:16:05 <ilyashakhat> email would work
08:16:23 <Daisy> could email be mapped to launchpad ID ?
08:16:27 <ilyashakhat> yes
08:16:42 <ilyashakhat> LP has API call to get id by email
08:16:42 <Daisy> So the email could work as same as lauchpad ID ?
08:16:51 <ilyashakhat> yes
08:17:19 <Daisy> camunoz_: Zanata will force them to have the same email as in launchpad ?
08:18:04 <_anish_> Can we have mutiple email id's in zanata?
08:18:13 <camunoz_> no... the user can change it when signing up... but in some cases it will suggest it if the open id provider offers it
08:18:30 <camunoz_> _anish_: currently just a single address
08:19:20 <ilyashakhat> if there will be few people that do not match to other contribution automatically we may add their profiles into Stackalytics manually, so it's not a huge problem
08:19:28 <Daisy> Yes, we could suggest our translators . Just no technical ways to force. But I think it's all right.
08:19:37 <_anish_> Okay thanks
08:20:17 <Daisy> ilyashakhat: I see there are three different perspective: company, modules, and people
08:20:40 <Daisy> I would like to replace "modules" with languages
08:20:42 <Daisy> Is it possible?
08:20:51 <ilyashakhat> company is mapped automatically from email/hostname or from profile
08:21:21 <ilyashakhat> module is project -- does it make sense to keep it -- to know what project has most activity?
08:21:45 <ilyashakhat> I mean to know that Nova is better translated than Cinder
08:22:01 <Daisy> Viewing the translations in languages is more helpful than in modules. I don't mean modules don't help. Just languages are more helpful.
08:22:13 <DeeJay1> Daisy: we need a separate tab anyway, so we should have the following things release->project type->module->language->company->engineer
08:22:31 <Daisy> Like, French translation team, Japanese translation team, and Chinese translation team.
08:22:37 <ilyashakhat> I see
08:23:08 <ilyashakhat> it wouldn't be that easy to implement, I need to think what would be the best way
08:23:30 <ilyashakhat> do we need language or team?
08:23:43 <Daisy> DeeJay1: if there are ways to resolve, I perfer not to have a separate tab.
08:23:54 <Daisy> Language means team, ilyashakhat
08:24:06 <Daisy> We have different language teams.
08:24:12 <ilyashakhat> and team is a group of engineers?
08:24:17 <Daisy> Yes, ilyashakhat
08:24:18 <ilyashakhat> like company
08:24:26 <Daisy> Yes, ilyashakhat
08:24:44 <Daisy> But it's not able to tell their langauge team by emails.
08:24:44 <DeeJay1> Daisy: it's not "code contribution",  so I don't see where it should fit if not into a separate 'tab'
08:25:16 <ilyashakhat> what kind of stats do you need for the team?
08:25:23 <ilyashakhat> the same as for a single engineer?
08:25:26 <Daisy> DeeJay1: You see even emails and vote are in the same tab. I don't see clear reasons to have a separate tab either.
08:25:41 <Daisy> Same as for a company, I think.
08:26:09 <DeeJay1> Daisy: point taken :)
08:26:52 <DeeJay1> Daisy: hmm, but then the languages selection would break the ui flow
08:27:18 <Daisy> I hope to see the contributions compare of different language teams. When I open a language team, I could see individual's contributions . Just like replacing modules by "languages".
08:28:53 <ilyashakhat> I'd probably put teams into company list, so it would be just another way of grouping people
08:29:07 <Daisy> You see the JSON sample: {"myusername":{"zh-Hans":{"approved":0,"needReview":65,"translated":67,"rejected":0},"es":{"approved":0,"needReview":65,"translated":99,"rejected":0}}}
08:29:22 <Daisy> zh-hans and es are different languages.
08:29:44 <Daisy> So this user "myusername" have contributions to zh-hans translation and es translation.
08:30:08 <ilyashakhat> so he should be in both teams?
08:30:16 <Daisy> ilyashakhat: I cannot understand: I'd probably put teams into company list, so it would be just another way of grouping people
08:30:55 <ilyashakhat> Daisy: I'm thinking from Stackalytics UI perspective...
08:30:59 <camunoz_> ilyashakhat: to answer your question.. yes, that user would be on both teams. In practice that may be rare, but it's possible
08:31:14 <Daisy> Yes, a people could contribute to different langauges, also most of our contributions belong to only 1 team. But it's not a force that people could only contribute to 1 language if he knows many langauges.
08:31:42 <ilyashakhat> ok, I'll think how to implement this better
08:31:58 <Daisy> thanks, ilyashakhat
08:32:10 <_anish_> Thanks
08:32:26 <Daisy> Could you give us some guidance if we want to add a metrics?
08:32:40 <Daisy> What codes should we take a look?
08:34:11 <ilyashakhat> you will need to add a module that communcates with API and transforms data into flat records with mandatory fields userid, project, date,
08:34:50 <ilyashakhat> for example like https://github.com/stackforge/stackalytics/blob/master/stackalytics/processor/bps.py
08:34:58 <ilyashakhat> which retrievs bugs from LP
08:35:30 <_anish_> Do you have have doc that shows records in memcashd?
08:36:03 <ilyashakhat> there are no docs :(
08:36:18 <_anish_> Thanks :(
08:37:14 <ilyashakhat> records look like this: https://github.com/stackforge/stackalytics/blob/master/tests/unit/test_record_processor.py#L1271-L1295
08:37:57 <_anish_> Aha thanks :)
08:38:11 <ilyashakhat> so it's a dict, some fields are common and must present (id, userid, date module), others are arbitrary
08:38:25 <ilyashakhat> and used only when we show activity log
08:38:45 <_anish_> Okay
08:39:05 <Daisy> _anish_: if you have any questions to ilyashakhat, please ask. Now it's a good chance.
08:39:31 <Daisy> ilyashakhat: where is your location? I mean, the time zone.
08:39:34 <camunoz_> ilyashakhat: for Zanata's Rest API docs: https://zanata.ci.cloudbees.com/job/zanata-api-site/site/zanata-common-api/rest-api-docs/resource_StatisticsResource.html#path__stats_project_-projectSlug-_version_-versionSlug-_contributor_-username-_-dateRange-.html
08:39:47 <camunoz_> that's the one for contributions statistics
08:39:50 <ilyashakhat> GMT+3, but I start work at 09:00 UTC
08:40:19 <Daisy> ok. Glad to know it. Then I know when I could get you in IRC.
08:40:39 <Daisy> DeeJay1, _anish_ , camunoz_ : how do you think if we don't have company perspective? We replace language team with company? Then the current stackalytics design won't be changed too much.
08:40:59 <DeeJay1> Daisy: we can try as a start
08:41:10 <Daisy> We have languages, modules, and then people.
08:41:38 <_anish_> Seems good for start
08:41:43 <camunoz_> I would say (in my ignorance) that language team is more important from the translations perspective
08:41:50 <ilyashakhat> camunoz_: is it possible to retrieve stats per project but without specifying username?
08:41:57 <Daisy> I just don't know if company bosses would like to see their translators contributions.
08:43:19 <camunoz_> ilyashakhat: yes, look at https://zanata.ci.cloudbees.com/job/zanata-api-site/site/zanata-common-api/rest-api-docs/resource_StatisticsResource.html for the current stats-related offerings
08:43:21 <ilyashakhat> we'll keep companies, otherwise we'll lose our main users - bosses :)
08:44:26 <Daisy> I agree, camunoz_ , language team is important. Company is also important because if bosses could see their companies contributions could be recognized, they will be happy to send translators to the community.
08:44:28 <ilyashakhat> camunoz_: thanks, I'll investigate
08:45:11 <Daisy> ok. Let's see our next steps.
08:45:15 <camunoz_> ilyashakhat: just ping me if you have any questions (I hang around #zanata)
08:45:31 <Daisy> ilyashakhat: please help us to think about how to add "language teams"
08:46:06 <Daisy> We could be reached by email "openstack-i18n@lists.openstack.org" or the IRC channel "openstack-translation"
08:46:28 <ilyashakhat> ok
08:47:04 <Daisy> if there are any requests to APIs, I'm sure camunoz_ and his team would help.
08:47:14 <_anish_> Ilyashakhat,https://github.com/stackforge/stackalytics/blob/master/stackalytics/processor/config.py in this configuration is default . son
08:47:32 <_anish_> Automatically generated?
08:47:59 <Daisy> _anish_: please continue to study the source codes of stackalytics. If you have questions, go to ilyashakhat .
08:48:00 <camunoz_> Daisy: I could start looking at Zanata forcing the email address if it's given by the open id provider (we would need to find out if launchpad offers this)
08:48:13 <Daisy> thanks, camunoz_
08:48:15 <ilyashakhat> no, default_data is https://github.com/stackforge/stackalytics/tree/master/etc -- it's a single place with user profiles, project config, etc
08:48:39 <Daisy> DeeJay1: if you have spare time, you are welcomed to do anything you like and join our discussion. :)
08:48:47 <_anish_> Thanks
08:49:10 <DeeJay1> Daisy: sure
08:49:17 <Daisy> Are we done today?
08:49:27 <ilyashakhat> _anish_: for dev env you may use test_default_data.json
08:49:51 <_anish_> Aha okay thanks did not know that
08:49:51 <ilyashakhat> I don't have any questions
08:51:35 <Daisy> OK, guys. Thank you all very much to attend this hot discussion meeting. I really appreciate much. Let's work together to push this happen.
08:51:47 <_anish_> I will ask questions after meeting :)
08:52:06 <_anish_> Thank you all
08:52:12 <Daisy> Our tens of translators (and bosses ) would appreciate our works when we get them done.
08:52:51 <camunoz_> sounds good!
08:53:00 <Daisy> So I will end this meeting now, and let's keep contact.
08:53:18 <Daisy> #endmeeting