Git Product home page Git Product logo

prebid.github.io's Introduction

docs.prebid.org source

This repository contains the source files for the Prebid.js documentation site at Prebid.org.

Please see the sections below for more information:

Contributing

Thanks in advance for your contribution!

For smaller changes, such as fixing a typo or adding a new section to an existing page, submit a pull request.

For larger changes such as reorganizing the site and moving/removing content, you may want to open an issue so we can discuss the work beforehand. This is a good idea because:

  • We want to value your time, so you don't do unnecessary work
  • We want to value our users' time; we don't want to break links and bookmarks for users

License

All docs are under the license shown in the LICENSE file in this directory.

Prerequisites

The site is hosted on GitHub pages, and uses Jekyll to generate the HTML. Jekyll is written in the Ruby language.

  1. follow the instructions at jekyllrb.com/docs/installation/ for your OS
  2. gem install github-pages
  3. start Jekyll as described below

For CSS, the site uses Jekyll board tools to compile SCSS down to CSS.

  1. Install boostrap via npm install to make the build work
  2. Jekyll assets management
  3. Jekyll SASS plugin

The markdown files are linted via markdownlint-cli. VSCode supports the .markdownlintignore file. You may need to configure the disabled rules specified in .markdownlint.json directly in your project settings. You can invoke linting in CLI via

markdownlint --config .markdownlint.json --ignore-path .markdownlintignore "**/*.md"

Running Jekyll Locally

Before submitting a pull request, you should run the site locally to make sure your edits actually work.

To get started editing the site and seeing your changes, clone this repo and enter the following commands in your terminal:

JEKYLL_ENV=production bundle exec jekyll serve --watch --incremental

You should see output that looks something like this:

Configuration file: /Users/me/git/prebid.github.io/_config.yml  
            Source: /Users/me/git/prebid.github.io  
       Destination: /Users/me/git/prebid.github.io/_site  
 Incremental build: disabled. Enable with --incremental  
      Generating...   
                    done in 13.596 seconds.  
 Auto-regeneration: enabled for '/Users/me/git/prebid.github.io'  
Configuration file: /Users/me/git/prebid.github.io/_config.yml  
    Server address: http://127.0.0.1:8080/  
  Server running... press ctrl-c to stop.  
...  
...  

Open the Server address URL in your browser, and you should see a locally running copy of the site.

Building Assets

  • npm run dev to build unminified CSS for development
  • npm run prod to build minified CSS for production
  • npm run watch to use Browsersync to rebuild CSS on demand and reload the browser

The Downloads Page

Please don't submit PRs to the Prebid.org downloads page. That page gets updated in tandem with the Prebid.js release process.

The Downloads page is generated from the Markdown bidder adapter docs, so the process for updating is:

  1. Your adapter code is merged into Prebid.js
  2. Your bidder docs PR is submitted over here to the docs site
  3. Your adapter code is included with a release
  4. Once your adapter code is actually released, we merge the adapter docs PR, and the Downloads page is automagically updated with a checkbox to include your adapter.

This means an adaptor is not available to download from Prebid.org as soon as the code gets merged into Prebid.js - it will be available after the next release (usually in a couple of weeks).

Liquid Templating

Thanks

Many thanks to the following people who have submitted content to Prebid.org. We really appreciate the help!

prebid.github.io's People

Contributors

bookwyrm avatar bretg avatar bszekely1 avatar chrishuie avatar ckbo3hrk avatar dependabot[bot] avatar dgirardi avatar genegenie avatar heray avatar jaiminpanchal27 avatar jbartek25 avatar jdwieland8282 avatar jeanstemp avatar jsalis avatar jsnellbaker avatar matthewlane avatar mkendall07 avatar muuki88 avatar osazos avatar patmmccann avatar pm-harshad-mane avatar rimaburder-index avatar rmloveland avatar slimkrazy avatar smenzer avatar snapwich avatar ssuranie avatar syntaxnode avatar themediagrid avatar yuriyvelichkopi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

prebid.github.io's Issues

Site needs automated tests

As the site continues to grow, we will need more than the eyeball test when we make changes and merge/deploy/whatever.

Basically, we need tools that tell us if we are breaking shit on the site.

Looks like this is the tool used by the Github folks for this purpose: HTMLProofer

Move example code out of Publisher API Reference

The reference page should only contain reference information. If we need examples to clarify, link out to examples.

Reasons:

  • Maintenance gets easier
  • Clarity goes up (i.e., each section gets shorter)
  • Having a uniform "reference-only" format for each section will make it much easier to search and scan

Site needs search capability

As the site continues to grow, we need some way to search through everything.

It looks like this is possible with the jekyll-lunr-js-search plugin.

Perhaps there are other ways to do this, but according to Stack Overflow this one works on Github Pages, whereas some other standard Jekyll solutions don't.

Since Googling for stuff on Stack Overflow is Right and Good (tm), that solution looks the most promising right now. We'll see.

Need table for Key Values available for ad server

Can you please put a table in the Ad Ops section of the available key values, what they mean, and what values should be set in the ad server during key value setup.

For example

hb_pb - 1.10 - enter your price bucket info here
hb_adid - - leave blank
hb_size - 300x250 - sizes you wish to pass in
hb_bidder - appnexus, openx, pubmatic - bidder names

Update bidCpmAdjustment signature in docs

[submitted by @dugwood]
I don't know where to put this, but I don't see where I can post it elsewhere.

In the documentation:
http://prebid.org/dev-docs/publisher-api-reference.html#module_pbjs.bidderSettings
bidCpmAdjustment is presented only with bidCpm as an argument. It should be presented with its second argument (that would have saved me a few hours!):

bidCpmAdjustment : function(bidCpm, bid){
  // adjust the bid in real time before the auction takes place
  // console.log('Bidder is: ' + bid.bidderCode);
  return bidCpm * .85;
}

So that we can create a global function, and attach it to handle all bidders in one place (great for placing a common floor price).

Thanks.

Remove dangling pages

There are a number of dangling pages that don't have any links pointing into them (AFAICT), but which nonetheless show up sometimes in Google, etc. Here's an example:

https://prebid.github.io/dev-docs/bidders/sonobi.html

Scope of this ticket is:

  • find the dead/dangling pages
  • remove them
  • ideally, set up some kind of tooling (script or something) that (say) builds a sitemap and makes sure you are notified of dangling pages

Library version number appears in too many places on the site

Currently, examples and documentation using version numbers are scattered across several areas of the site:

  • documentation
  • code samples on the site
  • code samples off the site (i.e., JSFiddle)

This information should be available from one single source of truth. If we use Jekyll's single-sourcing capabilities, we can store the version number in a variable somewhere and run a script to bump the version number.

I'm not as sure about JSFiddle; maybe there's an API?

Too Much Documentation

Right now there is too much content on the site, and much of it is very detailed. This optimizes for experts, but we need to optimize for new users/people who are evaluating various header bidding solutions.

We have too many examples, too much code, too many features you could maybe use, but maybe won't. (I'm strictly referring to the documentation, not the library.)

Experts can just read the source code, and they probably already know how to set up keyword targeting in DFP.

Pubfood might be a bit too light on content, but we should learn from their layout and move in that direction with our site's content.

It may be useful to look at our GA account as part of this culling work. Although with so many long pages, GA may not prove that useful, since (IIUC) it will show "pageviews" but not which part of the page people are actually reading.

Document `pbjs.enableSendAllBids()` API method

At the very least, add this to the [API Reference|http://prebid.org/dev-docs/publisher-api-reference.html].

Ideally create an example for the [Examples|http://prebid.org/dev-docs/examples/basic-example.html] page, and some docs in the [Ad Ops|http://prebid.org/adops.html] section about how to use.

Garbled text at top of bidder params page

Specifically:

In this page, you can find the below information:

- bidder code: this is the code prebid.js uses to identify bidders.
- bid params: ad request parameters for a bidder. For example, tag Id, site ID, query string parameters. Your page should fill out the required bid params for a bidder to succesfully get a bid back.
- bidder specific bidResponse: in addition to
- Caveats: every bidder is different. In addition to the standardized bidResponse object we propose, there might be caveats that you should know about.

Document "dense" option for `pbjs.setPriceGranularity()`

Via the 0.9.0 release notes:

New "dense" option for pbjs.setPriceGranularity():

pbjs.setPriceGranularity('dense') will set price bucket targeting as shown:

| CPM | Granularity |
|------------+----------------------------------|
| CPM <= $3 | $0.01 increments |
| CPM <= $8 | $0.05 increments |
| CPM <= $20 | $0.50 increments |
| CPM > $20 | Caps the price bucket at $20 |

Add back Prebid.org CNAME?

Hey @mkendall07 is it OK to restore our CNAME file now? I just had some quirkiness with the redirect from prebid.org to prebid.github.io (saw an nginx 400 error or something).

I'm happy to do it if it's just a matter of adding the CNAME file back, but wanted to check with you first as I'm not familiar with the server setup, etc.

Jekyll install needs a Gemfile

Currently, the way to install all of the plugins needed for the site to run locally is to run jekyll serve and keep gem installing plugins until it stops breaking.

Figure out if we need docs on events

According to the 0.12.0 release notes, we now emit an "auction end" event.

I think we might need to capture docs on what events are emitted by Prebid.js in one place. Maybe this exists, but I couldn't find it with a quick search.

Scope of this ticket is: find out if we need this, and if so, define what "this" is, and then do it.

GA analytics doc lacking important config info

prebid.github.io/dev-docs/analytics-ga.md should mention somewhere (preferably under the section about "A few requirements") about including "ga" in the analytics array in package.json

Update description of AdUnit `code` field for non-GPT use

In the Publisher API Reference, we say this is:

"A unique identifier of an ad unit. This identifier will later be used to set query string targeting on the ad unit. If you’re GPT, we recommend entering the slot element ID"

However, users are confused about what this actually means in non-GPT cases. Via Reddit, a user asks:

"I'm trying to set up prebid.js for the first time, and I'm confused by what is placed in the object's "code" key. The docs say "identifier of this ad unit" and go on to describe what goes here if I'm using GPT, but doesn't say much about if we're not using GPT.

Since this seems independent of the individual bidders paramaters, I am not sure what to use here. Is it the id of the HTML element where the ad will be placed (I know that doesn't sound correct), or is it an id of an ad unit set up on AppNexus side (that doesn't sound correct either)? Or is it just a unique ID I create on my end to refer to the ad unit that's being bid on?

I hope someone can point me in the right direction... Thanks! EDIT: To be more clear, this is what I'm talking about:"

pbjs.que.push(function(){
  var adUnits = [{
  code: '{id}',
  sizes: [[300, 250], [300, 600]],
  bids: [
    {
      bidder: 'appnexus',
      params: {
      placementId: '{id}'
    }
  }]}];

  //add the adUnits
  pbjs.addAdUnits(adUnits);
});

Download page needs update to 2: custom build

The download page http://prebid.org/download.html has a section on "custom build from source". This is outdated and should either reference the readme doc of prebid.js directly or copy from it.

Update JS code in 'Add a Creative' step on the Ad Ops 'step by step' page

The current JS snippet will cause the ad units to show blanks if running inside iFrames; the code should be changed to:

<script>
var w = window;
for (i = 0; i < 10; i++) {
  w = w.parent;
  if (w.pbjs) {
    try {
      w.pbjs.renderAd(document, '%%PATTERN:hb_adid%%');
      break;
    } catch (e) {
      continue;
    }
  }
}
</script>

Need a Policy for how docs will handle library versioning

Right now the docs just assume you are running the latest and greatest version of Prebid.js. We've made some small efforts to mark functions/features as requiring a specific version, but we should come up with an official policy/whatever.

I'd argue that pre-1.0 we should not commit to a heavyweight versioning scheme for the docs.

@mkendall07 @Heray -- what do you think?

Update README for contributors

The site README should make it clear how to get started contributing to the docs. We may also want to add some contribution guidelines, etc. (TBD)

Document "sendStandardTargeting: false" in bidder settings

  • Custom sendStandardTargeting implemented in bidderSettings per bidder (#559)
  • Note on PR:
    • "As discussed, if a particular bidder has a bidderSettings
      object with sendStandardTargeting: false don't send the standard
      targeting values to the ad server."
  • Diff:
  • Outcome:
    • if bidderSettings has a k-v sendStandardTargeting: false, all
      of the standard keys are dropped from the ad server targeting, and
      only the custom keys are sent to the ad server.

Add deprecation tags to the following functions.

Need to add deprecated and removed tags as of 0.9.0 release for the following functions.

pbjs.requestBidsForAdUnit @deprecated - removed, use pbjs.requestBids
pbjs.requestBidsForAdUnits @deprecated - removed, use pbjs.requestBids
pbjs.setTargetingForAdUnitsGPTAsync @deprecated - removed, use pbjs.setTargetingForGPTAsync

Get continuous integration builds working

Description

Right now the checkin builds fail with what looks like an error installing the "public_suffix" gem. I'm not sure why a Ruby < 2.0 is being used, that's from ~2013. Maybe a configuration problem? Relevant line (I think):

Gem::InstallError: public_suffix requires Ruby version >= 2.0.

Raw log

Using worker: worker-linux-docker-2b17b5ac.prod.travis-ci.org:travis-linux-10

Build system information
Build language: ruby
Build group: stable
Build dist: precise
Build image provisioning date and time
Thu Feb  5 15:09:33 UTC 2015
Operating System Details
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:    12.04
Codename:   precise
Linux Version
3.13.0-29-generic
Cookbooks Version
a68419e https://github.com/travis-ci/travis-cookbooks/tree/a68419e
GCC version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

LLVM version
clang version 3.4 (tags/RELEASE_34/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
Pre-installed Ruby versions
ruby-1.9.3-p551
Pre-installed Node.js versions
v0.10.36
Pre-installed Go versions
1.4.1
Redis version
redis-server 2.8.19
riak version
2.0.2
MongoDB version
MongoDB 2.4.12
CouchDB version
couchdb 1.6.1
Neo4j version
1.9.4
RabbitMQ Version
3.4.3
ElasticSearch version
1.4.0
Installed Sphinx versions
2.0.10
2.1.9
2.2.6
Default Sphinx version
2.2.6
Installed Firefox version
firefox 31.0esr
PhantomJS version
1.9.8
ant -version
Apache Ant(TM) version 1.8.2 compiled on December 3 2011
mvn -version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T17:29:23+00:00)
Maven home: /usr/local/maven
Java version: 1.7.0_76, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.13.0-29-generic", arch: "amd64", family: "unix"

$ export DEBIAN_FRONTEND=noninteractive
W: Size of file /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_precise-backports_multiverse_source_Sources.gz is not what the server reported 5886 5888
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libc-bin libc-dev-bin libc6-dev
Suggested packages:
  glibc-doc
The following packages will be upgraded:
  libc-bin libc-dev-bin libc6 libc6-dev
4 upgraded, 0 newly installed, 0 to remove and 235 not upgraded.
Need to get 8,844 kB of archives.
After this operation, 9,216 B disk space will be freed.
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main libc6-dev amd64 2.15-0ubuntu10.13 [2,943 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main libc-dev-bin amd64 2.15-0ubuntu10.13 [84.7 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main libc-bin amd64 2.15-0ubuntu10.13 [1,179 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main libc6 amd64 2.15-0ubuntu10.13 [4,637 kB]
Fetched 8,844 kB in 0s (36.6 MB/s)
Preconfiguring packages ...
(Reading database ... 71420 files and directories currently installed.)
Preparing to replace libc6-dev 2.15-0ubuntu10.10 (using .../libc6-dev_2.15-0ubuntu10.13_amd64.deb) ...
Unpacking replacement libc6-dev ...
Preparing to replace libc-dev-bin 2.15-0ubuntu10.10 (using .../libc-dev-bin_2.15-0ubuntu10.13_amd64.deb) ...
Unpacking replacement libc-dev-bin ...
Preparing to replace libc-bin 2.15-0ubuntu10.10 (using .../libc-bin_2.15-0ubuntu10.13_amd64.deb) ...
Unpacking replacement libc-bin ...
Processing triggers for man-db ...
Setting up libc-bin (2.15-0ubuntu10.13) ...
(Reading database ... 71420 files and directories currently installed.)
Preparing to replace libc6 2.15-0ubuntu10.10 (using .../libc6_2.15-0ubuntu10.13_amd64.deb) ...
Unpacking replacement libc6 ...
Setting up libc6 (2.15-0ubuntu10.13) ...
Setting up libc-dev-bin (2.15-0ubuntu10.13) ...
Setting up libc6-dev (2.15-0ubuntu10.13) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
$ git clone --depth=50 https://github.com/prebid/prebid.github.io.git prebid/prebid.github.io
Cloning into 'prebid/prebid.github.io'...
remote: Counting objects: 988, done.
remote: Compressing objects: 100% (449/449), done.
remote: Total 988 (delta 602), reused 897 (delta 532), pack-reused 0
Receiving objects: 100% (988/988), 4.68 MiB | 0 bytes/s, done.
Resolving deltas: 100% (602/602), done.
Checking connectivity... done.

$ cd prebid/prebid.github.io
$ git fetch origin +refs/pull/31/merge:
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 14 (delta 8), reused 10 (delta 5), pack-reused 0
Unpacking objects: 100% (14/14), done.
From https://github.com/prebid/prebid.github.io
 * branch            refs/pull/31/merge -> FETCH_HEAD

$ git checkout -qf FETCH_HEAD

This job is running on container-based infrastructure, which does not allow use of 'sudo', setuid and setguid executables.
If you require sudo, add 'sudo: required' to your .travis.yml
See https://docs.travis-ci.com/user/workers/container-based-infrastructure/ for details.
$ rvm use default
Using /home/travis/.rvm/gems/ruby-1.9.3-p551

$ export BUNDLE_GEMFILE=$PWD/Gemfile
$ ruby --version
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]
$ rvm --version
rvm 1.26.10 (latest-minor) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]
$ bundle --version
Bundler version 1.7.6
$ gem --version
2.4.5
$ bundle install --jobs=3 --retry=3
Fetching gem metadata from https://rubygems.org/............
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Installing i18n 0.7.0
Installing RedCloth 4.2.9
Installing minitest 5.8.4
Installing json 1.8.3
Installing thread_safe 0.3.5
Installing addressable 2.4.0
Installing coffee-script-source 1.10.0
Installing execjs 2.6.0
Installing colorator 0.1
Installing multipart-post 2.0.0
Installing gemoji 2.1.0
Installing net-dns 0.8.0

Gem::InstallError: public_suffix requires Ruby version >= 2.0.
Installing ffi 1.9.10
An error occurred while installing public_suffix (1.5.1), and Bundler cannot
continue.
Make sure that `gem install public_suffix -v '1.5.1'` succeeds before bundling.

The command "eval bundle install --jobs=3 --retry=3" failed. Retrying, 2 of 3.

Fetching gem metadata from https://rubygems.org/............
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using RedCloth 4.2.9
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.8.4
Using thread_safe 0.3.5
Using addressable 2.4.0
Using coffee-script-source 1.10.0
Using execjs 2.6.0
Using colorator 0.1
Using ffi 1.9.10
Using multipart-post 2.0.0
Using net-dns 0.8.0
Using gemoji 2.1.0

Gem::InstallError: public_suffix requires Ruby version >= 2.0.
Installing sass 3.4.22
An error occurred while installing public_suffix (1.5.1), and Bundler cannot
continue.
Make sure that `gem install public_suffix -v '1.5.1'` succeeds before bundling.

The command "eval bundle install --jobs=3 --retry=3" failed. Retrying, 3 of 3.

Fetching gem metadata from https://rubygems.org/............
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using i18n 0.7.0
Using RedCloth 4.2.9
Using json 1.8.3
Using minitest 5.8.4
Using thread_safe 0.3.5
Using addressable 2.4.0
Using coffee-script-source 1.10.0
Using execjs 2.6.0
Using colorator 0.1
Using ffi 1.9.10
Using multipart-post 2.0.0
Using gemoji 2.1.0
Using net-dns 0.8.0
Using sass 3.4.22

Gem::InstallError: public_suffix requires Ruby version >= 2.0.
Installing rb-fsevent 0.9.7
An error occurred while installing public_suffix (1.5.1), and Bundler cannot
continue.
Make sure that `gem install public_suffix -v '1.5.1'` succeeds before bundling.

The command "eval bundle install --jobs=3 --retry=3" failed 3 times.



The command "bundle install --jobs=3 --retry=3" failed and exited with 5 during .

Your build has been stopped.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.