idnits 2.17.1 draft-brownlee-svg-rfc-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack a Security Considerations section. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 293 has weird spacing: '...he list below...' == Line 294 has weird spacing: '...eft,and their...' == Line 297 has weird spacing: '...bset of the S...' -- The document date (February 12, 2014) is 3719 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Informational ---------------------------------------------------------------------------- == Missing Reference: 'SVG' is mentioned on line 76, but not defined Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group N. Brownlee (Ed.) 3 Internet-Draft The University of Auckland 4 Intended status: Informational IAB 5 Expires: August 16, 2014 6 February 12, 2014 8 SVG Drawings for RFCs: SVG 1.2 RFC 9 draft-brownlee-svg-rfc-02 11 Abstract 13 This document specifies SVG 1.2 RFC - an SVG profile for use in 14 diagrams that may appear in RFCs - and considers some of the issues 15 concerning the creation and use of such diagrams. 17 Status of This Memo 19 This Internet-Draft is submitted in full conformance with the 20 provisions of BCP 78 and BCP 79. 22 Internet-Drafts are working documents of the Internet Engineering 23 Task Force (IETF). Note that other groups may also distribute 24 working documents as Internet-Drafts. The list of current Internet- 25 Drafts is at http://datatracker.ietf.org/drafts/current/. 27 Internet-Drafts are draft documents valid for a maximum of six months 28 and may be updated, replaced, or obsoleted by other documents at any 29 time. It is inappropriate to use Internet-Drafts as reference 30 material or to cite them other than as "work in progress." 32 This Internet-Draft will expire on August 16, 2014. 34 Copyright Notice 36 Copyright (c) 2014 IETF Trust and the persons identified as the 37 document authors. All rights reserved. 39 This document is subject to BCP 78 and the IETF Trust's Legal 40 Provisions Relating to IETF Documents 41 (http://trustee.ietf.org/license-info) in effect on the date of 42 publication of this document. Please review these documents 43 carefully, as they describe your rights and restrictions with respect 44 to this document. Code Components extracted from this document must 45 include Simplified BSD License text as described in Section 4.e of 46 the Trust Legal Provisions and are provided without warranty as 47 described in the Simplified BSD License. 49 Table of Contents 51 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 52 2. SVG 1.2 RFC: An SVG profile for RFCs . . . . . . . . . . . . 2 53 3. How to create SVG drawings . . . . . . . . . . . . . . . . . 4 54 4. Meta-language for diagrams common in RFCs . . . . . . . . . . 4 55 4.1. Sequence Digrgams . . . . . . . . . . . . . . . . . . . . 4 56 4.2. State Diagrams . . . . . . . . . . . . . . . . . . . . . 6 57 4.3. Packet Layout Diarrams . . . . . . . . . . . . . . . . . 6 58 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 59 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 60 7. Revision History [RFC Editor please delete] . . . . . . . . . 6 61 8. Appendix: Elements and attributes allowed in SVG 1.2 RFC . . 7 62 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 63 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 64 9.2. Informative References . . . . . . . . . . . . . . . . . 9 66 1. Introduction 68 Over the last two years the RFC Editor has worked with the Internet 69 community to develop specifications for changes in the format of 70 RFCs. An outline of the resulting specifications was published as 71 [RFC6949] in May 2013. Since then a Design Team has been working 72 with the RFC Editor to flesh out those specifications. One aspect of 73 the changes is to allow line drawings in RFCs; [RFC6949] says 75 "Graphics may include ASCII art and a more complex form to be 76 defined, such as SVG line art [SVG]. Color and grayscale will not 77 be accepted. RFCs must correctly display in monochromatic black- 78 and-white to allow for monochrome displays, black-and- white 79 printing, and support for visual disabilities." 81 SVG (Scalable Vector Graphics) has been developed by W3C, the World 82 Wide Web Consortium; its current standard is SVG 1.1 Full 83 [W3C.REC-SVG11-20110816]. This document defines SVG 1.2 RFC, an SVG 84 profile (i.e. a subset of SVG) that is suitable for RFC line 85 drawings. 87 Note that in RFCs, the text provides normative descriptions of 88 protocols, systems, etc. Diagrams may be used to help explain 89 concepts more clearly, but they are informative, not normative. 91 2. SVG 1.2 RFC: An SVG profile for RFCs 93 As a starting point for SVG 1.2 RFC, the Design Team decided to use 94 SVG 1.2 Tiny [W3C.REC-SVGTiny12-20081222]. SVG 1.2 Tiny is an SVG 95 subset intended to be implemented on small, mobile devices such as 96 cellphones and smartphones. That should allow RFCs to be rendered 97 well on such devices, especially those that have small screens. 98 However, RFCs are self-contained documents that do not change once 99 they are published. The use of SVG drawings in RFCs is intended to 100 allow authors to create drawings that are simple to produce, and 101 easier to understand than our traditional 'ASCII Art' ones. In 102 short, we are also trying to improve access to the content in RFCs, 103 so SVG drawings need to be kept as simple as possible. 105 SVG can provide a complete User Interface, but within RFCs, all we 106 need are simple diagrams that do not change once the RFC is 107 published. Therefore, SVG RFC does not allow anything from the 108 following sections in SVG Tiny 1.2 [W3C.REC-SVGTiny12-20081222]: 110 12 Multimedia 111 13 Interactivity 112 15 Scripting 113 16 Animation 114 18 Metadata 115 19 Extensibility 117 Note that SVG Tiny 1.2 elements may have many properties or 118 attributes that are needed to support aspects of the above sections. 119 Those are not allowed in SVG 1.2 RFC. 121 Considering the other sections in SVG Tiny 1.2 122 [W3C.REC-SVGTiny12-20081222]: 124 9 Basic Shapes 125 10 Text 126 Everything in these sections is allowed in SVG 1.2 RFC. 128 11 Painting: Filling, Stroking, Colors and Paint Servers 129 Anything relating to 'color' is not allowed in SVG 1.2 RFC, 130 everything else is allowed. 132 14 Linking 133 SVG Tiny 1.2 allows internationalized IRIs in references. In 134 SVG 1.2 RFC such links must be ASCII only. That should not 135 cause problems, since one can just use the URI form of any IRI. 136 Authors should try to use links only to URIs that are long-trem 137 stable. 139 17 Fonts 140 SVG 1.2 RFC only allows 'serif', 'sans-serif' and 'monospace' 141 generic font families from the WebFonts facility, described in 142 CSS 2.1 [W3C.REC-CSS2-20110607], section 15, Fonts. In 143 particular, the SVG 'font' element is not allowed. 145 3. How to create SVG drawings 147 Many drawing packages can be used to create SVG drawings, for example 148 Open Source packages Inkscape and Dia. Be aware that such packages 149 may use SVG elements or attributes that are not allowed in SVG 1.2 150 RFC. For example, the 'marker' attribute is often used to place 151 symbols such as arrowheads on lines, but 'marker' is not allowed in 152 SVG 1.2 Tiny or SVG 1.2 RFC. In such cases one has to draw the 153 arrowhead in another, simpler way. 155 We will need to provide a tool to check that a diagram only uses 156 elements and attributes that are allowed in SVG 1.2 RFC. These are 157 listed in the Appendix below. [Need to take the lists from SVG Tiny 158 1.2 and prune them for SVG 1.2 RFC. TBD] 160 Diagrams produced with these packages may produce large SVG files 161 that are hard to read or understand directly. We should provide a 162 tool to strip out unnecccessary attributes; authors could run that 163 tool over their drawings, and see whether such stripping causes any 164 visible changes. 166 Another way to create SVG drawings is to write programs to draw them. 167 For example, using python and its svgwrite module is a pleasant 168 environment (for those who like writing code). 170 4. Meta-language for diagrams common in RFCs 172 This section presents some examples of possible language(s) which 173 could be used to create several kinds of diagrams that are common in 174 RFCs. 176 4.1. Sequence Digrgams 178 Example: Figure 6 from draft-loreto-httpbis-trusted-proxy20-00. 180 column 1 width 250 # columns have vertical line to bottom 181 text above "user-agent" 183 column 2 width 250 184 text "Proxy" 186 column 3 # Last col 187 text "Server" 189 object 1 # Only need polylines 190 pline 1 to 2, arrowhead at end 191 text above "(1) TLS ClientHello" 192 text below "(ALPN ProtocolName: http)" 194 object 2 195 pline 1 to 2, arrowhead at start 196 text above "(2) TLS Error" 197 text below "(Proxy Cert)" 199 object 3 200 pline 1 to 1.3, down, back to 1, arrowhead at end 201 text seg 2 centre "(inform user of the SecureProxy)" 203 #object 4 204 # block 1 to 2, objects 5 to 6, grey 205 # text above "Extra block" 207 object 5 208 pline 1 to 2, arrowhead at end 209 text above "(3) TLS ClientHello" 211 object 6 212 pline 1 to 2, arrowhead at start 213 text above "(4) ServerHello" 215 object 7 216 blank 1 to 2 218 object 8 219 block 1 to 2, objects 8 to 16, "grey" 220 text above "HTTP2.0" 222 object 9 223 pline 1 to 2, arrowhead at end 224 text seg 1 centre "(5) stream(X) GET" 226 object 10 227 pline 2 to 3, arrowhead at end 228 text seg 1 above "(6) TLS ClientHello" 230 object 11 231 pline 2 to 3, arrowhead at start 232 text seg 1 above "TLS ServerHello" 234 object 12 235 blank 2 to 3 237 object 13 238 block 2 to 3, objects 13 to 16, grey 239 text seg 1 above "HTTP2.0" 241 object 14 242 pline 2 to 3, arrowhead at end 243 text seg 1 centre "(7) stream(Z) GET" 245 object 15 246 pline 2 to 3, arrowhead at start 247 text seg 1 centre "(8) stream(Z) 200 OK" 249 object 16 250 pline 1 to 2, arrowhead at start 251 text seg 1 centre "(9) stream(X) 200 OK" 253 The SVG diagram produced from this can be seen at 254 https://www.cs.auckland.ac.nz/~nevil/http-proxy-dwg.svg 256 4.2. State Diagrams 258 4.3. Packet Layout Diarrams 260 5. IANA Considerations 262 This document does not create a new registry nor does it register any 263 values in existing registries; no IANA action is required. 265 6. Acknowledgements 267 Thanks to the Design Team members for their helpful comments and 268 suggestions for SVG 1.2 RFC. 270 7. Revision History [RFC Editor please delete] 272 version -00, 29 Jan 14: 273 Initial version, using content from Nevil's 274 emails to the Design Team. 276 version -01, 11 Feb 14: 277 Allow links to 'long-term stable URIs' 278 Link URIs must be ASCII only 279 Need for tools to check SVG 1.2 RFC compatibilty and to strip 280 'unneccessary' attributes explicitly stated. 281 Statement that drawings can't be normative removed; Postscript- 282 only RFCs already exist. 283 Added most attributes and elements to the Appendix. 285 version -02, 12 Feb 14: 286 Added metalanguage example to make time-sequence drawings. 288 8. Appendix: Elements and attributes allowed in SVG 1.2 RFC 290 Elements, properties and attributes selected for SVG 1.2 RFC from 291 [W3C.REC-SVGTiny12-20081222]. 293 In the list below, elements and properties are listed on the 294 left,and their allowed values are given in parentheses on the 295 right. 296 , the list of allowed colours, is a black-and-white 297 subset of the SVG colour names. 299 Elements: 301 svg (version, baseProfile=tiny, width, viewBox, 302 preserveAspectRatio, snapshotTime) 303 g 304 defs 305 title 306 desc 307 use (x, y, xlink:href) 309 rect (x, y, width, height, rx, ry) 310 circle (cx, cy, r) 311 ellipse (cx, cy, rx, ry) 312 line (x1, y1, x2, y2) 313 polyline (points) 314 polygon (points) 316 text (x, y, rotate) 317 tspan 318 textArea (x, y, width, height, auto) 319 tbreak 321 solidcolor 322 linearGradient (gradientUnits, x1, y1, x2, y2) 323 radialGradient (gradientUnits, cx, cy, r) 324 stop (offset) 326 Properties: (most allow inherit as a value) 328 stroke 329 stroke-width 330 stroke-linecap (butt, round, square) 331 stroke-linejoin (miter, round, bevel) 332 stroke-mitrelimit 333 stroke-dasharray 334 stroke-dashoffset 335 stroke-opacity 336 vector-effect (non-scaling-stroke, none) 337 viewport-fill (none, currentColor) 338 viewport-fill-opacity 340 display (inline, block, list-item, run-in, compact, 341 marker, table, inline-table, table-row-group, 342 table-header-group, table-footer-group, 343 table-row, table-column-group, 344 table-column, table-cell, table-caption, 345 none) 346 visibility (visible, hidden, collapse) 347 color-rendering (auto, optimizeSpeed, optimizeQuality) 348 shape-rendering (auto, optimizeSpeed, crispEdges, 349 geometricPrecision) 350 text-rendering (auto, optimizeSpeed, optimizeLegibility, 351 geometricPrecision) 352 buffered-rendering (auto, dynamic, static) 354 (black, grey, darkgrey, dimgrey, lightgrey, 355 gray, darkgray, dimgray, lightgray, white) 356 opacity 357 solid-opacity 358 solid-color (currentColor, ) 359 color (currentColor, ) 361 stop-color (currentColor, ) 362 stop-opacity 364 line-increment (auto) 365 text-align (start,end, center) 366 display-align (auto, before, center, after) 368 font-size 369 font-family (serif, sans-serif, monospace) 370 font-weight (normal, bold, bolder, lighter) 371 font-style (normal, italic, oblique) 372 font-variant (normal, small-caps) 373 direction (ltr, rtl) 374 unicode-bidi (normal, embed, bidi-override) 375 text-anchor (start, middle, end) 376 fill (none, black or grey) 377 fill-rule (nonzero, evenodd) 378 fill-opacity 380 9. References 382 9.1. Normative References 384 [RFC6949] Flanagan, H. and N. Brownlee, "RFC Series Format 385 Requirements and Future Development", RFC 6949, May 2013. 387 [W3C.REC-SVGTiny12-20081222] 388 Grasso, A., Ferraiolo, J., Neumann, A., Jackson, D., 389 Berjon, R., Schepers, D., Lilley, C., McCormack, C., 390 Hardy, V., Emmons, A., Hayman, S., Dahlstroem, E., 391 Shellshear, A., Ramani, N., Northway, C., Andersson, O., 392 and A. Quint, "Scalable Vector Graphics (SVG) Tiny 1.2 393 Specification", World Wide Web Consortium Recommendation 394 REC-SVGTiny12-20081222, December 2008, 395 . 397 [W3C.REC-CSS2-20110607] 398 Celik, T., Hickson, I., Bos, B., and H. Lie, "Cascading 399 Style Sheets Level 2 Revision 1 (CSS 2.1) Specification", 400 World Wide Web Consortium Recommendation REC- 401 CSS2-20110607, June 2011, 402 . 404 9.2. Informative References 406 [W3C.REC-SVG11-20110816] 407 Dahlstroem, E., Dengler, P., Grasso, A., Lilley, C., 408 McCormack, C., Schepers, D., Watt, J., Ferraiolo, J., 409 Fujisawa, J., and D. Jackson, "Scalable Vector Graphics 410 (SVG) 1.1 (Second Edition)", World Wide Web Consortium 411 Recommendation REC-SVG11-20110816, August 2011, 412 . 414 Authors' Addresses 416 Nevil Brownlee 417 The University of Auckland 419 EMail: n.brownlee@auckland.ac.nz 421 Internet Architecture Board 423 EMail: iab@iab.org