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

New module: WURFL device enrichment #3685

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

andreacastello
Copy link

@andreacastello andreacastello commented Jan 17, 2025

🔧 Type of changes

  • new bid adapter
  • bid adapter update
  • new feature
  • new analytics adapter
  • new module
  • module update
  • bugfix
  • documentation
  • configuration
  • dependency update
  • tech debt (test coverage, refactorings, etc.)

✨ What's the context?

The module populates missing or empty fields in ortb2.device with WURFL device detection data

🧠 Rationale behind the change

The WURFL module populates missing or empty fields in ortb2.device with the following data:

  • make: Manufacturer of the device (e.g., "Apple", "Samsung").

  • model: Device model (e.g., "iPhone 14", "Galaxy S22").

  • os: Operating system (e.g., "iOS", "Android").

  • osv: Operating system version (e.g., "16.0", "12.0").

  • h: Screen height in pixels.

  • w: Screen width in pixels.

  • ppi: Screen pixels per inch (PPI).

  • pixelratio: Screen pixel density ratio.

  • devicetype: Device type (e.g., mobile, tablet, desktop).

  • Note: If these fields are already populated in the bid request, the module will not overwrite them.

  • Publisher-Specific Enrichment

Device enrichment is selectively enabled for publishers based on their account ID. The module identifies publishers through the following fields:

site.publisher.id (for web environments).
app.publisher.id (for mobile app environments).
dooh.publisher.id (for digital out-of-home environments).

For more info about the module build and configuration, please refer to the README.md under extra/modules/WURFL-devicedetection

🏎 Quality check

  • Are your changes following our code style guidelines?
  • Are there any breaking changes in your code?
  • Does your test coverage exceed 90%?
  • Are there any erroneous console logs, debuggers or leftover code in your changes?

Licensing Requirement for the WURFL Device Enrichment Module
To use the WURFL Device Enrichment Module for Prebid Server, you must have a valid license for the ScientiaMobile WURFL OnSite Java API. This API is a core dependency of the module and is responsible for performing device detection and enrichment operations by leveraging ScientiaMobile's comprehensive WURFL device database.
You can obtain the required license from ScientiaMobile’s official product page: WURFL OnSite API for Java

Maintainer contact

[email protected]

@andreacastello andreacastello marked this pull request as ready for review January 20, 2025 16:26
@bretg bretg requested review from osulzhenko and removed request for osulzhenko January 28, 2025 17:18
@Net-burst Net-burst added the do not merge Not the time for merging yet label Jan 29, 2025
@Net-burst
Copy link
Collaborator

Hello, @andreacastello . We discussed this PR in the PBS committee meeting and this the summary:

  • we can't merge the code which is not proven to be building and working;
  • we can't merge the code, that won't be an active part of a build/test lifecycle and can unpredictably and silently break as a result;

To unblock this PR, you will need to have a way to make this code compilable and unit testable. I see several possible options:

  • make a substitute "mock" library that will expose all of the API in the same packages so that the code can be built and unit tested; (I personally don't like this approach, but it was voiced in the PBS committee meeting)
  • split the library into a public and private counterpart so that all of the public API is exposed through the public library, but unless the private library is in the classpath, that API will just noop; (I find this approach much better and much more maintainable)
  • in any case, you will also need to provide documentation for the end users about public PBS builds not having this module in working state (or even it being omitted from bundle entirely), how to abb/substitute the private library to the project and how to build the project with this module included.

Until this is done, we'll be leaving this project in do-not-merge state. Feel free to convert thus PR to draft for now.

@bretg @osulzhenko @AntoxaAntoxic @CTMBNara FYI

@Net-burst
Copy link
Collaborator

PBS-Go PR for reference: prebid/prebid-server#4158

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked do not merge Not the time for merging yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants