Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assess challenges re: implemention iOS ETL #1105

Closed
rafrombrc opened this issue Jan 5, 2021 · 16 comments
Closed

Assess challenges re: implemention iOS ETL #1105

rafrombrc opened this issue Jan 5, 2021 · 16 comments
Assignees
Milestone

Comments

@rafrombrc
Copy link
Member

We need to dig in to the iOS versioning and build ids and etc to see if there will be any unexpected pain in getting the iOS data into GLAM.

@acmiyaguchi
Copy link
Contributor

There are a few things that will need to implemented on the frontend in order to support iOS data. There are currently the following apps sending ios data:

  • org_mozilla_ios_fennec
  • org_mozilla_ios_firefoxbeta
  • org_mozilla_ios_firefox

Some examples of build_id and version values are as follows:

build version
3279 30.0
3120 29.2
18809 28.0

Glam currently relies on the fact that the build id (so far) has encoded some sort of date that we can use to build plots over time. We do not have a source of truth for iOS builds like buildhub or geckoview version, so it will be tricky to convert this into a suitable format for GLAM. The versions follow semantic versioning, so it should be okay for what we're currently doing (using only the major version for aggregates).

Here is the notebook with a few small queries to figure out the shape of the two fields. https://colab.research.google.com/drive/1bVkze2EkTwr8fTB5SQQRXpkkdm3yrQu9?usp=sharing

@rafrombrc rafrombrc assigned robhudson and alekhyamoz and unassigned acmiyaguchi Aug 25, 2021
@rafrombrc
Copy link
Member Author

We know that Fenix encodes dates into opaque build ids, and we have a UDF to decode this... hopefully iOS is doing something similar, we should check to see if these build ids are encoding any info.

@st3fan
Copy link

st3fan commented Nov 4, 2021

On iOS the build numbers are simply values that increment every time our CI environment does a build. They have no meaning. This build increment also happens for pull request builds or test builds, so the numbers can jump up significantly between official releases.

Note that for beta (testflight) releases we can have many builds in use, all with the same version (39.0) but different build ids (8767, 8797, 8798, ...)

If GLAM needs a date stamp that is unique for each build then we can easily add this.

@st3fan
Copy link

st3fan commented Nov 4, 2021

I noticed that two applications are missing in the list in the issue story:

  • org_mozilla_ios_focus
  • org_mozilla_ios_klar

@st3fan
Copy link

st3fan commented Nov 4, 2021

If GLAM needs a date stamp that is unique for each build then we can easily add this.

To clarify: on iOS we would prefer to stick with the current build number scheme, but we can easily add a glean value that contains a build datetime.

@alekhyamoz
Copy link
Collaborator

alekhyamoz commented Nov 16, 2021

Thank you Stefan for all the information.
We wanted to check, if there was a way to pull the datetime associated with the build via an API (related to CI)
If not, adding build datetime would be fitting.

If we decide to add the datetime, my understanding is, it would be going forward and cannot be backfilled. Is that correct ?

@rafrombrc rafrombrc added this to the M4 milestone Nov 17, 2021
@st3fan
Copy link

st3fan commented Nov 18, 2021

@travis79 From a CI/Build perspective it is really simple to inject a datetime into the app. But I don't know how to transfer that to Glean. Should we just add a metric for that? Or is there a Glean API for this?

@travis79
Copy link
Member

There currently isn't a way to send a user defined metric in all Glean pings, so we would only see this in the metrics ping, and in any custom pings it was added to. If that is sufficient, then I'm fine with it. If you really want this in every ping, then it might take a change to Glean in order to accomodate. cc @badboy for visibility into this.

@rafrombrc
Copy link
Member Author

@travis79 @st3fan As @alekhyamoz says, if there's an API somewhere from which we could pass in a build id and get back a build date, that would be better for us than having the build date added to every Glean ping. Or we could even just create a BigQuery table that stores these mappings and then look them up when we need them. Does Glean have a mechanism for supporting the idea of an "out of band" ping that contains app metadata or something? Literally one single ping per build with that info would be enough.

@st3fan
Copy link

st3fan commented Nov 19, 2021

if there's an API somewhere from which we could pass in a build id and get back a build date, that would be better for us

Unfortunately there is not. But we could do the reverse: our CI system could ping another system to announce a new build. Would that work?

(I'm not in favor of these kind of inter-infrastructure dependencies btw - moving things into Glean would be my preference)

@travis79
Copy link
Member

The easiest path would probably be to add this as an optional measurement to the Glean "client_info" that is sent in all pings, the discussion around this has picked up again, so hopefully we can arrive at a solution that doesn't rely on CI systems connecting the dots for us.

@rafrombrc
Copy link
Member Author

Okay, is there an issue tracking this work that we can follow, @travis79?

@travis79
Copy link
Member

I don't see a bug in Glean for this yet. If you wanted to file one, here is the right component

@alekhyamoz
Copy link
Collaborator

@travis79 Filed a bug to track the issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1742448
Please let me know if any further information is required.

@alekhyamoz
Copy link
Collaborator

Jan-Erik and I came up with a proposal document
https://docs.google.com/document/d/1_7kTePQHHRhsAqOYPiw8ptoN9ytRnsWMcN-tddnV0Cg/edit#heading=h.bpxdzoa6nutw
Looking forward to implementing this in H1 2022

@alekhyamoz
Copy link
Collaborator

Assessed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants