Skip to content

Conversation

@paulb777
Copy link
Member

@paulb777 paulb777 commented Aug 31, 2020

Fix one of the issues raised in #6345.

  • Propose a new location for Interop headers in the one version world.
  • Add two Interop APIs for the RC -> ABT interface
  • Tested with ABTesting removed from the RC podspec, but added it back until 7.0
  • Added a separate unit test target for combined RC and ABT testing
  • Will wait for M79 code freeze branch before merging.

#no-changelog

@paulb777 paulb777 marked this pull request as draft August 31, 2020 22:22
@paulb777 paulb777 marked this pull request as ready for review September 1, 2020 01:07
@christibbs
Copy link
Contributor

christibbs commented Sep 1, 2020

@paulb777 Will the end result be:

  1. Pulling in Remote Config will pull in the ABT dependency by default, but developers can remove it, or...
  2. Pulling in Remote Config will not pull in the ABT dependency, but developers can add it?

@paulb777
Copy link
Member Author

paulb777 commented Sep 1, 2020

@christibbs It will be Number 2, but not until the Firebase 7.0.0 release to avoid an earlier breaking change.

Copy link
Member

@ryanwilson ryanwilson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM, a few small things

Comment on lines 24 to 27
/// Updates the list of experiments. Experiments already
/// existing in payloads are not affected, whose state and payload is preserved. This method
/// compares whether the experiments have changed or not by their variant ID. This runs in a
/// background queue..
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: the first line can fit more words, also double periods at the end of the paragraph.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. Here and in the public header this was copied from.

]
abt.requires_app_host = true
abt.dependency 'OCMock'
abt.dependency 'FirebaseABTesting', '~> 4.2'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be 4.3 now instead of 4.2?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Good catch.

#import "FirebaseRemoteConfig/Sources/RCNConfigValue_Internal.h"
#import "FirebaseRemoteConfig/Sources/RCNDevice.h"

#import "FirebaseABTesting/Sources/Interop/FIRABTInterop.h"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Should this not stay at the top where it was before?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

#pragma clang diagnostic ignored "-Wdeprecated-declarations"
[self updateExperimentsWithServiceOrigin:origin
events:lifecycleEvent
policy:ABTExperimentPayloadExperimentOverflowPolicyDiscardOldest
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this always be the case for interop, or do we want it to be a parameter as well?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we want it to be the default for now? If we need to support other policies, we could add an API and expose the policies via the interop as well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SGTM, thanks

Copy link
Member

@ryanwilson ryanwilson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM assuming product owners are good with this (the fact that ABT may not be there for all RC users)

@paulb777
Copy link
Member Author

@christibbs Would you confirm this is ok from an ABT product perspective that the fact that ABT users will need to explicitly include the pod?

@christibbs
Copy link
Contributor

@christibbs Would you confirm this is ok from an ABT product perspective that the fact that ABT users will need to explicitly include the pod?

Will confirm with the team. At the very least it'll require some extensive documentation updates.

Also concerned about the case where developers pod update and miss the message that Firebase/ABTesting is removed. Or will it be removed in that case?

@maksymmalyhin maksymmalyhin removed this from the 6.33.0 - М80 milestone Sep 16, 2020
@paulb777
Copy link
Member Author

@christibbs Why "extensive" documentation updates? Isn't it one-line to say to add pod 'Firebase/ABTesting' to the Podfille?

@paulb777
Copy link
Member Author

Closing since it is a product requirement for ABT to be a hard dependency of RC so that RC developers have the flexibility to add in ABT in the future.

@paulb777 paulb777 closed this Sep 23, 2020
@paulb777 paulb777 deleted the pb-rc-abt-soft branch September 23, 2020 22:16
@firebase firebase locked and limited conversation to collaborators Oct 24, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants