<commit_before><!doctype html>
<html lang="en">

	<head>
		<meta charset="utf-8">

		<title>PHP-FIG: how the PHP world got off their islands</title>

		<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
		<meta name="author" content="<NAME>">

		<meta name="apple-mobile-web-app-capable" content="yes" />
		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">

		<link rel="stylesheet" href="css/reveal.css">
		<link rel="stylesheet" href="css/theme/black.css" id="theme">

		<!-- Code syntax highlighting -->
		<link rel="stylesheet" href="lib/css/zenburn.css">

		<!-- Printing and PDF exports -->
		<script>
			var link = document.createElement( 'link' );
			link.rel = 'stylesheet';
			link.type = 'text/css';
			link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
			document.getElementsByTagName( 'head' )[0].appendChild( link );
		</script>

		<!--[if lt IE 9]>
		<script src="lib/js/html5shiv.js"></script>
		<![endif]-->
        <style>
            .reveal {
                font-size: 30px;
            }
            p.attribution {
                bottom: 3%;
                display: none;
                font-size: 0.4em;
                left: 3%;
                padding: 1em;
                position: absolute;
                z-index: 999;
            }
            .attribution-active p.attribution {
                display: block;
            }
            .contrast {
                background-color: rgba(0,0,0,0.7);
            }
        </style>
	</head>

	<body>

		<div class="reveal">
            <p class="attribution contrast"></p>
			<!-- Any section element inside of this container is displayed as a slide -->
			<div class="slides">
                <section>
                    <h1>PHP-FIG: how the PHP world got off their islands</h1>
                </section>
                <section>
                    <section class="contrast" data-background="./images/bart.jpg" data-state="attribution-active bart">
                        <h1>My name is Bart</h1>
                        <p>I am <a href="http://drupal.org/u/xano">Xano</a>, <a href="http://twitter.com/bartfeenstra">@BartFeenstra</a>, and <a href="http://mynameisbart.com">http://mynameisbart.com</a>.</p>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/bridge-2.jpg" data-state="attribution-active bridge-2">
                        <style>.bridge-2 .attribution:after { content: "© <NAME> @ Flickr (CC BY 2.0)"; }</style>
                        <h1>We all publish software</h1>
                        <p>Lots of it</p>
                    </section>
                    <section class="contrast" data-background="./images/problems.jpg" data-state="attribution-active problems">
                        <style>.problems .attribution:after { content: "© donnagrayson @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>Difficulties are to be overcome</h1>
                    </section>
                    <section class="contrast" data-background="./images/dry-ice.jpg" data-state="attribution-active dry-ice">
                        <style>.dry-ice .attribution:after { content: "© niclas @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>DRY</h1>
                        <p>Don't repeat yourself</p>
                    </section>
                    <section class="contrast" data-background="./images/recycling.jpg" data-state="attribution-active recycling">
                        <style>.recycling .attribution:after { content: "© pagedooley @ Flickr (CC BY 2.0)"; }</style>
                        <h1>✓ reuse</h1>
                    </section>
                    <section data-background="./images/clone-troopers.jpg" data-state="attribution-active clone-troopers">
                        <style>.clone-troopers .attribution:after { content: "© capedcrusader @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1 class="contrast">Duplication</h1>
                    </section>
                    <section class="contrast" data-background="./images/plugs.jpg" data-state="attribution-active plugs">
                        <style>.plugs .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>Interoperability</h1>
                        <p><em>"The ability of a system to work with or use the parts or equipment of another system."</em></p>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/attendees.jpg" data-state="attribution-active attendees">
                        <style>.attendees .attribution:after { content: "© <NAME> @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>So what does Drupal do for interoperability?</h1>
                    </section>
                    <section class="contrast" data-background="./images/glasses.jpg" data-state="attribution-active glasses">
                        <style>.glasses .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Coding standards</h1>
                        <p>So one human can <strong>read</strong> another's code.</p>
                    </section>
                    <section class="contrast" data-background="./images/tools.jpg" data-state="attribution-active tools">
                        <style>.tools .attribution:after { content: "© <NAME> @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>APIs</h1>
                        <p>So one human can <strong>use</strong> another's code.</p>
                    </section>
                    <section class="contrast" data-background="./images/recycling-2.jpg" data-state="attribution-active recycling-2">
                        <style>.recycling-2 .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Abstract, reusable modules</h1>
                        <p>Don't fork</p>
                    </section>
                    <section class="contrast" data-background="./images/trees.jpg" data-state="attribution-active trees">
                        <style>.trees .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Module conventions</h1>
                        <ul>
                            <li>Module discovery.</li>
                            <li>Class auto-loading.</li>
                            <li>Asset handling.</li>
                            <li>Web server hardening.</li>
                        </ul>
                    </section>
                    <section class="contrast" data-background="./images/lego.jpg" data-state="attribution-active lego">
                        <style>.lego .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Much of our code is <strong>not</strong> specific to Drupal.</h1>
                        <p><code>\Drupal\Component</code> in Drupal 8 core</p>
                    </section>
                    <section class="contrast" data-background="./images/level-2.jpg" data-state="attribution-active level-2">
                        <style>.level-2 .attribution:after { content: "© <NAME> @ Flickr (CC BY 2.0)"; }</style>
                        <h1>But we can do better!</h1>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/bridge.jpg" data-state="attribution-active bridge">
                        <style>.bridge .attribution:after { content: "© andryn2006 @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>Getting us off the island: FIG</h1>
                        <p>Framework Interoperability Group</p>
                    </section>
                    <section class="contrast" data-background="./images/clockwork.jpg" data-state="attribution-active clockwork">
                        <style>.clockwork .attribution:after { content: "© guysie @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>The standards are open source</h1>
                        <p>Code is published under the MIT license. Non-code content is published under a Creative Commons license.</p>
                    </section>
                    <section class="contrast" data-background="./images/phone.jpg" data-state="attribution-active phone">
                        <style>.phone .attribution:after { content: "© wim hoppenbrouwers @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>The community is open source</h1>
                        <p>Anyone can help. Join <code>#phpfig</code> on <code>irc.freenode.net</code>, or <code>https://groups.google.com/forum/?fromgroups#!forum/php-fig</code>.</p>
                    </section>
                    <section class="contrast" data-background="./images/crell.jpg" data-state="attribution-active crell">
                        <style>.crell .attribution:after { content: "© pdjohnson @ Flickr (CC BY 2.0)"; }</style>
                        <h1>Voting members are PHP projects.</h1>
                        <ul>
                            <li>Members vote on whether proposals should be accepted as standards recommendations.</li>
                            <li>Drupal is a voting member. Its representative is <a href="https://www.drupal.org/u/crell">Larry 'Crell' Garfield</a>.</li>
                            <li>New members are approved by existing members.</li>
                        </ul>
                        <p></p>
                    </section>
                    <section class="contrast" data-background="./images/owl.jpg" data-state="attribution-active owl">
                        <style>.owl .attribution:after { content: "© glassholic @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Members are not required to implement any standards</h1>
                        <ul>
                            <li>Projects can disagree with standards.</li>
                            <li>Implementing new PSRs can break backwards compatibility (BC), which delays implementations.</li>
                        </ul>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/definition.jpg" data-state="attribution-active definition">
                        <style>.definition .attribution:after { content: "© jwyg @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>PSR</h1>
                        <p>PHP Standard Recommendation</p>
                        <ul>
                            <li class="fragment">PSR-x</li>
                            <li class="fragment">All code can be included through Composer</li>
                            <li class="fragment">All code and documentation is hosted on <a href="https://github.com/php-fig/fig-standards">https://github.com/php-fig/fig-standards</a></li>
                        </ul>
                    </section>
                    <section class="contrast" data-background="./images/calligraphy.jpg" data-state="attribution-active calligraphy">
                        <style>.calligraphy .attribution:after { content: "© evdg @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>PSR-2 (PSR-1)</h1>
                        <p>Coding standards</p>
                    </section>
                    <section class="contrast" data-background="./images/logging.jpg" data-state="attribution-active logging">
                        <style>.logging .attribution:after { content: "© paukrus @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-3</h1>
                        <p>Logging</p>
                    </section>
                    <section class="contrast" data-background="./images/loading-bays.jpg" data-state="attribution-active loading-bays">
                        <style>.loading-bays .attribution:after { content: "© myoplayer @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>PSR-4 (PSR-0)</h1>
                        <p>Autoloading</p>
                    </section>
                    <section class="contrast" data-background="./images/mailboxes.jpg" data-state="attribution-active mailboxes">
                        <style>.mailboxes .attribution:after { content: "© michellzappa @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>PSR-7</h1>
                        <p>HTTP messages</p>
                    </section>
                    <section class="contrast" data-background="./images/beertap.jpg" data-state="attribution-active beertap">
                        <style>.beertap .attribution:after { content: "© indigoskies @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>Drafts</h1>
                    </section>
                    <section class="contrast" data-background="./images/pen-paper.jpg" data-state="attribution-active pen-paper">
                        <style>.pen-paper .attribution:after { content: "© epicantus @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-5</h1>
                        <p>Documentation</p>
                    </section>
                    <section class="contrast" data-background="./images/treasure-chest.jpg" data-state="attribution-active treasure-chest">
                        <style>.treasure-chest .attribution:after { content: "© nox_noctis_silentium @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>PSR-6</h1>
                        <p>Caching</p>
                    </section>
                    <section class="contrast" data-background="./images/hugs.jpg" data-state="attribution-active hugs">
                        <style>.hugs .attribution:after { content: "© thomashawk @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>PSR-8</h1>
                        <p><code>HuggableInterface</code></p>
                    </section>
                    <section class="contrast" data-background="./images/safe.jpg" data-state="attribution-active security">
                        <style>.security .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>PSR-9 / PSR-10</h1>
                        <p>Security</p>
                    </section>
                    <section class="contrast" data-background="./images/containers.jpg" data-state="attribution-active dependency-injection">
                        <style>.dependency-injection .attribution:after { content: "© <NAME> @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-11</h1>
                        <p>Dependency injection</p>
                    </section>
                    <section class="contrast" data-background="./images/calligraphy.jpg" data-state="attribution-active calligraphy">
                        <style>.calligraphy .attribution:after { content: "© evdg @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>PSR-12 (PSR-2)</h1>
                        <p>Coding standards</p>
                    </section>
                    <section class="contrast" data-background="./images/chain-links.jpg" data-state="attribution-active chain-links">
                        <style>.chain-links .attribution:after { content: "© <NAME> @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-13</h1>
                        <p>Hypermedia links</p>
                    </section>
                    <section class="contrast" data-background="./images/dispatcher.jpg" data-state="attribution-active dispatcher">
                        <style>.dispatcher .attribution:after { content: "© Orange County Archives @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-14</h1>
                        <p>Event manager</p>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/isham-jones.jpg" data-state="attribution-active isham-jones">
                        <style>.isham-jones .attribution:after { content: "© infrogmation @ Flickr (CC BY 2.0)"; }</style>
                        <h1>Composer</h1>
                        <p>Sharing has never been easier</p>
                    </section>
                </section>
                <section>
                    <h1>Conclusion</h1>
                    <h2>Sharing and reusing PHP code has never been easier.</h2>
                    <p class="fragment">Find out more about FIG at <a href="http://www.php-fig.org/">http://www.php-fig.org/</a>.</p>
                    <p class="fragment">I am <a href="http://drupal.org/u/xano">Xano</a>, <a href="http://twitter.com/bartfeenstra">@BartFeenstra</a>, and <a href="http://mynameisbart.com">http://mynameisbart.com</a>.</p>
                    <h2 class="fragment">Do you have any questions?</h2>
                </section>
			</div>

		</div>

		<script src="lib/js/head.min.js"></script>
		<script src="js/reveal.js"></script>

		<script>

			// Full list of configuration options available at:
			// https://github.com/hakimel/reveal.js#configuration
			Reveal.initialize({
				controls: false,
				progress: false,
				history: true,
				center: true,

				transition: 'slide', // none/fade/slide/convex/concave/zoom

				// Optional reveal.js plugins
				dependencies: [
					{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
					{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
					{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
					{ src: 'plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
					{ src: 'plugin/zoom-js/zoom.js', async: true },
					{ src: 'plugin/notes/notes.js', async: true }
				]
			});

		</script>

	</body>
</html>
<commit_msg>Split up some sentences into lists.<commit_after><!doctype html>
<html lang="en">

	<head>
		<meta charset="utf-8">

		<title>PHP-FIG: how the PHP world got off their islands</title>

		<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
		<meta name="author" content="<NAME>">

		<meta name="apple-mobile-web-app-capable" content="yes" />
		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">

		<link rel="stylesheet" href="css/reveal.css">
		<link rel="stylesheet" href="css/theme/black.css" id="theme">

		<!-- Code syntax highlighting -->
		<link rel="stylesheet" href="lib/css/zenburn.css">

		<!-- Printing and PDF exports -->
		<script>
			var link = document.createElement( 'link' );
			link.rel = 'stylesheet';
			link.type = 'text/css';
			link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
			document.getElementsByTagName( 'head' )[0].appendChild( link );
		</script>

		<!--[if lt IE 9]>
		<script src="lib/js/html5shiv.js"></script>
		<![endif]-->
        <style>
            .reveal {
                font-size: 30px;
            }
            p.attribution {
                bottom: 3%;
                display: none;
                font-size: 0.4em;
                left: 3%;
                padding: 1em;
                position: absolute;
                z-index: 999;
            }
            .attribution-active p.attribution {
                display: block;
            }
            .contrast {
                background-color: rgba(0,0,0,0.7);
            }
        </style>
	</head>

	<body>

		<div class="reveal">
            <p class="attribution contrast"></p>
			<!-- Any section element inside of this container is displayed as a slide -->
			<div class="slides">
                <section>
                    <h1>PHP-FIG: how the PHP world got off their islands</h1>
                </section>
                <section>
                    <section class="contrast" data-background="./images/bart.jpg" data-state="attribution-active bart">
                        <h1>My name is Bart</h1>
                        <p>I am <a href="http://drupal.org/u/xano">Xano</a>, <a href="http://twitter.com/bartfeenstra">@BartFeenstra</a>, and <a href="http://mynameisbart.com">http://mynameisbart.com</a>.</p>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/bridge-2.jpg" data-state="attribution-active bridge-2">
                        <style>.bridge-2 .attribution:after { content: "© <NAME> @ Flickr (CC BY 2.0)"; }</style>
                        <h1>We all publish software</h1>
                        <p>Lots of it</p>
                    </section>
                    <section class="contrast" data-background="./images/problems.jpg" data-state="attribution-active problems">
                        <style>.problems .attribution:after { content: "© donnagrayson @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>Difficulties are to be overcome</h1>
                    </section>
                    <section class="contrast" data-background="./images/dry-ice.jpg" data-state="attribution-active dry-ice">
                        <style>.dry-ice .attribution:after { content: "© niclas @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>DRY</h1>
                        <p>Don't repeat yourself</p>
                    </section>
                    <section class="contrast" data-background="./images/recycling.jpg" data-state="attribution-active recycling">
                        <style>.recycling .attribution:after { content: "© pagedooley @ Flickr (CC BY 2.0)"; }</style>
                        <h1>✓ reuse</h1>
                    </section>
                    <section data-background="./images/clone-troopers.jpg" data-state="attribution-active clone-troopers">
                        <style>.clone-troopers .attribution:after { content: "© capedcrusader @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1 class="contrast">Duplication</h1>
                    </section>
                    <section class="contrast" data-background="./images/plugs.jpg" data-state="attribution-active plugs">
                        <style>.plugs .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>Interoperability</h1>
                        <p><em>"The ability of a system to work with or use the parts or equipment of another system."</em></p>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/attendees.jpg" data-state="attribution-active attendees">
                        <style>.attendees .attribution:after { content: "© <NAME> @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>So what does Drupal do for interoperability?</h1>
                    </section>
                    <section class="contrast" data-background="./images/glasses.jpg" data-state="attribution-active glasses">
                        <style>.glasses .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Coding standards</h1>
                        <p>So one human can <strong>read</strong> another's code.</p>
                    </section>
                    <section class="contrast" data-background="./images/tools.jpg" data-state="attribution-active tools">
                        <style>.tools .attribution:after { content: "© <NAME> @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>APIs</h1>
                        <p>So one human can <strong>use</strong> another's code.</p>
                    </section>
                    <section class="contrast" data-background="./images/recycling-2.jpg" data-state="attribution-active recycling-2">
                        <style>.recycling-2 .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Abstract, reusable modules</h1>
                        <p>Don't fork</p>
                    </section>
                    <section class="contrast" data-background="./images/trees.jpg" data-state="attribution-active trees">
                        <style>.trees .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Module conventions</h1>
                        <ul>
                            <li>Module discovery.</li>
                            <li>Class auto-loading.</li>
                            <li>Asset handling.</li>
                            <li>Web server hardening.</li>
                        </ul>
                    </section>
                    <section class="contrast" data-background="./images/lego.jpg" data-state="attribution-active lego">
                        <style>.lego .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Much of our code is <strong>not</strong> specific to Drupal.</h1>
                        <p><code>\Drupal\Component</code> in Drupal 8 core</p>
                    </section>
                    <section class="contrast" data-background="./images/level-2.jpg" data-state="attribution-active level-2">
                        <style>.level-2 .attribution:after { content: "© Alan Levine @ Flickr (CC BY 2.0)"; }</style>
                        <h1>But we can do better!</h1>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/bridge.jpg" data-state="attribution-active bridge">
                        <style>.bridge .attribution:after { content: "© andryn2006 @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>Getting us off the island: FIG</h1>
                        <p>Framework Interoperability Group</p>
                    </section>
                    <section class="contrast" data-background="./images/clockwork.jpg" data-state="attribution-active clockwork">
                        <style>.clockwork .attribution:after { content: "© guysie @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>The standards are open source</h1>
                        <ul>
                            <li>MIT (code)</li>
                            <li>Creative Commons (non-code)</li>
                        </ul>
                    </section>
                    <section class="contrast" data-background="./images/phone.jpg" data-state="attribution-active phone">
                        <style>.phone .attribution:after { content: "© wim hoppenbrouwers @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>The community is open source</h1>
                        <ul>
                            <li><code>#phpfig</code> on <code>irc.freenode.net</code>.</li>
                            <li><code>https://groups.google.com/forum/?fromgroups#!forum/php-fig</code>.</li>
                        </ul>
                    </section>
                    <section class="contrast" data-background="./images/crell.jpg" data-state="attribution-active crell">
                        <style>.crell .attribution:after { content: "© pdjohnson @ Flickr (CC BY 2.0)"; }</style>
                        <h1>Voting members are PHP projects.</h1>
                        <ul>
                            <li>Members vote on whether proposals should be accepted as standards recommendations.</li>
                            <li>Drupal is a voting member. Its representative is <a href="https://www.drupal.org/u/crell">Larry '<NAME></a>.</li>
                            <li>New members are approved by existing members.</li>
                        </ul>
                        <p></p>
                    </section>
                    <section class="contrast" data-background="./images/owl.jpg" data-state="attribution-active owl">
                        <style>.owl .attribution:after { content: "© glassholic @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>Members are not required to implement any standards</h1>
                        <ul>
                            <li>Projects can disagree with standards.</li>
                            <li>Implementing new PSRs can break backwards compatibility (BC), which delays implementations.</li>
                        </ul>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/definition.jpg" data-state="attribution-active definition">
                        <style>.definition .attribution:after { content: "© jwyg @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>PSR</h1>
                        <p>PHP Standard Recommendation</p>
                        <ul>
                            <li class="fragment">PSR-x</li>
                            <li class="fragment">All code can be included through Composer</li>
                            <li class="fragment">All code and documentation is hosted on <a href="https://github.com/php-fig/fig-standards">https://github.com/php-fig/fig-standards</a></li>
                        </ul>
                    </section>
                    <section class="contrast" data-background="./images/calligraphy.jpg" data-state="attribution-active calligraphy">
                        <style>.calligraphy .attribution:after { content: "© evdg @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>PSR-2 (PSR-1)</h1>
                        <p>Coding standards</p>
                    </section>
                    <section class="contrast" data-background="./images/logging.jpg" data-state="attribution-active logging">
                        <style>.logging .attribution:after { content: "© paukrus @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-3</h1>
                        <p>Logging</p>
                    </section>
                    <section class="contrast" data-background="./images/loading-bays.jpg" data-state="attribution-active loading-bays">
                        <style>.loading-bays .attribution:after { content: "© myoplayer @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>PSR-4 (PSR-0)</h1>
                        <p>Autoloading</p>
                    </section>
                    <section class="contrast" data-background="./images/mailboxes.jpg" data-state="attribution-active mailboxes">
                        <style>.mailboxes .attribution:after { content: "© michellzappa @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>PSR-7</h1>
                        <p>HTTP messages</p>
                    </section>
                    <section class="contrast" data-background="./images/beertap.jpg" data-state="attribution-active beertap">
                        <style>.beertap .attribution:after { content: "© indigoskies @ Flickr (CC BY-NC-ND 2.0)"; }</style>
                        <h1>Drafts</h1>
                    </section>
                    <section class="contrast" data-background="./images/pen-paper.jpg" data-state="attribution-active pen-paper">
                        <style>.pen-paper .attribution:after { content: "© epicantus @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-5</h1>
                        <p>Documentation</p>
                    </section>
                    <section class="contrast" data-background="./images/treasure-chest.jpg" data-state="attribution-active treasure-chest">
                        <style>.treasure-chest .attribution:after { content: "© nox_noctis_silentium @ Flickr (CC BY-SA 2.0)"; }</style>
                        <h1>PSR-6</h1>
                        <p>Caching</p>
                    </section>
                    <section class="contrast" data-background="./images/hugs.jpg" data-state="attribution-active hugs">
                        <style>.hugs .attribution:after { content: "© thomashawk @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>PSR-8</h1>
                        <p><code>HuggableInterface</code></p>
                    </section>
                    <section class="contrast" data-background="./images/safe.jpg" data-state="attribution-active security">
                        <style>.security .attribution:after { content: "© <NAME> @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>PSR-9 / PSR-10</h1>
                        <p>Security</p>
                    </section>
                    <section class="contrast" data-background="./images/containers.jpg" data-state="attribution-active dependency-injection">
                        <style>.dependency-injection .attribution:after { content: "© <NAME> @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-11</h1>
                        <p>Dependency injection</p>
                    </section>
                    <section class="contrast" data-background="./images/calligraphy.jpg" data-state="attribution-active calligraphy">
                        <style>.calligraphy .attribution:after { content: "© evdg @ Flickr (CC BY-NC 2.0)"; }</style>
                        <h1>PSR-12 (PSR-2)</h1>
                        <p>Coding standards</p>
                    </section>
                    <section class="contrast" data-background="./images/chain-links.jpg" data-state="attribution-active chain-links">
                        <style>.chain-links .attribution:after { content: "© <NAME> @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-13</h1>
                        <p>Hypermedia links</p>
                    </section>
                    <section class="contrast" data-background="./images/dispatcher.jpg" data-state="attribution-active dispatcher">
                        <style>.dispatcher .attribution:after { content: "© Orange County Archives @ Flickr (CC BY 2.0)"; }</style>
                        <h1>PSR-14</h1>
                        <p>Event manager</p>
                    </section>
                </section>
                <section>
                    <section class="contrast" data-background="./images/isham-jones.jpg" data-state="attribution-active isham-jones">
                        <style>.isham-jones .attribution:after { content: "© infrogmation @ Flickr (CC BY 2.0)"; }</style>
                        <h1>Composer</h1>
                        <p>Sharing has never been easier</p>
                    </section>
                </section>
                <section>
                    <h1>Conclusion</h1>
                    <h2>Sharing and reusing PHP code has never been easier.</h2>
                    <p class="fragment">Find out more about FIG at <a href="http://www.php-fig.org/">http://www.php-fig.org/</a>.</p>
                    <p class="fragment">I am <a href="http://drupal.org/u/xano">Xano</a>, <a href="http://twitter.com/bartfeenstra">@BartFeenstra</a>, and <a href="http://mynameisbart.com">http://mynameisbart.com</a>.</p>
                    <h2 class="fragment">Do you have any questions?</h2>
                </section>
			</div>

		</div>

		<script src="lib/js/head.min.js"></script>
		<script src="js/reveal.js"></script>

		<script>

			// Full list of configuration options available at:
			// https://github.com/hakimel/reveal.js#configuration
			Reveal.initialize({
				controls: false,
				progress: false,
				history: true,
				center: true,

				transition: 'slide', // none/fade/slide/convex/concave/zoom

				// Optional reveal.js plugins
				dependencies: [
					{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
					{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
					{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
					{ src: 'plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
					{ src: 'plugin/zoom-js/zoom.js', async: true },
					{ src: 'plugin/notes/notes.js', async: true }
				]
			});

		</script>

	</body>
</html>

{'fraction_non_alphanumeric': 0.14652024559790106, 'fraction_numerical': 0.010819290795488356, 'mean_word_length': 1.611201356027968, 'pattern_counts': {'":': 0, '<': 819, '<?xml version=': 0, '>': 819, 'https://': 10, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4836648', 'n_tokens_mistral': 11222, 'n_tokens_neox': 10040, 'n_words': 2177}