This repository was archived by the owner on Aug 11, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathRELEASE_NOTES
939 lines (855 loc) · 49.6 KB
/
RELEASE_NOTES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
Google Open Bidder - Release Notes
Version 0.8.1 -- May 2015
=========================
* (From openrtb lib 0.8.4, openrtb-doubleclick lib 0.8.4):
- Breaking change: Renamed some message types (Impression->Imp,
PMP->Pmp and Regulations->Regs) and some enums, for compatibility
with clarified names in the OpenRTB 2.3 specification.
- Maps Video.content.title/len/keywords.
- Improved mapping of Device.devicetype.
- Much improved support for OpenRTB/JSON extensions, especially
uncompliant extensions (outside "ext" nodes) and unknown fields.
* New images supported: Ubuntu 15.04 Vivid, OpenSUSE 13.2.
These are the first GCE-supported images to include a supported JDK 8.
* Cookie API lost two properties (comment and versions); they were
never really supported as Netty ignores both.
Version 0.8.0 -- Apr 2015
=========================
* (From openrtb lib 0.8.1, openrtb-doubleclick lib 0.8.1):
- Many improvements to JSON extension support.
- OpenRTB model reviews for 2.3 compliance; notably, BidResponse.id
is now required (but Open Bidder will populate it for you).
- DoubleClick protocol v0.61: adds allowed_restricted_category_for_deals,
inventory_type, deal_type. Maps auction types BidRequest.at, Deal.at.
- Improved mapping of ApiFramework; added mapping of Native.battr/api.
- (Breaking changes) Using enums for the types of ContentCategory fields,
User.gender (Gender), BidRequest.at and Deal.at (AuctionType).
* New VideoBidInterceptor, adds the response attribute if necessary.
* (Breaking change) Simplified "ObExt" extensions. For example, the code
bid.setExtension(ObExt.bid, ObExt.Bid.newBuilder()
.addClickThroughUrl("https://www.iab.net").build());
now becomes:
bid.addExtension(ObExt.bidClickThroughUrl, "https://www.iab.net");
* Ubuntu images now supported! 14.04 Trusty for now (the latest LTS).
Version 0.8.0-beta4 -- Apr 2015
===============================
* (From openrtb lib 0.8.0-beta4, openrtb-doubleclick lib 0.8.0-beta4):
- Improved handling of geo_criteria_id in the DoubleclickMetadata API
and the OpenRTB mapper. You should see more Geo fields populated
for many requests, e.g. city for requests located at a postal code,
metro for requests from a city that belongs to a metro, etc.
* Support for Google Cloud Logging! https://cloud.google.com/logging/
All logs from the bidder (and from haproxy for balancers) are now
sent to GCL; check the Developers Console / Monitoring > Logs.
Local log files have been eliminated (but they can be re-enabled).
The GCL service is compatible with syslog, so you can easily port
deployment to non-GCE platforms with rsyslogd, fluentd, etc.
* Annotation @CompatibleExchanges makes easier to create cross-exchange
bidders with a single interceptor chain.
* Some minor UI bugfixes.
Version 0.8.0-beta3 -- Mar 2015
===============================
* (From openrtb lib 0.8.0-beta2, openrtb-doubleclick lib 0.8.0-beta2):
- The BidRequest.id and User.customdata fields, which are mapped
from binary data from the DoubleClick protocol, now use the
URL-safe Base64 encoding instead of Base16 (hexadecimal).
* Removed option --native_epoll_maxevents; not needed anymore.
* BidRequest.openRtb(), BidResponse.openRtb()/nativeResponse()
will all fail for incorrect usage (check new javadocs).
* Improved logging for unhandled exceptions in interceptors.
* Improvements in SSLBidInterceptor and ConfigurableBidInterceptor.
Version 0.8.0-beta2 -- Mar 2015
===============================
* (From openrtb lib 0.8.0-beta, openrtb-doubleclick lib 0.8.0-beta):
- Support for Native Ads completed! Both for the DoubleClick
protocol, and for the final OpenRTB Native 1.0.
- Improvements in JSON support, esp. better compatibility with
some OpenRTB-native exchanges and with OpenRTB 2.2
(thanks to github.com/matzi11a & Sojern).
- Mapping: Publisher.name.
- (App/Site/User/Content).keywords are now arrays in the model.
They still map to a single, CSV-format string in the JSON.
- The macro ${AUCTION_PRICE} is not anymore translated to the
bid price; this was a bug, this macro will proceed untouched
(OpenRTB-native exchanges are supposed to expand it).
- ExtMapper has new methods that make easier to create mapper
extensions for the objects: App, Site, User.
- DoubleClick protocol v.59, adds mediation_status.
* Added the missing HttpRequest.remoteAddress property.
* Fix bug where the Netty stack wouldn't set the Content-Length
header for tracking reuests, causing some clients to stall.
* New RawBidInterceptor, allows pattern-matching a template
request message and return a fixed response message.
* New LoadTestBidInterceptor, makes easy to run load tests that
simulate per-request I/O wait or CPU work.
* CentOS-6 retired; only CentOS-7 is supported now. Also, won't
fail to bootstrap if the EPEL distribution is updated.
* RHEL-7 images work now, including balancers.
* Maven build now works with JDK 8! More Eclipse-friendly too.
Caveat: Both Google App Engine and the Open Bidder UI are not yet
compatible with JDK 8, so you should use JDK 7 to launch the UI.
Everything else runs in JDK 8, but must compile targeting JDK 7.
Full support for JDK 8 will come later in 2015.
Version 0.7.3 -- Dec 2014
=========================
* (From openrtb lib 0.7.3, openrtb-doubleclick lib 0.7.5):
- DoubleClick proto v57. Introduces native ads, but the mapping
to OpenRTB is pending the GA of the OpenRTB Native 1.0 spec.
- Partial support for OpenRTB 2.3! The missing item is Native ads.
- New OpenRTB mappings: BidRequest.test, Site.mobile, Bid.cat,
Device.ifa/lmt/w/h/pxratio/ifa, Geo.utcoffset, Banner.topframe.
- Breaking: The Flags enum was replaced by simple booleans.
- Breaking: Renamed DirectDeal to just Deal (spec change).
- Breaking: Video.protocol renamed to deprecatedProtocol; prefer
the new field protocols (spec change).
- Fix BidResponse mapping for non-multisize interstitial video.
- Fix mapping of BidRequest.User.customdata.
* Update Jetty to 9.2.5.
* Added JSON serialization support for the "ObExt" extensions.
* ConfigurableBidInterceptor improved to handle OpenRTB's
dynamic-size impressions and DoubleClick's multisize impressions
(for DoubleClick, prefer the specific ConfigurableBidInterceptor
in com.google.openbidder.exchange.doubleclick.interceptor).
Version 0.7.2 -- Oct 2014
=========================
* Fix UI's Bidder Profile page (regression from 0.7.0).
* Update Netty to 4.0.24; this includes a workaround for a JDK
performance bug that impacts connections involving HAProxy in GCE.
Version 0.7.1 -- Oct 2014
=========================
* (From openrtb/openrtb-doubleclick libraries 0.7.2):
- DoubleClickMetadata more resilient to bad resources (would avoid
failures like we had in Oct 29 due to a bad geo-tables.csv).
- DoubleClick protocol v.54, adds BidRequest.vievability.
* Updated to Protocol Buffers 2.6.1. Full rebuild NOT required from
0.7.0 / protobuf 2.6.0, but recommended.
Version 0.7.0 -- Oct 2014
=========================
* (From openrtb/openrtb-doubleclick libraries 0.7.1):
- The Doubleclick model was refactored (to have the same namespace
used internally at Google). You need to migrate code, replacing
all occurrences of "com.google.doubleclick.Doubleclick" by
"com.google.protos.adx.NetworkBid".
- Mapping: Much better mapping of IAB categories.
- DoubleClickValidator validates SSL-enabled ads.
* Updated to Protocol Buffers 2.6.0. Full rebuild recommended, the
code generated by protoc 2.6.0 is NOT 100% binary-compatible
with 2.5.0 (but no source changes will be necessary).
* New SSLBidInterceptor, automatically manages response attributes
for SSL-enabled bids (similar to the FlashlessBidInterceptor; just
add it to the chain). Notice that SSL-enabled ad support is not
complete yet because it requires serving impression/click/match
requests via SSL; this will come later with GCLB L7.
* BidResponse.filterBids() changed, it now operates on Bid.Builder
(instead of Bid) so you can perform updates & filters in one go.
See the sources for SSLBidInterceptor for a great example.
* Fix UI's Users page, was not showing registered users.
* Support the new centos-7 images from GCE. The centos-6 images
are still supported for now, but will become unsupported soon.
* GCE metadata reviews; if you have custom deployment scripts,
you may need to change hyphens to underscores in attribute
names e.g. "zone-host" -> "zone_host". Highly recommended to
migrate "gcutil" commands to equivalent "gloud compute", too.
* HAProxy balancer tuning improvements. HAProxy is still planned
to be deprecated; GCE's L7 Load Balancing was just promoted to
Public Preview, check the updated Load Balancing Guide:
https://developers.google.com/ad-exchange/rtb/open-bidder/guides/load-balancing-guide
Version 0.6.3 -- Aug 2014
=========================
* (From openrtb/openrtb-doubleclick libraries 0.6.5):
- DoubleClickCrypto reviews: exceptions, javadocs, fixes.
- Mapping: Fix AdPosition & Banner.mimes; add Banner.expdir,
Content.contentrating, User.data.segment (Verticals),
Video.startdelay (now handles special values).
* Using the new Netty 4.0.23, which incorporates a fix contributed
by us and previously distributed as a patch in Open Bidder.
Option --native_epoll is now considered stable, on by default!
* Removed transitional option --doubleclick_legacy_price_fix.
* Bootstrapping fixed for backports-debian images, and updated
to use the new gcloud utility instead of gcutil.
* HTTP API reviews, more convenient (using Input/OutputStream and
Reader/Writer like Servlets), also optimized buffer handling.
Version 0.6.2 -- Aug 2014
=========================
* (From openrtb/openrtb-doubleclick libraries 0.6.4):
- DoubleClickCrypto reviews, including price in currency units.
* ImpressionRequest.getPrice() renamed to getPriceValue(),
returns currency units, not micros as it should have done in 0.6.1.
* DoubleClickValidatorInterceptor removed; this validation is
now activated by --doubleclick_validation=true and it's better.
Version 0.6.1 -- Aug 2014
=========================
* (From openrtb/openrtb-doubleclick libraries 0.6.3):
- OpenRTB model fixes: all floating-point values are now
double (instead of float).
- Fixed mapping of price and bidfloor properties to use
currency units, not micros (DoubleClick legacy).
- DoubleClick protocol updated to v51.
- Maps UserDemographic to User.gender, User.age.
- Maps Hyperlocal data to Geo.lat/lon.
- Maps Video.mimes, Video.companionad.mimes.
- DoubleClickCrypto fixes.
* Revert UI's logging to JUL instead of LogBack.
Version 0.6.0 -- Jul 2014
=========================
* The core OpenRTB and DoubleClick support were moved out of
Open Bidder, into two new Open Source libraries found at:
https://github.com/google/openrtb
https://github.com/google/openrtb-doubleclick
See the updated README file for build instructions.
- New support for JSON serialization of the OpenRTB model.
- Everything in these libraries moved to different packages, so
existing code will break; but fixing is trivial (only imports).
- Other API changes (e.g. in OpenRtbMapper and SnippetProcessor)
should affect exchange connectors, but not common bidder code.
- Updated to DoubleClick protocol v50, so the OpenRTB mapping
can now populate app.content.userrating and app.name.
- New extensibility APIs that enable exchange connectors or other
third-party modules to support their own OpenRTB Extensions.
See the sigificantly updated guide at:
https://developers.google.com/ad-exchange/rtb/open-bidder/guides/x-exchange-guide
* Support for Banner.wmax/hmax/wmin/hmin and Bid.w/h properties, new
in OpenRTB 2.2, and change mapping of DoubleClick's multisize AdSlots.
These slots will generate a single Impression now. You may have to
fill in the Bid.w/h properties; for DoubleClick auctions, this is
required only for multisize Impressions (that have to provide a
min/max range for at least one dimension, in the OpenRTB model).
* Request/Response Builders: removed some defaults that were good for
testing but inadequate for regular use. Added new Test*Builder
classes, so test code won't need to provide common dummy data,
and for consistency (ALL req/resp types now have these builders).
* Match API review: Removed MatchResponse's generic parameter; made
MatchRequest/MatchResponse concrete; removed the DoubleClickMatch*
interfaces in the DoubleClick connector. These changes make the
Match APIs consistent with the Bid/Impression/Click APIs, dropping
TestMatchRequest/TestMatchResponse and lots of generic-type noise.
You may need to fix interceptor code, by removing DoubleClick*
prefixes in some declarations (like the chain object; if you need
methods from DoubleClickMatchRequest/Response, add typecasts to
to the req/resp objects from the chain and usem them as before).
* Fixed 5 bugs in Remarketing, thanks Skimlinks for the diagnostics!
* Removed open-bidder-targeting, at long last (deprecated in 0.5.4).
* JDK14 logs (java.util.logging) are now redirected to LogBack; this
makes easier to configure logs from Guice, GAE and other libraries.
Don't use slf4j-jdk14 anymore, this will cause a StackOverflow!
Version 0.5.6 -- May 2014
=========================
* UI now allows to edit both the URI & NID for DoubleClick cookie
matching, and will generate bidder parameters for both values.
* FlashlessBidIntercetor handles flashless attributes automatically.
* ConfigurableBidInterceptor now supports bidding for video ads.
* DoubleClickValidationInterceptor very improved, will now remove
most invalid bids before they reach the exchange! Also, introduced
the OpenRtbValidationInterceptor for OpenRTB-portable bidding.
* Review InterceptorChain API, methods renamed for consistency.
* New methods ImpressionRequest.hasPrice()/getPrice() return the
decrypted winning price; see parameter --impression_price.
* Moved core OpenRTB support (model, SnippetProcessor API) and
and core DoubleClick support (native model, metadata, mapper)
to separate modules (will be external projects in the future).
This required changing the API for Open Bidder-specific OpenRTB
extensions, now handled exactly like DoubleClick's; see updated
https://developers.google.com/ad-exchange/rtb/open-bidder/bidding-apis
* Requests with bad URIs (e.g. with unescaped chars) will now have
cleaner logs, behave the same in Jetty/Netty, and return HTTP 400.
* OpenRTB mapping improvements: App.content.url is set; Geo.country
is in ISO 3166-1 alpha-3 format as required by OpenRTB spec
(DoubleClickMetadata provides the alpha-2 code if you prefer it).
* All UserRequest/UserResponse hierarchies now support Builders.
Their public constructors are deprecated, will become non-public
in next release. Builders are more convenient for unit tests,
reducing need of static utility methods. The remaining needs,
mosty for Request types, are now provided by extension Builders
(e.g. TestClickRequestBuilder); corresponding *TestUtil methods
have been deprecated and will be removed in the next release.
* API's "impl" packages eliminated, with the *Controller interfaces
and *ControllerImpl classes merged into a single, public class.
This shouldn't break any code, because user code was not supposed
to access the Impl classes directly :) but now, the controller
implementations are public, so you can use their constructors if
you don't want to depend on the *TestUtil.new*Controller() methods.
* Moved GCE support for a new module, and refactored OAuth support.
You may need to fix imports only. Javadocs have been reorganized
to identify neutral, GCE-specific, or DoubleClick-specific modules.
Version 0.5.5 -- Apr 2014
=========================
* OpenRTB model updated to the final OpenRTB 2.2 spec, just released
- Added DoubleClick mapping for Regulations / COPPA. This populates
the BidRequest.reg.coppa flag, and if that flag is set, also maps
user.id, user.customdata, and device.dpidmd5 to the "constrained"
fields from DoubleClick. Bidders that use the OpenRTB model to get
this information will be automatically COPPA-compliant.
- Breaking changes in Deals due to the final changes in the spec
- DoubleClick mapping fixes/improvements: Site.id and App.id are now
mapped to DoubleClick's channel id; the values previously mapped
to those ids now go into Site.name and App.bundle respectively.
* Doubleclick Ad Exchange model updated to the latest proto (v.45)
* Fix bug migrating firewalls from existing projects to 0.5.4+
* Improve UI's handling of AdX Buyer API errors
* HealthCheck improved to show the class name of each health check
(Sojern's suggestion); also, the framework will now generate
HCs automatically for all installed Services.
* Experimental support for 16-core instances. These also have 10Gb
Ethernet so they can handle more traffic; tested OK to 30Kqps.
* Experimental support for RHEL images; work for bidders only, not
for load balancer instances (just use GCLB!). SLES images won't work
at all. Let us know if you need support for eiher RHEL or SLES.
* New tuning for Netty: --native_epoll_maxevents. At very high qps,
values higher than Netty's default of 128 may save some CPU.
* Updated to Netty 4.0.18, includes thread-local pooled allocator.
Use new option --allocator for tuning this.
* Changed Netty's --user_threads to use 0 by default, so requests
will be processed in the same worker threads that read sockets.
This will usually be more efficient, and works particularly well
with the thread-local pooled allocator (which is now default).
* Error handling/logging improvements; in particular, cleanup of I/O
error logs caused by disconnections or temporary overload of open
file descriptors (normal occurrences, if not too frequent).
* Several new metrics exposed for standard and sample interceptors.
Version 0.5.4 -- Mar 2014
=========================
* Open Bidder 0.5 is now GA; synchronized with 0.4.9.
* Netty is now the preferred & default web stack. EXPERIMENTAL support
for Netty's new native epoll on Linux (requires --native_epoll).
Combined to other improvements in Open Bidder's support for Netty,
performance with Netty now reaches the limit of 20Kqps in a 8-cpu
instance (20Kqps is an absolute limit for any bidder stack on
current GCE instances, because it saturates 1Gb Ethernet!).
* HTTP API reviews; changes may affect unit tests that used Builder
classes directly. Use StandardHttp[Request|Response].newBuilder().
* GCE Load Balancing is now officially supported, and considered the
preferred solution for load balancing. The HAProxy-based balancers
are still available, but will be retired in some future update. See:
https://developers.google.com/ad-exchange/rtb/open-bidder/guides/load-balancing-guide
* The OpenRTB model now supports exchange-specific extension nodes in
every object, and the Doubleclick connector uses several of these
extension points. Also, the core bidding API is improved with new
convenience methods, and the framework supports several choices of
bid processing with the OpenRTB and/or native data model; see:
https://developers.google.com/ad-exchange/rtb/open-bidder/bidding-apis
* OpenRTB mapping improvements, including Geo-targeting and Video.
* New DoubleClickCrypto API, supports new encrypted fields in addition
to the winning price: Advertising ID, IDFA, Hyperlocals.
* Metrics support rebuilt for the updated version of the metrics library
(http://codahale.com). This contains significant breaking changes from
the old Yammer Metrics, so these changes impact code such as custom
request receivers, but it's typically simple changes (imports from
a new package; renames like MetricsRegistry->MetricRegistry).
* Google Cloud Storage support improved with support for custom HTTP
initializers, which enables tunings such as setting a backoff policy
(thanks Joe O'Pecko for the idea and initial patch).
* Exchange connectors: fixes, improvements, new Guide and sample code:
https://devsite.googleplex.com/ad-exchange/rtb/open-bidder/guides/x-exchange-guide
* AdUnits moved out of the core API. The BidRequest.preTargetAdUnits
property is gone. You can still use AdUnits and pretargeting: add
the open-bidder-targeting module, and use the AdUnitHelper object
to get a request's AdUnits. All AdUnit-related testing utilities
moved to AdUnitTestUtil in the same module. These refactorings will
support code that uses AdUnits (with some simple changes), but we
recommend to migrate this code to stop using AdUnits completely;
the open-bidder-targeting module will be removed in a future release.
(We may reintroduce support for pretargeting, hosted ads or campaign
integration in the future if there is demand, but this would require
a new API for several reasons, in particular exchange neutrality).
Version 0.5.3 -- Jan 2014
=========================
* Second public beta for Open Bidder 0.5; synchronized with 0.4.8.
* MatchResponse: get/putRemoveParameters->get/put/removeRedirectParameters
* DoubleClickTestUtil: rename newHandler()->newReceiver()
* Support for OpenRTB macros. The old Open Bidder macros are also
supported, but now changed to an OpenRTB-friendly syntax with ${NAME}
instead of %%NAME%%. Both macro keys and SnippetMacros.* enumerated
fields adopted an "OB_" prefix for the Open Bidder-specific macros.
* BidRequest: Rename exchangeSpecificBidRequest->nativeRequest
* BidResponse: add nativeResponse (full, more convenient native bids);
remove exchangeSpecificAd (replaced by the extAd below)
* openrtb & doubleclick protos: using protobuf extensions to support
native extensions, replaces BidResponse.exchangeSpecificAd
Version 0.5.2 -- Dec 2013
=========================
* Internal/alpha release; synchronized with 0.4.7.
Version 0.5.1 -- Dec 2013
=========================
* First public beta for Open Bidder 0.5; synchronized with 0.4.6.
Version 0.5.0 -- Dec 2013
=========================
* Internal/alpha release; synchronized with 0.4.3.
*************************
OPEN BIDDER 0.4 SERIES
*************************
Version 0.4.9 -- Mar 2014
=========================
* LAST RELEASE of 0.4 series! If you're still using 0.4, please move
to 0.5 which is GA now. Meanwhile, 0.4.9 has a final batch of fixes
and API reviews backported from 0.5 to ease incremental migration.
* Using GCE's new support for Persistent Disk autodelete. This makes
deletes faster and more reliable. Notice that after you make the
update, if you use the new UI to delete instances created before
the update, their PDs WILL be orphaned; either delete all instances
before updating, or manually clean up their PDs after deleting them.
Instances created by the new UI will have the autodelete option set.
* Removed all deprecated stubs from last release, moved Doubleclick
model (protobuf classes) to the exchange subpackage, and merged
doubleclick and doubleclick-match modules into exchange-doubleclick.
* ResourceHttpTransport utility moved to a compile-scope package.
* InterceptorsModule renamed to DoubleClickInterceptorsModule.
* Minor API reviews for usage of collections: all methods that return
an immutable collection now declare the Immutable* return type.
* DoubleClickMetadata has more data: Geotargeting, Seller networks.
* Doubleclick Ad Exchange model updated to the latest proto (v.44).
- Breaking change: encrypted_idfa -> encrypted_advertising_id.
Not just a rename, the new field supports the Android ad id.
* Healthcheck now supports GET request more properly (won't fail if
there's no registered check), so haproxy will use GET again.
* The BigQuery module is now optional, will not be a dependency if you
don't need the Metrics Reporter and don't use BigQuery otherwise.
Version 0.4.8 -- Jan 2014
=========================
* UI fixed to display the correct options for instance types.
* Doubleclick-specific APIs and testing APIs refactored from packages
com.openbidder.doubleclick* to com.openbidder.exchange.doubleclick*.
This mirrors a change from OpenBidder 0.5, keeping deprecated stubs
where possible to ease the transition.
* SnippetMacros, DoubleClickMacros: rename getKey()->key()
* ICU4j library removed from build. You can add this library again in
your binary project's pom.xml, if you need it.
Version 0.4.7 -- Dec 2013
=========================
* Fixed NPE that would happen in the UI (zone and instance detail pages),
in projects with instances created by previous releases. The UI will now
show these old instances as having Image "Unknown", but newly-created
images will have their image name displayed correctly.
Version 0.4.6 -- Dec 2013
=========================
* Added GCE-GA support.
* Fixed the bug on the UI that reporting bucket name cannot be updated.
* Bootstrapping improvements.
* Doubleclick refactoring, including optional AdUnitHelper.
* Doubleclick Ad Exchange model updated to the latest proto (v.43).
- No breaking changes. New support for HyperLocal targeting.
Version 0.4.5 -- Dec 2013
=========================
* Initial support for GCE 1.0-GA, including new regional resources and quotas
* More DoubleClickMetadata dictionaries; getCreativeAttributes() deprecated
* Bootstrapping script fixes for chkconfig compatibility, needed in some images
* Fix UI to not show unavailable zones
Version 0.4.4 -- Oct 2013
=========================
* Fix bidder initialization failure caused by changes in DoubleClick
Ad Exchange's RTB dictionaries.
* Removed all deprecated APIs from 0.4.3.
Version 0.4.3 -- Oct 2013
=========================
* Doubleclick Ad Exchange model updated to the latest proto (v.41).
- detected_language is not a repeated field anymore (breaking change).
- You must now use the fields allowed_restricted_category & restricted_category
if you want to bid on restricted categories.
- is_predicted_to_be_ignored, for awareness of Selective Callouts.
* If you are implementing your own request-handling servlets, the core APIs
for this have been refactored so as much logic as possible can be made
independent of the Servlet API. This aims to support future options of
webserver runtime which are not Servlet-compliant.
* Bootstrapping: some new tuning (nf_conntrack_max, tcp_max_syn_backlog).
Fix potential failure when the GCE image's package repository index is
outdated to the current repositories (would fail with "not found" errors).
* AdUnitUpdateListener: onAdUnitUpdates() renamed to onAdUnitUpdate().
* DoubleClickMatchResponse: setUserList() renamed to putUserList().
* Significant reviews/improvements in Remarketing (still experimental).
* Better ordering of images in the UI (group by type, newer first in each group).
* UI support for Bidder Profiles. This allows creating bidder instances with
custom settings, which is very convenient in particular for testing.
* Reviews in *TestUtil classes.
* Moved to Guava 15, which has changes in the Service API. The only breaking
change is in BidderServer, which is now a Service too; look at the updated
SamplesServer, you need similar (simple) changes in you main server class.
* Removed all deprecated APIs from 0.4.2.
Version 0.4.2 -- Aug 2013
=========================
* Open Bidder now compiles with JDK 7; some reviews already to take
advantage of new language features and libraries.
* Match API review: the main API is now completely abstract (its testing
utilities have been removed), the DoubleClick match API is more in line
with other interceptor packages (the controller impl is not a public API).
* A few minor UI changes: updated the bidder log path on the UI;
moved the Cloud Storage URI field to "Configure Bidders" section and
disallow creating instances without Cloud Storage URI being properly set.
* Included FIRST external patch from Open Bidder customer (Thanks Joe from Sojern!)
to add minimum_cpm_micros into Open Bidder Model.
* Improved deployment: the core puppet and binary projects are now modular,
users' "binary" projects can contain extended bootstrapping scripts, and the
bidder tarball is finally a single-file deployment (embedded puppet modules).
Version 0.4.1 -- Aug 2013
=========================
* Fix failure to create bidder with "old" Project created by 0.3.9.
* Fix failure to create bidder in zone with hostname not set.
* Allows interceptors to set any field from the low-level DoubleClick Ad
protobuf that's not set by the framework. You can do this by setting the
new property Bid.exchangeSpecificAd.
* The map ThirdPartyAd.exchangeMetadata, previously, allowed to set only
a few DoubleClick Ad attributes, by adding an entry with a special ID.
This is not supported anymore, you must use Bid.exchangeSpecificAd.
* The maps ThirdPartyAd.exchangeMetadata and Bid.exchangeMetadata were
renamed to just metadata. The old accessors are available but deprecated.
Also, ThirdPartyAd.metadata is now more clearly immutable.
* Support for DoubleClick Ad Exchange's Snippet Templates:
https://developers.google.com/ad-exchange/rtb/response-guide/multiple-ads-guide
Just create HtmlThirdPartyAd the the snippet set to a dummy value that
will not be used, and use the Bid.exchangeSpecificAd to set the snippet
template and template parameters.
* The property BidRequest.exchange is not a String anymore, now it's a new
class Exchange. The old accessor getExchangeId() is available, deprecated.
* New: remarketing functionality has been added. For more information, visit:
https://developers.google.com/ad-exchange/rtb/open-bidder/guides/remarketing-guide
* New: open-bidder-storage module which handles storage for Google Cloud Storage,
it will be changing, so it is suggested to wait before relying on this module.
Version 0.4.0 -- Aug 2013
=========================
* The project was reorganized with more fine-grained modules; you'll need
to change the dependencies in your POMs. See the updated document:
https://developers.google.com/ad-exchange/rtb/open-bidder/before-you-begin
* Completely new bidder deployment mechanism. You need to create a special
"binary module" for your bidder, on the other hand deployment and local
testing are much simpler. See the updated documents:
https://developers.google.com/ad-exchange/rtb/open-bidder/guides/bidder-server-guide
https://developers.google.com/ad-exchange/rtb/open-bidder/guides/local-deployment-guide
https://developers.google.com/ad-exchange/rtb/open-bidder/guides/local-testing-guide
* The OpenBidderModule interface was removed, use Guice's Module instead.
The OpenBidderModule.properties descriptors are gone too, delete them.
See again the bidder-server-guide document on how to load your modules.
* Open Bidder doesn't anymore use JVM properties or property files for
configuration; command-line parameters are used now. This is extensible
via the JCommander library, so your custom Module can define its own
command-line parameters, and bind their values to the injector for easy
access from your code. See SamplesModule in the open-bidder-samples project.
* All Open Bidder APIs that were deprecated in v0.3.9 have been removed.
* Some APIs have moved to a different package. You should be able to fix
all errors caused by these changes with your IDE's "Organize Imports".
* SnippetProcessor is now an interface. Its companion TrackingConfiguration
was removed; your custom Servlets or other code that need the processor
ca now just inject the SnippetProcessor object.
* OpenBidder now uses the standard javax.inject APIs annotations instead
of Guice's, for @Inject, @Singleton, @Named and Provider. We recommend
the same in your own code, but this is optional.
Version 0.3.9 -- Jul 2013
=========================
* Support for bid requests with multiple multiple sizes (width/height tuples)
in the same AdSlot. Use AdUnit.getDoubleClick().getAdSizeList() to inspect
the AdSizes. If there's more than one, you MUST set the correct AdSize in
each Bid, via its new adSize property. This is mandatory even if you only bid
on a single size. SingleBidInterceptor is retired.
* Doubleclick Ad Exchange model updated to the latest proto (v.38).
* Fix load balancer bootstrapping/refresh failure when there's some custom
instance (neither a balancer nor a bidder) in their zone.
* UserRequest/UserResponse.getParameter(name) now throw IllegalArgumentException
if the parameter is multi-valued (consistent with the Servlet API).
* All Open Bidder APIs that were deprecated in v0.3.8 have been removed,
so any code relying on them will need to be fixed when migrating to v0.3.9.
Version 0.3.8 -- Jun 2013
=========================
* You will find some new utility scripts to help building, testing and
debugging inside /bin. Check the updated Local Deployment Guide guide at:
developers.google.com/ad-exchange/rtb/open-bidder/guides/local-deployment-guide
* Breaking: The 'tracking' package was removed, which will break code but
you should get everything working by just fixing the imports. For example,
com.google.openbidder.api.tracking.click => com.google.openbidder.api.click.
* The classes tracking.TrackingRequest/Response were moved to the interceptor
package and renamed to UserRequest/Response, and they're now base classes
for all Req/Resp types (including BidRequest/Response); but this shouldn't
break any user code, unless you have created custom Req/Resp types.
* Request/Response Cookie support added back (went missing in 0.3.6).
* Bootstrapping improvements, nothing big (corner cases, error handling).
* UI warns about zones currently in maintenance.
* SnippetProcessor handles rare AdX requests with missing data; warn problems.
Version 0.3.6 -- Jun 2013
=========================
* User-provided jars will be put in the classpath with precedence over the
system jars, which makes possible to override classes or resources.
* Support for user-provided, unbundled resources: any file without .jar
extension in the user's bucket will be put directy in the classpath so
you can read it with getResourceAsStream(), and modify the file directly
without editing jar files. The same resources can alternatively be read
as files, at the path /usr/local/open-bidder/java/usr/resources/.
* Use the mechanism above, and the JVM property -Dlogback.configurationFile,
to load an alternative LogBack configuration file. The property value
must be a full filesystem path (see above), a resource reference won't
work because LogBack is configured from Jetty's root classpath.
* AdUnitCollectionManager doesn't report errors when the adunit bucket is
not found; this is now the normal scenario.
* Bootstrapping will not fail if the user bucket URI ends with a slash.
* Bootstrapping will not fail if the UI project is compiled on Windows,
which may change resources to MS-DOS format (CRLF line terminators).
* UI now support debian-7, centos-6 images. Gcel images that are deprecated
have been removed from the UI completely.
Debian-6 images are currently not supported.
* Move to jetty 9.
Version 0.3.5 -- May 2013
=========================
* Added support for gcel-12 images. With this change, the current release
can now use centos-6 and gcel-12; the debian-6 and debian-7 options are
still unavailable due to ongoing work to support the latest GCE APIs, so
this support for debian images will return in the next release soon.
* Fixed logging configuration for centos-6 images.
* Improved tuning of Jetty for specific machine sizes (number of CPUs).
Version 0.3.4 -- May 2013
=========================
* DoubleClick connector refactored into separate, optional modules. User
projects that use DoubleClick should depend on open-bidder-api-doubleclick
and their deployment will need the jars for this module and also for
open-bidder-server-doubleclick. These two jars are in the system bucket
gs://open-bidder-files so they will be installed automatically.
* Weather Interceptor sample refactored into a separate project, and its
implementation updated to use openweathermap and also better, asynchronous
caching so this sample works again (updated Guide will follow).
* AdUnitCollectionManager updated for better testability. This required some
breaking changes (constructor and test utilities), may affect users that
have custom AdUnit importing/management code.
* New API: CompositeInterceptor. GoF Composite pattern for interceptors.
* Several changes and fixes to accommodate API, gcutil, and instance images
updated as part of GCE's public preview release at Google I/O. Users are
advised to delete existing instances with deprecated image types (gcel and
ubuntu);
SOME CAVEATS:
CentOS images are supported and they seem to work well, but they've got
much less testing than the other images (older types like gcel were also
based on debian), so consider this support "beta" at this time.
* bidding: some methods renamed for consistency with the style from protobuf
builders, e.g. setExchangeMetadata(Map) -> putAllExchangeMetadata(Map);
builder() -> newBuilder(). The old methods are still available, but they
are deprecated, will be removed in the next major release (0.4.0).
* ThirdPartyAd has a new property creativeUrl. You can use this to feed the
new macro %%OB_AD_CREATIVE_URL%%, making snippets independent from this URL.
* Breaking: DoubleClickAttributes deleted. You can now set custom attributes
with a Doubleclick.BidResponse.Ad[.Builder], see next item.
* DoubleClick Ad Exchange: New support for Flash-less inventory; see
http://support.google.com/adxbuyer/bin/answer.py?hl=en&answer=2728351
See also the unit test DoubleClickBidRequestServletTest.testFlashless().
* The DoubleClickAttribuites.Metadata enum is replaced by the top-level
class DoubleClickMetadata; inject this into classes that need metadata.
* testing: PropertyLoaderModule now can use a prebuild Properties as input.
* DoubleClick Ad Exchange: New support for Flash-less inventory; see
http://support.google.com/adxbuyer/bin/answer.py?hl=en&answer=2728351
See also the unit test DoubleClickValidationInterceptorTest.testFlashless().
* New standard interceptor, DoubleClickValidationInterceptor, can be added
to the interceptor chain to perform certain validations of the bids created
by interceptors. These validations were previously built in the servlet,
so you can now disable them if not necessary in production.
* BigQuery metrics reporter moved out of open-bidder-server and into a
separate, optional module open-bidder-bigquery.
Version 0.3.3 -- Apr 2013
=========================
* Fixed the bug that interceptor configuration is not updating.
Version 0.3.2 -- Apr 2013
=========================
* Fixed editing the bidder configuration to update VM Parameters.
Version 0.3.1 -- Apr 2013
=========================
* Removed ad importing. This is no longer necessary as ad units are created
on-the-fly from the bid request.
* Moved AdUnitCollectionManager from server to API, refactored to allow
alternate implementation for other data sources and exchanges.
* Fixed multiple SLF4J bindings in version 0.3.0, cleaned and updated dependency.
Version 0.3.0 -- Apr 2013
=========================
* New: support cookie matching, see com.google.openbidder.api.tracking.match.
* Select a Buyer Account from the available accounts you have access to rather
than entering the account number manually.
* New: macros for snippets - AD_ID, AD_CLICKTHROUGH_URL, AD_WIDTH, AD_HEIGHT.
These help avoid repetition of the same information in the snippet and bid
(see in the samples project, the snippet in samples.properties; this allows
the ConfigurableBidInterceptor to support a campaign with many slot sizes).
* New: support custom images for Google Compute Engine vm instances.
* Breaking: The InterceptorController API (and all subtypes) doesn't have the
generic parameter <I>. Just remove it if you have any custom controllers.
* Breaking: Some *TestUtil methods have been changed to use varargs instead
of lists; e.g. BiddingTestUtil.newController(BidInterceptor...), so you
don't need to wrap the intercepto5rs to be tested in a List.
* Hosted ads (HostedAdBid) is deprecated, and may be removed in a future date.
* Reorganization of the distribution files. The Project now has a single
property that names a Cloud Storage bucket where all distribution artifacts
(including user-created jars for interceptors or other code) will be found.
The standard bucket, gs://open-bidder-files-%OB_VERSION%, has to be set
manually in old projects, and will be default in new projects. Users will
be required to create private buckets if they have any custom jars, because
the standard gs://open-bidder/files-* buckets are managed by the Open Bidder
team to have only official distribution files, so you cannot put jars there.
Use the new gsupdate.sh utility to manage the private bucket.
* @PostConstruct and @PreDestroy support improved, more JSR-250 compliant:
now you can define these as private methods, and overriding is supported.
* Updated to the latest spec of DoubleClick's bid request protobuf, v.33
(developers.google.com/ad-exchange/rtb/downloads/realtime-bidding-proto.txt)
This shouldn't be a breaking change, unless you have custom request servlets
or other advanced code that deals with DoubleClick's request/response.
* Update protobuf to 2.5.0 (required download and install protobuf 2.5.0,
installation instructions can be found https://code.google.com/p/protobuf/)
Version 0.2.5 -- Mar 2013
=========================
* Upgrade to GAE 1.7.6; solves the problem with the maven plugin devserver.
* Fix for the AdExchangeBuyer client in error reporting.
* Fix WeatherInterceptor for jetty:run.
* Simplify GoogleCloudStorage API.
* AdUnitCollection avoids duplicated entries and other potential problems.
* Standard interceptors (like MaxCpmPricingInterceptor) moved to a 'bidding'
subpackage; may need to edit existing bidder projects configured with these.
Version 0.2.4 -- Mar 2013
=========================
* Support bidding without AdUnit filters and create synthetic AdUnits
for no-import scenario.
* Added standard interceptors to support min, max, range and general
filter functionality. Also added interceptor support to third-party ads.
* AdUnitCollection supports lookup by adgroupId again. AdUnitCollection's
lifecycle was improved and clarified, check the Interceptor's javadocs.
* The bid request servlet now has a different behavior if no AdUnits have
been imported: The request's pre-targeting list will be populated with
AdUnits created to match the request (previously that list would be empty).
* UI:
- Added uncaught exception while adding instances into zones in maintenance.
- Fixed a bug that cannot update network resource when quota reaches 100%.
* Version update:
- Upgraded AdWords API to 1.13.0.
- Upgraded load balancer bootstrap to GCE version v1beta14.
* Javadoc fix for open-bidder-api.
Version 0.2.3 -- Feb 2013
=========================
* Runtime infrastructure updates: Google App Engine 1.7.5, Jetty 8.1.9,
Java runtime to OpenJDK 7. The most significant change is Jetty; now we
install our own distribution instad of using Ubuntu's Jetty 6.1 package.
The service name is ob-jetty, and configuration files have changed
(check changes in open-bidder-puppet if you have config customizations).
* UI: Tuning of GAE channel reconnection logic, should fix the errors
caused by depletion of daily channels quota.
* UI: support for optional OAuth2 scopes for balancers and bidders.
Version 0.2.2 -- Feb 2013
=========================
Changes:
* Several APIs that were previously interfaces with private implementation,
are now concrete classes: [Bid|Impression|Click][Request|Response],
InterceptorChain, AdUnitCollection. These are typically not created by
app code, but they're now easier to create them in unit tests, with less
dependency on test-scope factories. For code that only uses these types,
this change doesn't break source compatibility, but you must rebuild.
* InterceptorController implements Guava's Service interface, for a more
robust and standard lifecycle API. This replaces Closeable; calls to
close() should be replaced with calls to stop() or stopAndWait().
* InstanceMetadata, GoogleComputeCredential, ConfiguredOAuth2CredentialFactory,
GoogleComputeOAuth2CredentialFactory: Constructors have a new parameter
JsonFactory. These objects are typically injected, should only impact tests.
* Some packages previously from the server project now promoted to the API:
- com.google.openbidder.api.servlet, for user-defined servlets.
- com.google.openbidder.api.snippet, utilities for HTML snippets.
Version 0.2.1 -- Jan 2013
=========================
Changes:
* Added an optional exchangeMetadata parameter to Bid. Allows interceptors
to set some exchange specific metadata for a Bid. Enables support
for specifying which AdSlot a bid corresponds to with the DoubleClick
Ad Exchange.
* The Bid class is now abstract, with subclasses for each kind of bid.
No constructors are available anymore, you must use a new builder API
to instantiate bids of each kind, e.g. HostedAdBid.build()...
Both bid classes and builders are more type-safe as certain properties
exist only in specific classes and construction can do more checking.
* The Bid's thirdParty property was renamed to thirdPartyAd.
Version 0.2.0 -- Dec 2012
=========================
Changes:
* Introduced interceptor API for click and impression tracking
* Renamed various interceptor classes:
+ BidderInterceptor => BidInterceptor
+ BidderInterceptorChain => InterceptorChain<BidRequest, BidResponse>
+ Bidder => BidController
* Interceptor lifecycle methods were removed. Interceptors can annotate
methods now with javax.annotation.PostConstruct and
javax.annotation.PreDestroy.
* open-bidder-guice merged into open-bidder-api module
+ InterceptorConfiguration class, and parameters of this type, removed.
All its properties are still available via Guice dependency injection
* Method signatures changed:
+ BidderInterceptor.execute(BidRequest, BidResponse, BidderInterceptorChain)
=> BidInterceptor.execute(InterceptorChain<BidRequest, BidResponse>)
+ BidderInterceptorChain.proceed(BidRequest, BidResponse) =>
InterceptorChain.proceed.proceed()
+ Bidder.onBidRequest(BidRequest) => BidController.onRequest(BidRequest, BidResponse).
+ ThirdPartyAd.getSnippet() -> getAdContent()
+ Bid and ThirdPartyAd: Some constructors changed, new parameters
* Refactored AdUnit support for interceptors
+ Interceptors must now inject AdUnitCollection via Guice
+ Interceptors can be notified of AdUnit changes by implementing
AdUnitUpdateListener
+ AdUnitCollection no longer indexes by DoubleClick AdGroup to
make it more exchange agnostic.
* Small changes
+ GoogleCloudStorageMock => FakeGoogleCloudStorage
+ All deprecated methods from version 0.1.6 were now removed for good.
Version 0.1.6 -- Nov 2012
=========================
Changes:
* Review of the file permissions created by Puppet. All permissions
are now explicitly set.
* Upgraded App Engine SDK to 1.7.3.
* BigQuery metrics reporter no longer dies when it fails to write
metrics on one interation.
* Add counter support for BigQuery metrics.
Version 0.1.5 -- Oct 2012
=========================
Changes:
* Added support for third-party video ads, represented as video urls.
* Pre-targeting histogram in bidding metrics now decays over time.
* Added experimental support for bidders inserting their metrics to
Google BigQuery.
Version 0.1.4 -- Oct 2012
=========================
Changes:
* Hosted image creatives exported from DoubleClick are now properly
imported and mapped to image AdUnits.
* Fixed a bug where bidders would not start because apt-get update
was not run.
Version 0.1.3 -- Oct 2012
=========================
Changes:
* Refactoring of interceptor APIs:
- BidderInterceptor is now an interface; AbstractBidderInterceptor
provides the implementation base equivalent to old BidderInterceptor
- New Interceptor and InterceptorController interfaces.
Version 0.1.2 -- Sep 2012
=========================
Changes:
Bug fixes:
* Load balancer bootstrap bug caused by new Compute Engine instance fixed.
* Now using a Guice child injector for user interceptors. Fixes a bug
where users could not use guice-servlet to bind new servlets.
* Fixed a bug where the UI would not start with App Engine 1.7.2.
Version 0.1.1 -- Sep 2012
=========================
Changes:
API:
* Review support for multiple Exchanges. These modifications make easier
to code interceptors or other artifacts that support multiple exchanges,
and makes possible for third-parties to implement support for a new
exchange without requiring any changes to Open Bidder's API.
- Exchange enum eliminated; now using String identifiers for exchanges.
Some utility methods of that enum are in the new class ExchangeUtil.
Exchange.DOUBLECLICK should be replaced by DoubleClickConstants.ID.
BidRequest.getExchange() is now getExchangeId(), returning String.
- ThirdPartyAd now supports multiple attribute containers, keyed by
exchange identifier, so a single pool of ThirdPartyAd instances can
be used even across requests from different exchanges. Constructors
and attribute getters are updated to support multiple exchanges.
- DoubleClickAttributes moved to the exchange.doubleclick subpackage.
- The @SupportedExchanges annotation was removed.
* Improved support for accessing Compute Engine instance metadata with
InstanceMetadata.
- Added a method for retrieving parsed network metadata for the instance.
- Removed HostMetadata class and implementations for Compute Engine
and a generic host. Interceptors can access this information
accordingly for the Platform passed in the InterceptorConfiguration
Docs:
* Generated Javadocs for open-bidder-api and open-bidder-guice are now
included in the repository.
UI:
* Visual and usability improvements.
Other changes:
* Load balancers are now bootstrapped using Puppet. Improved default
load balancer configuration to reduce timeouts.
Version 0.1.0 -- Aug 2012
=========================
Initial release of the Open Bidder.