Closed Bug 894055 Opened 11 years ago Closed 11 years ago

Add funnelcake build ID to d.m.o URL on [bedrock] Firefox Download page button

Categories

(www.mozilla.org :: Bedrock, defect, P2)

x86
macOS
defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: cmore, Assigned: pmac)

References

Details

(Whiteboard: [kb=1045882] )

We want to be able to serve up funnelcake builds of Firefox from our Bedrock download buttons with an on-demand query parameter.

User story:

1) Visitor clicks SEM ad created by Mozilla.

2) Visitor going to a www.mozilla.org Firefox desktop download page.

3) Visitor decides to download Firefox.

4) Visitor gets the latest version of Firefox and specifically the funnelcake build.

5) Visitor opens Firefox and the firstrun page tab open. (already includes f= in the firstrun url)

6) Visitor uses Firefox for some period of time.

What we would like to do is to be able to selectively decide to serve up a the funnelcake build from download.mozilla.org. 

Proposed solution.

When the qeuery parameter of "f=[0-9]+" (f is the funnelcake build id) is in the url of the Firefox download page, pass along the value of "f" to download.mozilla.org button URL. The value of f should 'only' be passed if the number is a whole number greater than 0 and containts no other characters. 

/firefox/new/ example with Funnelcake build ID 25:

A link exists on the web to:

https://www.mozilla.org/[locale]/firefox/new/?f=25

The link on the download button on /firefox/new/ should be:

https://download.mozilla.org/?product=firefox-[version]&os=[os]&lang=[locale]&f=25

If the value of F is not a whole number or includes any other character, it should not be passed along to the download.mozilla.org URL. We will use a rewrite on bouncer to make sure when f=[funnelcake build], that the right Funnelcake product is delivered to the end user.
Summary: Allow funnelcake build ID to d.m.o URL on [bedrock] buttons → Allow funnelcake build ID to d.m.o URL on [bedrock] Firefox Download page button
Also, I don't want to use sem= as the query parameter, because we want this to be generic to the purpose of funnelcake. Yes, the first use-case is testing SEM ads, but we don't want to make more changes in the future for other use-cases.
Blocks: 870469
Summary: Allow funnelcake build ID to d.m.o URL on [bedrock] Firefox Download page button → Add funnelcake build ID to d.m.o URL on [bedrock] Firefox Download page button
Priority: -- → P2
Whiteboard: [kb=1045882]
Bouncer doesn't support using a f=[0-9]+ query param to modify the product or it's behaviour, but you could do
 https://download.mozilla.org/?product=firefox-[version]-f25&os=[os]&lang=[locale]
and we'll set up the product that way. Or even better
 https://download.mozilla.org/?product=firefox-f25&os=[os]&lang=[locale]
so it doesn't break if we release a new version but don't refresh the repack (or have no plans to). ie avoid silent bustage.

<semantics> I've advocating moving away from calling these special builds 'funnelcake', that's just the name we used for the first set of funnel tests, and we haven't analysing the funnel for some time. Something like 'repack' or 'customized' or 'tagged' build would be better. I see your point about it being a pain if we use a different string each time though, so do you want to pick one and we'll swap from f to the first letter of the new name ?
I like the product=firefox-f25 idea. It is the same amount of work on our end.
:nthomas: all the tests that we are doing with funnelcake is to analyzing the funnel. For example, (campaign => website => download => install => use) or (website variation => download => install => use) is mainly what we use it for. We don't have many use-cases with funnel cake builds that are not used to understand the funnel and their impact on ADIs long-term. It probably doesn't matter what we call it as long as we know what it means. Plus, funnelcake is more unique and memorable than "tagged". :)

:pmac: We need your bedrock architecture feedback here. We want to be able to vary the bedrock download button product name when f=[0-9]+ is in the URL. Do you see any problems with this before someone does the coding?
Flags: needinfo?(pmac)
Ok, per that comment and the meeting today it'll be funnelcake 23. I'll set up these in bouncer:
   product=firefox-22.0-f23-stub
   product=firefox-22.0-f23          (full installer)
We shouldn't need a redirect if you can set up the download button to use those directly.

By the way, I noticed the stub installer fails over to 
 https://www.mozilla.org/${AB_CD}/firefox/installer-help/?channel=release&installer_lang=${AB_CD}
