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

Prebid Server 2.0 Release #3068

Closed
bretg opened this issue Sep 1, 2023 · 5 comments
Closed

Prebid Server 2.0 Release #3068

bretg opened this issue Sep 1, 2023 · 5 comments

Comments

@bretg
Copy link
Contributor

bretg commented Sep 1, 2023

We are preparing for the release of PBS-Go and PBS-Java 2.0 this September 2023.

Removed Adapters

Reason 1 - known to be deprecated or out of business

applogy, rhythmone, engagebdr

Reason 2 - refusal to establish or confirm a working group contact email address

The following adapters have an invalid email address (mail bounced) or have an individual contact rather than a group mailbox. The adapters were removed for being in violation of Global Module Rule 1 of the Prebid Module Rules. Adapters are welcomed to return to the project at any time by providing an updated email address. If you need help restoring a removed adapter from the git history, please open a ticket and we'll be delighted to assist.

PBS-Go: kubient, nanointeractive, ninthdecimal
PBS-Java: definemedia, kubient, nanointeractive, ninthdecimal, yeahmobi

Define Media and yeahmobi provided updated email addresses after PBS-Java 2.0 was released and before PBS-Go 2.0 was released. They will be added back to PBS-Java 2.x in the future.

Other Changes

PBS-Go Specific Changes

JSON Encoding Library

The encoding/json package from the standard Go library is replaced by JSON-Iterator in core code (not yet adapters), resulting in a 300% performance improvement for encoding/decoding OpenRTB payloads. We'll extend this change into adapters once the dust settles.

We tried to find a more performant library 100% compatible with the standard Go encoding/json package. Despite many claims, no such library exists. The closest we've found is JSON-Iterator.

There are some subtle changes we had to account for, such as a null json.RawMessage being represented as nil instead of previously as the literal characters "null". Error messages are different and harder to parse in the JSON-Iterator library. We've added a rather hacky translation which we hope to improve when JSON-Iterator error handling improves to look more like that of the standard library.

Hard Coded Aliases

We've improved the setup of hardcoded aliases, streamlining the process to require just one configuration file and no code. Half of the aliases are migrated in 2.0 and rest will be migrated in 2.1.

Remove Config Backwards Compatibility

In previous updates to Prebid Server 0.x, we've strived to preserve backward compatibility with deprecated configuration. In this release, we've discontinued this backward compatibility as part of a tech debt cleanup effort.

blacklisted_accts

Blacklisted accounts are removed. Please use the account configuration system instead. To deny access to specific accounts, enable account_required to true and configure a backend account data storage which can be either the local file system (with config deployed using Kubernetes) or HTTP call. Support for database MySQL and Postgres backends are in the works.

gdpr.purpose{1-10}.enforce_purpose

gdpr.purpose{1-10}.enforce_purpose no longer supports a string and must now be specified as a bool indicating whether or not the purpose should be enforced. Previously, the enforcement algorithm for a given purpose could be specified through this field by setting it to "full", "basic" or "none". The enforcement algorithm should now be specified using gdpr.purpose{1-10}.enforce_algo.

ccpa/gdpr.integration_enabled

This release removes backwards compatibility for deprecated host and account configuration options:

  • ccpa.integration_enabled
  • gdpr.integration_enabled

Instead, hosts should use ccpa.channel_enabled and gdpr.channel_enabled respectively in account configs.
For example:

"gdpr": {
    "channel_enabled": {
      "web": true,
      "app": false,
      "dooh": true,
      "amp": false,
      "video": true
    }
}

{stored_requests/stored_video_req/stored_responses}.postgres

The release removes support for the following host options:
{stored_requests/stored_video_req/stored_responses}.postgres.

  • connection.dbname
  • connection.host
  • .connection.port
  • .connection.user
  • .connection.password
  • .connection.query_string
  • .connection.tls.root_cert
  • .connection.tls.client_cert
  • .connection.tls.client_key
  • .fetcher.query
  • .fetcher.amp_query
  • .initialize_caches.timeout_ms
  • .initialize_caches.query
  • .initialize_caches.amp_query
  • .poll_for_updates.refresh_rate_seconds
  • .poll_for_updates.timeout_ms
  • .poll_for_updates.query
  • .poll_for_updates.amp_query

Instead, hosts should use .database instead of .postgres when setting these fields.
e.g. {stored_requests/stored_video_req/stored_responses}.database.connection.dbname.

It should also be noted that since we now need to use the generic .database in our path, we must also set the driver as such: {stored_requests/stored_video_req/stored_responses}.database.connection.driver.

events_enabled

The host configuration events_enabled is removed. Instead, use account_defaults.events.enabled in the host config and events.enabled in account configs.

enable_gzip

The enable_gzip configuration value is removed. This controls if the host can respond with gzip'd payloads and has nothing to do with communication with bidders. Instead, hosts should use compression.response.enable_gzip.

stored_requests.filesystem

The stored_requests.filesystem and stored_requests.directorypath values are removed. Instead, use
stored_requests.filesystem.enabled and stored_requests.filesystem.path, respectively.

gdpr.tcf2

  • gdpr.tcf2.purpose{1-10}.enabled is replaced by gdpr.tcf2.purpose{1-10}.enforce_purpose.
  • gdpr.tcf2.purpose_one_treatement.* is replaced by gdpr.tcf2.purpose_one_treatment.*, fixing a typo.
  • gdpr.tcf2.special_purpose1.* is replaced by gdpr.tcf2.special_feature1.*, changing the word purpose to feature to better match the TCF2 spec.

String data type support for gdpr.tcf2.purpose{1-10}.enforce_purpose is removed. This field must now be specified as a bool. Previously, the enforcement algorithm for a given purpose could be specified through this field by setting it to "full", "basic" and "none". This should now be specified using gdpr.tcf2.purpose{1-10}.enforce_algo.

usersync_url

The adapter usersync_url configuration value is removed. This used to be the only way to configure a user sync url before we refactored and introduced usersync config. Hosts may have needed to override this value to enable user sync for some bidders. The backwards compatibility was limited to adapters which supported either iframe or redirect usersync, but not both.

Instead, please use the userSync.iframe.url and or userSync.redirect.url config of the new adapter usersync config.

@bretg
Copy link
Contributor Author

bretg commented Sep 5, 2023

Removed Appush from the list after confirming their support address.

@SyntaxNode
Copy link
Contributor

Removed Huawei as well after confirming their updated support address.

@SyntaxNode SyntaxNode changed the title PBS 2.0 Release Contents Prebid Server 2.0 Release Content Sep 7, 2023
@SyntaxNode SyntaxNode pinned this issue Sep 7, 2023
@SyntaxNode SyntaxNode changed the title Prebid Server 2.0 Release Content Prebid Server 2.0 Release Sep 7, 2023
@SyntaxNode
Copy link
Contributor

Removed emx_digital. They are now an alias of cadentaperturemx.

@SyntaxNode
Copy link
Contributor

Define Media and yeahmobi provided working group email addresses. As a result, they were never removed from PBS-Go 2.0 and will be restored in a future version of PBS-Java 2.x.

@bretg
Copy link
Contributor Author

bretg commented Oct 25, 2023

released!

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

No branches or pull requests

2 participants