attachment-0002

<b style="font-family:Tinos;font-size:medium;font-weight:normal"><span style="vertical-align:baseline;color:rgb(34,34,34);font-size:15px;white-space:pre-wrap;font-family:Arial">Thanks to everyone who contributed feedback to our </span><span style="vertical-align:baseline;color:rgb(34,34,34);font-size:15px;white-space:pre-wrap;font-family:Arial;font-weight:bold">Cloud Device Description</span><span style="vertical-align:baseline;color:rgb(34,34,34);font-size:15px;white-space:pre-wrap;font-family:Arial"> (CDD) of printer capabilities. We appreciate your experience and the thoughtfulness which you’ve put into reviewing our draft, and have made adjustments to it (as well as added clarifications) below. </span><br>

<span style="vertical-align:baseline;color:rgb(34,34,34);font-size:15px;white-space:pre-wrap;font-family:Arial"></span><br><span style="vertical-align:baseline;color:rgb(34,34,34);font-size:15px;white-space:pre-wrap;font-family:Arial">The draft we shared was initially written for developers and not as a complete design document. Consequently, it omitted some details around the scope and purpose of CDD which we’ll tried to clarify here:</span><br>

<span style="vertical-align:baseline;color:rgb(34,34,34);font-size:15px;white-space:pre-wrap;font-family:Arial"></span><br></b><ol style="font-family:Tinos;font-size:medium;margin-top:0pt;margin-bottom:0pt">
<b style="font-weight:normal"><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;color:rgb(34,34,34);font-size:15px;font-family:Arial">
<span style="vertical-align:baseline;white-space:pre-wrap">CDD is in some ways different from UPDF, in that it&#39;s not meant to be implemented in a full-fledged printer driver. In Google Cloud Print, the traditional driver responsibilities are shared between printer and cloud server. For example, page feed direction for a particular media type are not relevant to a user, and would only need to be interpreted by the firmware running on the cloud-aware printer.<br>

</span></li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;color:rgb(34,34,34);font-size:15px;font-family:Arial"><span style="vertical-align:baseline;white-space:pre-wrap">CDD is not intended to fully describe a UI, just provide a simple data model for generating one. Resulting UIs may look entirely different depending on the client. As a result, UPDF sections describing UI layout or locale are not included in CDD.<br>

</span></li></b><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;color:rgb(34,34,34);font-size:15px;font-family:Arial"><b style="font-weight:normal"><span style="vertical-align:baseline;white-space:pre-wrap">The PwgRasterConfig section has been rewritten to be a list of transformations that are applied to the pages of the print job:<br>

