prebid / prebid-server

Open-source solution for running real-time advertising auctions in the cloud.
https://prebid.org/product-suite/prebid-server/
Apache License 2.0
423 stars 718 forks source link

Prebid Server 2.0 Release #3068

Closed bretg closed 10 months ago

bretg commented 1 year ago

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:

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.

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

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 commented 1 year ago

Removed Appush from the list after confirming their support address.

SyntaxNode commented 1 year ago

Removed Huawei as well after confirming their updated support address.

SyntaxNode commented 11 months ago

Removed emx_digital. They are now an alias of cadentaperturemx.

SyntaxNode commented 10 months ago

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 commented 10 months ago

released!