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