</span><div dir="ltr"><table style="border:none;border-collapse:collapse"><colgroup><col width="478"></colgroup><tbody><tr style="min-height:0px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;background-color:rgb(239,239,239);padding:7px">

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">// Configuration of how printer should receive PWG raster images.</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">message PwgRasterConfig {</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">  // Transformation to apply to pages during PWG rasterization.</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">  message Transformation {</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    // Types of transformation operations to apply.</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    enum Operation {</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      // Rotate pages 180 degrees.</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      ROTATE_180 = 0;</span></p>

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span><br><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      // Flip pages along the long edge of the paper.</span></p><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      FLIP_ON_LONG_EDGE = 1;</span></p><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span><br>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      // Flip pages along the short edge of the paper.</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      FLIP_ON_SHORT_EDGE = 2;</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    }</span></p>

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span><br><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    // Selectors of which pages to apply the transformation to.</span></p><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    enum Operand {</span></p><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      // Apply transformation to all pages.</span></p><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      ALL_PAGES = 0;</span></p><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span><br>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      // Apply transformation to even pages only when duplexing.</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      ONLY_DUPLEXED_EVEN_PAGES = 1;</span></p>

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span><br><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      // Apply transformation to odd pages only when duplexing.</span></p><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">      ONLY_DUPLEXED_ODD_PAGES = 2;</span></p><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    }</span></p><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span><br>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    required Operation operation = 1;</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">    required Operand operand = 2;</span></p>

<p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">  }</span></p>

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span><br><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">  // What transformations to apply to pages in the print job.</span></p><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">  repeated Transformation transformation = 1;</span></p><p dir="ltr" style="margin-left:36pt;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:12px;font-family:Consolas;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">}</span><span style="font-size:15px;font-family:Arial;color:rgb(34,34,34);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td></tr></tbody></table></div><br><span style="vertical-align:baseline;white-space:pre-wrap"></span><br><ol start="4" style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:decimal;vertical-align:baseline">

<span style="color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">The initial draft of CDD intentionally omits Media Type and Tray, as semantically understanding these capabilities would mean also providing a language for expressing cross-capability constraints. We will probably add this in the future, but not in this version (and we haven’t enforced these constraints historically for Google Cloud Print).<br>

</span></li><li dir="ltr" style="list-style-type:decimal;vertical-align:baseline"><span style="vertical-align:baseline;white-space:pre-wrap">Changing capabilities will initially be addressed by the printer updating the Google Cloud Print server with a new CDD (e.g., if a duplex unit is installed, the printer firmware will send an updated CDD to GCP with the duplex capability initialized). Temporary printer and job states like offline, paper jam, etc will be not be handled by CDD.<br>

</span></li><li dir="ltr" style="list-style-type:decimal;vertical-align:baseline"><span style="vertical-align:baseline;white-space:pre-wrap">The CDD specification makes use of protocol buffers to describe various objects. In practice, however, CDDs will be sent to and from the GCP server in JSON format. Printer manufacturers can choose to store their CDD representation in JSON on the device if desired. Firmware will not be required to deal with protocol buffers.<br>

</span></li><li dir="ltr" style="list-style-type:decimal;vertical-align:baseline"><span style="vertical-align:baseline;white-space:pre-wrap">Critically, CDD is intended to describe the capabilities of any device - not just printers. Its protobuf specification shows the beginnings of this by separating capability fields of printers and scanners.</span></li>

</ol><span style="vertical-align:baseline;white-space:pre-wrap"></span><br><span style="vertical-align:baseline;white-space:pre-wrap">CDD will draw most of its capabilities from PWG’s Semantic Model (where appropriate). However, CDD is intended to be a simple, strongly typed format and will differ from the flexibility of the Semantic Model in cases where this conflicts. It appears the existing Semantic Model is sufficiently general that most of the semantic capabilities defined in CDD will conform to the Semantic Model, though. </span><br>

<span style="vertical-align:baseline;white-space:pre-wrap"></span><br><span style="vertical-align:baseline;white-space:pre-wrap">Though we won’t be able to send a representative to your meeting on Feb 6-7, we’re hoping this note will clarify the aspects of CDD that raised the most questions. We’ll provide updates to PWG on CDD’s progress as we implement the specification over the coming months, and are always receptive to feedback.</span><br>

<span style="vertical-align:baseline;white-space:pre-wrap"></span><br><span style="vertical-align:baseline;white-space:pre-wrap">While the Google Cloud Print team doesn’t have the resources needed to become heavily involved in ongoing PWG processes at this point, we’d like to continue to exchange ideas and feedback on new developments in printing. We look forward to continuing to contribute where we’re able, and to understanding the efforts of PWG moving forward.</span><br>

<span style="vertical-align:baseline;white-space:pre-wrap"></span><br><span style="vertical-align:baseline;white-space:pre-wrap">Again, thanks for the feedback! If you prefer to contact me at my corporate address, feel free to use <a href="mailto:kdlucas@google.com">kdlucas@google.com</a>.</span></b></li>
</ol><div><font color="#222222" face="Arial"><span style="font-size:15px;white-space:pre-wrap"><br></span></font></div><div><font color="#222222" face="Arial"><span style="font-size:15px;white-space:pre-wrap">Regards,</span></font></div>
<div><font color="#222222" face="Arial"><span style="font-size:15px;white-space:pre-wrap"><br></span></font></div><div><font color="#222222" face="Arial"><span style="font-size:15px;white-space:pre-wrap"><br>
</span></font></div><div><font color="#222222" face="Arial"><span style="font-size:15px;white-space:pre-wrap"><br></span></font></div><div>Kelly<br>kdLucas</div>
<br />-- 
<br />This message has been scanned for viruses and
<br />dangerous content by
<a href="http://www.mailscanner.info/"><b>MailScanner</b></a>, and is
<br />believed to be clean.