if it can't download the full installer. The button there offers product=firefox-latest. Do you want to consider pointing that at firefox-22.0-funnelcake-23.0 ? If so, how should I modify the url ?
(In reply to Nick Thomas [:nthomas] from comment #5)
Re the installer-help page, the button code is the same there as every page. I'd say if you can just add the same f=23 to that url it'd pass thorough perfectly doing it the way I'm thinking.

(In reply to Chris More [:cmore] from comment #4)
I'm thinking this sounds fine. I can get the query parameter from any page, validate it, and add it to the url fairly easily. This would be miles better than what we've had to do in the past. Are there OS restrictions with these typically? Are they always for windows, or do we need a way to specify that per FC build?
Flags: needinfo?(pmac)
(In reply to Nick Thomas [:nthomas] from comment #5)
So what do we do with the current download links. We're using the following products (for windows, all locales):

firefox-latest
firefox-stub
firefox-22.0  # other platforms

So I'd say the following names would be what we'd need:

firefox-latest-f23
firefox-stub-f23
firefox-22.0-f23

All that's assuming this isn't for beta.

Also, is this for all locales? Or perhaps all locales for which we have the stub installer (which ATM is all locales on Windows)?
This campaign is win32 only, id and pt-BR locales only, release channel. So just firefox-latest-f23 and firefox-stub-f23 in bouncer then ? That works for me.
Current need is for id/pt-BR on release, but it would be good to do this bedrock change generically so it could be done for any locale/platform in the future. The real logic on how the product maps to a image file is on bouncer. We just need to pass on something to bouncer and bouncer can be manually adjusted to serve up a different product.

I like fall's suggestion to keep the product name the same as they are now and just append -f[0-999].
Also, to keep everyone on the same page. We are planning on running this funnelcake test on July 24th, one week from now. We will need to have this on dev/stage next Monday/Tuesday for testing.
(In reply to Nick Thomas [:nthomas] from comment #11)
> Bouncer links are live for testing
>  https://download.mozilla.org/?product=firefox-stub-f23&os=win&lang=id
>  https://download.mozilla.org/?product=firefox-stub-f23&os=win&lang=pt-BR
> and for the installer help pages
>  https://download.mozilla.org/?product=firefox-latest-f23&os=win&lang=id
>  https://download.mozilla.org/?product=firefox-latest-f23&os=win&lang=pt-BR
> 
> Any other values for os or lang will 404.

We need to confirm here with Jesse that AdWords can be specified to target by Language+Operating System. 

Jesse: From reading this documentation, it appears you can do it with enhanced campaigns: https://support.google.com/adwords/editor/answer/30551?hl=en&ref_topic=2996453&rd=1

Can you confirm that we can get the Windows OS for both ID and pt-BR languages?
Flags: needinfo?(jesse)
Assignee: nobody → pmac
pmac: are you blocked on anything to make this generic change to the download buttons to handle the funnelcake product name adjustment? Let's proceed with the product name details in comment 7.

Again, we only have 3 days to make this change given that we are doing the funnelcake on July 24th.
cmore: I am confirming we can target by language and OS. 

Just to confirm we will only do the following:

OS: Windows
Language: BR-PT, and ID

correct?
Flags: needinfo?(jesse)
(In reply to Jesse Montano from comment #14)
> cmore: I am confirming we can target by language and OS. 
> 
> Just to confirm we will only do the following:
> 
> OS: Windows
> Language: BR-PT, and ID
> 
> correct?

Correct. Is this the confirmation or is the confirmation in progress? :)
Not blocked. Just need to devise a system to allow us to narrow a FC to only certain OS/Lang combinations. I've got the rest of the code done already.
(In reply to Paul McLanahan [:pmac] from comment #16)
> Not blocked. Just need to devise a system to allow us to narrow a FC to only
> certain OS/Lang combinations. I've got the rest of the code done already.

I wouldn't worry so much about your concern here, because I don't want us to have to make changes to bedrock for each test. We are not going to be doing SEM ads unless they are targeted at a specific language/os and the ads can be targeted to only display on an os+lang combo. So, for example, an SEM ad will be created to only be displayed for id locale and windows OS or pt-BR locale and windows OS, and those are the only only builds.

I know you are trying to control 404's on downloads. I am just trying to put that logic into AdWords and Bouncer.
nthomas: Is it possible in bouncer to direct traffic to a non-funnelcake build if someone were to request firefox-latest-f23 on the osx build? We are not going to have Google AdWords for that OS, but just hypothetically, can you trap that on your side and prevent a 404?

For example, we are doing an id and pt-br locale and windows os build SEM->ADI test. What if there was a problem with Google AdWords and traffic from the osx build was sent too and 404'd when trying to find the funnelcake build for osx that didn't exist. For these tests, can you catch those errors on the bouncer side and provide them the non-funnelcake build? If not, this is going to get tricky on the bedrock side.
Flags: needinfo?(nthomas)
Commits pushed to master at https://github.com/mozilla/bedrock

https://github.com/mozilla/bedrock/commit/545a285bebc8c165392da4f5a287886acb4bd98f
Bug 894055: Add funnelcake parameter to bedrock URLs.

Now if a page has a download button on it, and the
url includes the query param `f=[0..9999]`, then that
number will end up on download links in the form
`product=firefox-stub-f999`. The ID must be numeric
and not exceed 4 digits.

https://github.com/mozilla/bedrock/commit/d4659f21bf2fa9436435b5023806f851a9ae4eac
Merge pull request #1092 from pmclanahan/enable-funnelcake-qs-param-894055

Bug 894055: Add funnelcake parameter to bedrock URLs.
(In reply to Chris More [:cmore] from comment #18)
> nthomas: Is it possible in bouncer to direct traffic to a non-funnelcake
> build if someone were to request firefox-latest-f23 on the osx build? We are
> not going to have Google AdWords for that OS, but just hypothetically, can
> you trap that on your side and prevent a 404?

I don't know of anything built into bouncer to do that. We'd have to resort to some sort of redirect in Apache, or maybe symlinks of the installers on ftp.m.o. Kinda hacky either way, really worth it ?
Flags: needinfo?(nthomas)
(In reply to Nick Thomas [:nthomas] from comment #20)
> (In reply to Chris More [:cmore] from comment #18)
> > nthomas: Is it possible in bouncer to direct traffic to a non-funnelcake
> > build if someone were to request firefox-latest-f23 on the osx build? We are
> > not going to have Google AdWords for that OS, but just hypothetically, can
> > you trap that on your side and prevent a 404?
> 
> I don't know of anything built into bouncer to do that. We'd have to resort
> to some sort of redirect in Apache, or maybe symlinks of the installers on
> ftp.m.o. Kinda hacky either way, really worth it ?

Ok, after we get through this first test and we see what the data tells us, we can make a decision if we want to make this system more robust.
Is this on -dev to test?
I tested this here:

https://www-dev.allizom.org/en-US/firefox/new/?f=23

Can someone try this on a Windows machine and put in the link to what the download.mozilla.org link is?
Two use cases for this QA test:

1) Open browser on Windows with id language.
2) Go to this address: https://www-dev.allizom.org/id/firefox/new/?f=23
3) Verify the product name include -f23 in it.
4) Verify the product downloads and doesn't 404.

1) Open browser on Windows with pt-BR language setting.
2) Go to this address: https://www-dev.allizom.org/pt-BR/firefox/new/?f=23
3) Verify the product name include -f23 in it.
4) Verify the product downloads and doesn't 404.

