08:00:31 #startmeeting OpenStack I18n Meeting 08:00:32 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 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 08:00:35 The meeting name has been set to 'openstack_i18n_meeting' 08:00:47 Hello, _anish_ and camunoz_ 08:00:51 hi 08:00:54 hi 08:01:00 <_anish_> Hi Daisy 08:01:15 I invited Ilya Shakhat from stackalytics 08:01:20 I don't know if he would appear. 08:01:45 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 _anish_, :) 08:02:13 #topic Add a new metrics "translations" to stackalytics 08:02:40 _anish_ has spent some time on the source codes of stackalytics 08:02:55 camunoz_ is from Zanata team who would provide us with APIs. 08:03:19 It looks like we don't have Ilya Shakhat now. 08:03:30 So let's start from the UI design firstly. 08:04:10 There are several drop down lists at the top of the web page. 08:04:13 hi! 08:04:24 Hi, ilyashakhat 08:04:27 Nice to have you. 08:04:34 <_anish_> Okay, may be we should have translations in combo box 08:04:38 o7 08:04:44 Hi, DeeJay1 08:04:48 Nice to have you too. 08:05:09 ilyashakhat: our translation team would like to add our contributions to stackalytics. 08:05:23 _anish_ is our python developers who has spent some time on the source codes of stackalytics 08:05:24 Daisy, can you please share a url for the page you are discussing? 08:05:25 we can make it as separate metric 08:05:37 camunoz_ is from Zanata team ( our translation tool ) who would provide us with APIs. 08:05:50 http://stackalytics.com/ 08:05:50 is there some API already available? 08:06:17 I saw https://bugzilla.redhat.com/show_bug.cgi?id=1092193 with discussions 08:06:19 ilyashakhat: Error: Could not parse XML returned by bugzilla.redhat.com: HTTP Error 404: Not Found 08:06:51 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 camunoz_: could you provide a sample of these APIs? 08:07:25 hi ilyashakhat, the API is ready for next release of Zanata... which will happen early next year 08:07:46 ok, so there can be 2 metrics, one for commiters and one for reviwers 08:07:50 We could set up a server with a snapshot version for development 08:07:53 camunoz_: is there a doc? 08:08:23 unreleased, but I can share it with you 08:08:59 it would be helpful 08:09:06 sure thing 08:09:06 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 Daisy: Stackalytics will still split contribution by versions depending on the date of contrib 08:10:06 oh. That makes sense to us too. 08:10:09 everything done during Kilo timeframe will be assigned to Kilo 08:10:21 Here is a JSON sample of APIs: 08:10:23 {"myusername":{"zh-Hans":{"approved":0,"needReview":65,"translated":67,"rejected":0},"es":{"approved":0,"needReview":65,"translated":99,"rejected":0}}} 08:10:54 what is the username? is it launchpad id? 08:11:02 no, it's a user id in Zanata. 08:11:13 Must it be a launchpad id ? 08:11:29 that's a user id in zanata... selected when signing in 08:11:32 then we need a way to map them to lp_id or email 08:11:48 <_anish_> Yeah 08:12:21 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 I just don't know if it is acceptable for our translators. 08:12:49 I see 08:12:50 Daisy: yeah, I was just thinking about it 08:13:21 Daisy: having a launchpad ID for translators would be good, because it is required for other things anyway 08:13:23 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 OK, great, DeeJay1 . I just don't want to make our translators to feel troubles. 08:13:51 we can configure Zanata to only allow logins using launchpad's openid 08:14:07 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 Then the ID problem is passed. 08:14:36 however, Zanata won't force them to have the same user id as in lanchpad (if that makes sense) 08:15:00 camunoz_: yes it makes sense, as long as we can get the launchpad ID from the api 08:15:05 camunoz_: even login with Open ID, the user id could be different ? 08:15:33 camunoz_: is it possible to get lanchpad id ? 08:15:35 Daisy, correct... because open id's are url-like 08:15:49 or email? 08:15:55 ilyashakhat: would email work ? 08:16:02 we could modify the api to return their email 08:16:05 email would work 08:16:23 could email be mapped to launchpad ID ? 08:16:27 yes 08:16:42 LP has API call to get id by email 08:16:42 So the email could work as same as lauchpad ID ? 08:16:51 yes 08:17:19 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 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 _anish_: currently just a single address 08:19:20 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 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 ilyashakhat: I see there are three different perspective: company, modules, and people 08:20:40 I would like to replace "modules" with languages 08:20:42 Is it possible? 08:20:51 company is mapped automatically from email/hostname or from profile 08:21:21 module is project -- does it make sense to keep it -- to know what project has most activity? 08:21:45 I mean to know that Nova is better translated than Cinder 08:22:01 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 Daisy: we need a separate tab anyway, so we should have the following things release->project type->module->language->company->engineer 08:22:31 Like, French translation team, Japanese translation team, and Chinese translation team. 08:22:37 I see 08:23:08 it wouldn't be that easy to implement, I need to think what would be the best way 08:23:30 do we need language or team? 08:23:43 DeeJay1: if there are ways to resolve, I perfer not to have a separate tab. 08:23:54 Language means team, ilyashakhat 08:24:06 We have different language teams. 08:24:12 and team is a group of engineers? 08:24:17 Yes, ilyashakhat 08:24:18 like company 08:24:26 Yes, ilyashakhat 08:24:44 But it's not able to tell their langauge team by emails. 08:24:44 Daisy: it's not "code contribution", so I don't see where it should fit if not into a separate 'tab' 08:25:16 what kind of stats do you need for the team? 08:25:23 the same as for a single engineer? 08:25:26 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 Same as for a company, I think. 08:26:09 Daisy: point taken :) 08:26:52 Daisy: hmm, but then the languages selection would break the ui flow 08:27:18 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 I'd probably put teams into company list, so it would be just another way of grouping people 08:29:07 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 zh-hans and es are different languages. 08:29:44 So this user "myusername" have contributions to zh-hans translation and es translation. 08:30:08 so he should be in both teams? 08:30:16 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 Daisy: I'm thinking from Stackalytics UI perspective... 08:30:59 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 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 ok, I'll think how to implement this better 08:31:58 thanks, ilyashakhat 08:32:10 <_anish_> Thanks 08:32:26 Could you give us some guidance if we want to add a metrics? 08:32:40 What codes should we take a look? 08:34:11 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 for example like https://github.com/stackforge/stackalytics/blob/master/stackalytics/processor/bps.py 08:34:58 which retrievs bugs from LP 08:35:30 <_anish_> Do you have have doc that shows records in memcashd? 08:36:03 there are no docs :( 08:36:18 <_anish_> Thanks :( 08:37:14 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 so it's a dict, some fields are common and must present (id, userid, date module), others are arbitrary 08:38:25 and used only when we show activity log 08:38:45 <_anish_> Okay 08:39:05 _anish_: if you have any questions to ilyashakhat, please ask. Now it's a good chance. 08:39:31 ilyashakhat: where is your location? I mean, the time zone. 08:39:34 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 that's the one for contributions statistics 08:39:50 GMT+3, but I start work at 09:00 UTC 08:40:19 ok. Glad to know it. Then I know when I could get you in IRC. 08:40:39 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 Daisy: we can try as a start 08:41:10 We have languages, modules, and then people. 08:41:38 <_anish_> Seems good for start 08:41:43 I would say (in my ignorance) that language team is more important from the translations perspective 08:41:50 camunoz_: is it possible to retrieve stats per project but without specifying username? 08:41:57 I just don't know if company bosses would like to see their translators contributions. 08:43:19 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 we'll keep companies, otherwise we'll lose our main users - bosses :) 08:44:26 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 camunoz_: thanks, I'll investigate 08:45:11 ok. Let's see our next steps. 08:45:15 ilyashakhat: just ping me if you have any questions (I hang around #zanata) 08:45:31 ilyashakhat: please help us to think about how to add "language teams" 08:46:06 We could be reached by email "openstack-i18n@lists.openstack.org" or the IRC channel "openstack-translation" 08:46:28 ok 08:47:04 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 _anish_: please continue to study the source codes of stackalytics. If you have questions, go to ilyashakhat . 08:48:00 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 thanks, camunoz_ 08:48:15 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 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 Daisy: sure 08:49:17 Are we done today? 08:49:27 _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 I don't have any questions 08:51:35 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 Our tens of translators (and bosses ) would appreciate our works when we get them done. 08:52:51 sounds good! 08:53:00 So I will end this meeting now, and let's keep contact. 08:53:18 #endmeeting