Put the links to the dmo for each of these use cases here.
(In reply to Chris More [:cmore] from comment #24)
> Two use cases for this QA test:
> 
> 1) Open browser on Windows with id language.
> 2) Go to this address: https://www-dev.allizom.org/id/firefox/new/?f=23
> 3) Verify the product name include -f23 in it.
> 4) Verify the product downloads and doesn't 404.

https://download.mozilla.org/?product=firefox-stub-f23&os=win&lang=id

I was able to download and install the Firefox Stub (id language)

> 
> 1) Open browser on Windows with pt-BR language setting.
> 2) Go to this address: https://www-dev.allizom.org/pt-BR/firefox/new/?f=23
> 3) Verify the product name include -f23 in it.

The product name had -f23 
> 4) Verify the product downloads and doesn't 404.
Downloaded and installed Firefox in the pt-BR locale without an issue.

https://download.mozilla.org/?product=firefox-stub-f23&os=win&lang=pt-BR


> Put the links to the dmo for each of these use cases here.
(In reply to Chris More [:cmore] from comment #23)
You can always just inspect the button code and look at the windows link. All platform links are in the HTML, CSS just hides all but the right one.
(In reply to Paul McLanahan [:pmac] from comment #26)
> (In reply to Chris More [:cmore] from comment #23)
> You can always just inspect the button code and look at the windows link.
> All platform links are in the HTML, CSS just hides all but the right one.

Yeah, I could have switched user agents too. I just like to have QA try it on a real machine to verify.
RE: Comment#15 Chris.

Confirming my confirmation (not confirmation in progress). Total confirmation. Hope that makes sense. Sorry for the confusion.
(In reply to Jesse Montano from comment #28)
> RE: Comment#15 Chris.
> 
> Confirming my confirmation (not confirmation in progress). Total
> confirmation. Hope that makes sense. Sorry for the confusion.

Perfect. Thanks! :)
pmac: When can we get this pushed out? We can do final testing live since this should not affect any real downloads or organic search.
Looks like this afternoon should work as long as some other things in the works are resolved today.
fixed on stage
https://www.allizom.org/id/firefox/new/?f=23
https://www.allizom.org/pt-BR/firefox/new/?f=23
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Jesse: here are the exact URLs that you can use for your SEM ads for both Indonesia and Brazil. Please include the locale in the URL for each and make sure that the ads will only show for that language AND Windows OS. We will monitor to make sure 404's don't happen when f=23 existing in these URLs.

https://www.mozilla.org/id/firefox/new/?f=23

https://www.mozilla.org/pt-BR/firefox/new/?f=23
You need to log in before you can comment on or make changes to this bug.