Thank you, everyone, for coming. This talk is on the PHP FIG, or Framework Interoperability Group. My name is Larry Garfield. You may know me online as Krell. If you want to make fun of me on Twitter during the session, that's where you do so, I highly encourage it. I'm the director of Runtime's Integrations, Engines, and Services for Platform SH. Yes, the acronym is deliberate. We are a Platform as a Service development tool slash hosting company. And we have some really cool stickers and patches here, if you want. There's also the web services lead for Drupal 8, which means you can blame me for about a third of the things that changed. I'm the Drupal representative to the PHP FIG, so I have been part of the story that I'm about to tell. And yes, I do implement Huggable, more on that later. So what is PHP FIG? Well, it's a really cool painting by this artist, and integral stuff. Rebecca Simonson, her husband, is the lead on the Sculpin project, and now works for Censio Labs in the US. So really good art on a lot of different open source projects. I actually have this one hanging on my wall. That's why I like to start with that one. So what is FIG, Framework Interoperability Group? What is this thing? When I first proposed this talk, it was going to be a bit different because we were hoping to finish some changes to the answer to this question before I started. That didn't happen because everything's behind in technology. So what is FIG is kind of an open question at this moment. What do I mean by that? Well, let's start with what in hindsight I like to call Framework Interoperability Group 1.0. Back in the bad old days, PHP had no common conventions or standards. Every project did its own thing, and none of them could talk to each other. And the closest thing there was to the ability to share code was Pair, who actually managed to get Pair working. Wow, I expected like three people. How many people enjoyed the process of working with Pair? There we go, no hands up this time. That's more like it. For several years, there were a lot of people working in a lot of different areas and a lot of different projects trying to fix that problem and trying to get PHP projects working together more and collaborating more and sharing more code. And one of the watershed events for that was at the PHP Tech Conference in Chicago in May of 2009. I was not there at the time, but a number of project leads and other key people at a number of PHP projects were there. And PHP 5.3 was coming out in a month or so. And these developers looked at each other and said, you know, PHP 5.3 has this cool thing called namespaces. Maybe we should actually use them the same way in all of our projects. Would that be useful? And they said, well, yes. So they got together at the hotel in a smoke filled room and hammered out a way to collaborate and share a usage pattern for namespaces. Disclaimer, I was not there, so I cannot guarantee there is smoke. My understanding is it was actually just after lunch, not the middle of the night, and it was light outside. But dark smoke filled room makes a much better image. And they came up with something that they called PSR0. PSR standing for PHP standard recommendation, 0 because geeks counted 0. And it was a fairly short common standard for auto loading and namespaces. Heavily inspired by the way Java worked and by the way Pear worked at the time. You ever take the fact that Pear didn't have namespaces? And it was fairly basic. Didn't do all that much, but it didn't need to be. But it provided some common way to handle auto loading of classes between different projects that you could count on. Projects using it all auto loading their code in the same way, which means you could use a single common auto loading pattern. And they came back. And since some of them had admin access on PHP.net, they set up a mailing list, PHP standards, at lists.php.net, and announced to the world that there is now a PHP standards group. And here is our auto loader that we shall all use for all the community to share and then take and use.  Because PHP was not used to working together or being told what to do. Everyone was used to doing their own thing, and who cares about anyone else? So yeah, this went over like a lead balloon. They were very quickly thrown off of lists.php.net. They were told very clearly get out. Initially, the plan was to have a closed mailing list, which was totally incompatible with the way PHP.net worked. So they moved to Google Groups and didn't quite make it a closed list. It was a semi-closed list initially. Throughout the course of 2009, they admitted a couple of new projects as members. Of course, whether it was a project or a person was kind of a fuzzy situation. This is when Drupal was added. I was invited in as the Drupal representative. And it basically did nothing for a year. I actually went back and checked the archives. There were four messages to the mailing list in the entirety of 2010. Good. Finally woke up in 2011 sometime and started talking, but not actually being useful because geek's online, I guess, or something. Finally in 2012, this is now three years into this mailing list-slash-groups existence. It started actually being useful. One of the first things it did was rename the group from PHP standards to the Framework Interoperability Group, or FIG. Why? Well, despite the name, it's not just about frameworks. In fact, the majority of projects involved in FIG today and even since 2012 are not frameworks. Many of them are standalone libraries. Many of them are applications like Drupal. Is Drupal a framework and application? I don't know, whatever. And because calling it the PHP Interoperability Group would have given a much less pleasant name, or acronym. One person's laughing anyway. And it kind of actually became useful at this point as an organization. Okay, so what's this group actually going to do? Well, the website at least says this. We are a group of established PHP projects whose goal is to talk about commonalities and find ways that we can work better together. Nice vague wishy-washy statement. What it does is debate and discuss and vote on PHP standard recommendations, which are basically like the RFCs you get from Internet Engineering Task Force, but for PHP, or more like PIPs in Python or JSRs in Java. Same basic idea. And the scope was pretty much anything that could be standardized that improves collaboration and interoperability between member projects. Okay, that's fair. There are a lot of problems with that. And this kind of changed in 2013. And at Fig.2, I would call kind of the United Nations of PHP with all of the positive and negative implications that analogy has. So in 2013, there were two big questions that came up that people were debating in the group. One was, so are we a group of projects or are we a group of people? Because the original setup, it wasn't even a charters, the original common convention was a little of each. It was cool people, but you were defined as cool by the fact that you were a project lead, which was a very poor definition of cool. The other was there was really no structure to how PSRs were worked on other than, well, eventually vote on something. It was, it had astute any form of organization. And so in 2013, we started getting semi-formal working groups. And these were two different votes that were called. First one, the idea that as of today, Fig is an organization of projects, not people. Projects are voted in by the voting representatives of various projects who may or may not be a project lead. I'm not the project lead of Drupal, but I am the Drupal representative to Fig. So I technically represent Dries. And then projects can change their voting rep at any time. They do that sometimes. Some projects, the voting rep kind of works on their own. Some, the voting rep is the project lead. Some, the project rep goes back to some committee on their project and talks about stuff before making a vote. They're currently about 38 projects as of this past weekend. And ultimately, project reps are answerable to their projects as if they're essentially ambassadors to a PHP UN. It is the effective analogy. So is this readable? Not at all, I apologize for that. But we have project representatives who represent a member project. And then any time you have a new PSR proposed, there are three key people involved in that. One is the editor, who can be anyone.  This is a way to say, okay, there's enough interest in standardizing something that it's worth our time to consider. And that's a vote of, you need to have two sponsors for that. And then a vote of the member projects to say, yes, we will, we're okay with working on this. And then there's also, we've just recently added elected secretaries to deal with the bureaucracy and paperwork involved in running a standards group. Which there is actually a fair bit of. Pretty much the only thing that is limited to those voting reps is voting. So the mailing list is these days open. Anyone in this room can partake of discussion. Anyone in this room can be an editor. Anyone in this room can work on a spec. The only thing that is restricted at all right now is actually voting to approve things. And that's limited to the voting reps. The process today, as of this FIG 2.0 model, you've got an idea. Someone has an idea for a specification. And they bring it up and discuss. They get two sponsors for it. And there's an entrance vote for the spec. If that passes, then this is just an idea. It doesn't have, it's not fully fleshed out. It's, hey, we should standardize X. We should have an interface spec for X or whatever. When it gets voted in as just a concept, the entrance vote, it goes into a draft state. It gets a number at this point. So just because something is PSR and a number doesn't mean it's approved yet. There's unlike IETF where they assigned the number at the last second. In FIG, the number of a standard is specified when we say we're gonna start thinking about it, basically. At this point, you work on it. The editor owns the spec. They're the one with final authority on what goes into it. But take interest from all comers. Get right on it, revise it, throw it out and start over, whatever you're gonna do. Until at some point, the editors and coordinators say, you know what, good enough. Hey, other members, please review. This is essentially a release candidate stage. Very few changes are allowed to the spec. This is all in public before this, but this is when a lot of people first start paying attention, frankly. And only minor changes are allowed. This is for spell checking, editing, and so forth. And the draft process can take any amount of time, anywhere from a few weeks to a few years. Review phase has to be at least two weeks, but can be longer than that. Again, it depends on what is needed for that spec. And then there's a vote. And if it is approved by the other members, then great. We now have a new spec for PHP, which you are under no obligation whatsoever to pay attention to. FIG has no binding authority on anything, including its own member projects. Everything is recommendations only. So that team again is the editor who owns the process sponsors. The coordinator who is originally supposed to be kind of the secretary and process person for that spec. But then we added the secretaries for FIG itself, so those seem kind of irrelevant. And again, anyone can contribute not just these three people. Lots of spec have a number of people working on them. So that's what we are today. This is FIG today, but there are a couple of problems. First, on paper, we say that FIG is a collection of projects, not people.  And it's hard to separate the person from the project they represent, both as a project rep and talking to other project reps. There's even one or two people who just kind of ignore the fact that we had this vote and still insist that we're about people, even though they're wrong. A lot of voting reps are busy. They're project leads. They are initiative leads or the equivalent in their project. They've got other things in their mind. They're not actively engaged in every PSR and sometimes they forget to vote. We've actually had a number of votes that didn't get to quorum because people are just busy, not around. Because we've conflated paying attention, supporting FIG's goal and being one of the cool kids. So projects will join and then do nothing after they've joined because, well, they joined to say that they were part of FIG and we would hope that the people involved were doing something and being engaged but they aren't always. It also means that very often we don't really have domain experts working on something. If you have a spec coming up on caching which is an actual spec that we have, then it really helps to have caching experts involved but a lot of the caching experts in the PHP space aren't involved in FIG and don't know about it. You don't know that the spec's happening. So now what do you do? How do you get the right people in the room just because your project lead doesn't actually mean you're the right person to be in the room? And also, who is FIG for? Is it just for member projects and ignore everyone else? There are people who feel that it should be that way. In practice, that's kind of impossible because when a large number of projects adopt something, everyone else gets pressure to do so. Who has seen any of the debates around the PSR2 coding standard? Couple of people, yeah. Drupal doesn't follow the PSR2 coding standard. We'll talk about that in a bit. But there is regular pressure for us to do so because it's the default in PHP Storm because all of the third-party code we pull in our vendor libraries using that style which makes us odd man out. We're not required to adopt it but any project is going to have pressure to follow popular PSRs simply because that's the way networks work. That's the way human networks work. And based on actual surveys we've done, most of the PHP community sees us as a standards body at this point for all of PHP, not just for member projects, for exactly that reason because there's a vacuum there and FIG fills it whether it wants to or not. So, last year, end of last year, several discussions happened around, okay, how do we fix some of these problems? And this turned into a proposal by me primarily called FIG3 which everything I'm about to say is caveated with, this is not finalized, this is actually in voting right now for whether or not to adopt this. So this is a possible future in a week or two. Actually, end of this week. And as I said, I am the primary author of this proposal so what I'm about to say is incredibly biased, bear that in mind. The way to try and address these problems that we've identified is basically embrace the fact that we're a standards body and model ourselves on other standards bodies that have figured out how this works, in particular the IETF. So we still have member projects, but since most of the member project representatives don't actually do anything on a regular basis, we add what we're calling a core committee which is an elected group of people, elected by project representatives and everyone else working on PSRs, everyone involved in FIG who are supposed to, are then basically required in their job description to be paying attention and to look at the big picture of FIG, big picture of several specifications. Meanwhile, we have a more formal working group defined for PSR, at least five people, editor, a core committee member who's a sponsor and at least three other people who again, all but the sponsor can be anyone involved in PHP. You don't have to be blessed in order to do so, anyone can be involved in that. And they're charged with actually developing a working group, or developing a specification. Why? Well, we can get actual domain experts involved in that. There's a minimum of five people involved so you kind of have to dig up and find the people involved in that. If you're working on a spec for something that's going to affect these four projects, you want those four projects actively involved. But these other projects that are not really going to be impacted that much, have a reduced role, because they should. There's been talk of having FIG work on specifications for promises in PHP. So who knows promises from JavaScript? Promises in PHP to do asynchronous PHP. Yes, it's a thing, it's really kind of cool. As the Drupal representative, I have nothing to offer on this front. The people who write async libraries in PHP should be the ones striving that, not me. That's what we get here by having a more focused working group. So the working group again is an editor who acts as a gatekeeper, can be anyone, a sponsor who acts as a bridge to the core committee and provides oversight and guidance, and other people. That core committee, as you said, are elected and they're not project-based. They do not have to be project representative. Anyone is eligible to be a core committee member if they're voted in. They're voted in for a two-year term, we stagger it, so they do need to get re-approved by people periodically, so you don't get the elected for life and then just sit there and do nothing except have a line on your resume problem. And they focus on the big picture of FIG. They focus on are all of these specifications compatible with each other? Are we following trends in the language? Did we actually bother to reach out to this project that would be impacted by the spec, so they had a fair say? That's the kind of thing the core committee is responsible for, that kind of big picture oversight of the work that happens. Because we now have a more formal working group, we can add an extra check for the process as well. So in FIG three, we have germination of an idea, put together a working group. The core committee now is responsible for the entrance vote, which means it's the people who have stepped forward and said, yes, I will always be paying attention and looking at that big picture. And then assuming it passes, a working group works in the PSR, can be more than five people if appropriate. And then rather than just the editor saying, I think it's done, the whole working group has to agree it's done. There's a working group vote of two thirds, so there needs to be broad consensus to adopt a specification. And once they've decided, okay, yes, this is good, we're done with it, then it can go into review. And at this point, under the current model, you can vote on this within two weeks. In FIG three, we're saying, you have to actually use it first. Just like IETF, there needs to be at least two working implementations. If a specification isn't like an interface or something, then that's kind of fuzzy what an implementation is, but you have to show that this thing can actually work in practice before you can have a final vote on it. It has to actually be tested in production. And then the core committee provides the final approval. Again, a two thirds vote so that you have broad consensus and broad support for it. This process is basically a slimmed down version of how the IETF works, which provides, again, forces that broad consensus, gets the people who are impacted in the room, and the people who are directly impacted have more say than those who aren't, which is how it should be. And we have people who are actively, steering the process as a whole. That's the proposal. That's the proposal that FIG is currently considering and voting on. Is it going to pass though? Well, the vote ends Friday, so we'll find out. As of last night when I was putting together these slides, it was currently 12 votes yes, five no with two abstains. Checked earlier today, we've had a couple more votes, so I think it's now 14 to seven. Maybe it's 15 to seven, something like that. So probably. I can't guarantee it, but probably this thing will pass. And this is where I was hoping to have an answer to this question before this talk, but such as life. So that's FIG, that's what it does. Totally forgot to mention here. FIG3 also has a proper mission statement, which we haven't had before, who's had gone through organizations that don't have mission statements. Sucks, doesn't it? Yeah, FIG3 actually has a mission statement which talks about serving the whole PHP community, not just member projects. So what have we done? This is a lot of politics and process and mumbo jumbo. How does this actually benefit us as developers? Well, there are a number of specifications that are published now in widespread use throughout the PHP world. We've roughly split them into hard specs and soft specs. Hard specs are more developer oriented, soft specs are kind of process oriented. The hard specs, PSR0 is the original one, that's been replaced by PSR4, which is an updated auto-loading standard. We have a logging specification, we have one for caching. Who is just in David Strauss' caching session? This is the PSR6 he was talking about. And perhaps the most important PSR7 for HTTP messages. Then we also have two soft specs on coding standards. So I'm gonna go through some of these in a very high level cursory, limited detail. For more information, see the actual specifications or talks directly on these topics which we've had a few people come before. So auto-loading, when was the last time you thought about auto-loading while working on PHP code? It's been a while, right? Yeah, that's because it's a solved problem. You use PSR0 or PSR4 and Composer and you don't think about auto-loading anymore. This is a major improvement over PHP 5.1 or 5.2. Who remembers dealing with auto-loading back then? Who remembers clearing the registry in Drupal 7? I apologize for that. I wrote it, I'm sorry, this is way better. This is why we use this now. PSR0, very, very simple, it's a job inspired. Every backslash, every namespace separator should map to a new directory and the class name maps one to one to a file name. As do underscores and that was for backward compatibility with the old pair convention which was the same thing but with underscores. PSR4 updates that a little bit. It gets rid of that weird handling for underscores which makes things simpler and you can shorten the tree. Who's written modules for Drupal 8? The way files are organized in your SRC directory in a module, that's PSR4. That is the PSR4 auto-loader built into Composer which I'm happy to say was built by a Drupal developer and added to Composer just as PSR4 was approved. Andrea, is he in here somewhere? Okay, see Andrea's heading's around here somewhere. Give him a handshake or a hug, I'm not sure which he prefers, but he actually wrote the PSR4 support. And that prefix for like in this case the Krell HTML model is externally configured. Basically you put it in your Composer JSON file. Like this, you name of your library, auto-load PSR4, things that begin with Krell HTML model are in that directory relative to where this file is. And you no longer have to think about auto-loading ever again. In practice I will say always use PSR4, PSR0 is obsolete, it still works, Composer still supports it, but really just use PSR4. Even if you don't have the prefix to shorten things, it makes you more compatible or more conventional by not having a special underscore handling. And shameless plug for this library of mine based on Drupal, nice small example. Logging, who's done logging in Drupal 8? It should be all of you because you all said you were writing Drupal 8 modules. PSR3 is a logging interface standard. It is what Drupal uses in Drupal 8. It's all based on PSR3. This is the core of PSR3. It's a single interface for a thing that logs stuff. The most important method is log, which is just a log level message and a context array and the rest of these are just utilities that wrap, log by hard coding a level. The target here is not Drupal. It's libraries that might want to plug into Drupal. It's libraries that want to plug into symphony because then Drupal can have its own custom logging system that any random library we pull in can be compatible with by expecting this interface and then you can throw Drupal's logger into it and suddenly we can log that third-party library. You can throw, if you're in symphony, you can throw monologue at it and suddenly symphony can log that third-party library. Wrong slide. The message also can be either a string or an object that implements two-string. It's also log levels defined. These are based on IRFC 5424. Again, we're just taking known internet standards and making PHP interfaces out of them. Very, very simple. The one odd thing is that context array because context is the second worst variable name in the world after data. The idea here is additional extra stuff, including placeholders. Why do we need placeholders as part of logging? Drupal developers should know the answer to this one. Try logging something with a variable in it and that variable is user data and now your database is gone. Okay, maybe you're logging to syslog or to Redis instead of SQL. Oh, great. Then you just log a script name. Did you realize you could hack a system via its logger? Yeah. You don't know the output where that log string is going to be used in advance so you don't know how to escape it. This is a very common problem that Drupal should be very familiar with and so you provide a placeholder separately. You just use curly braces to indicate this is a variable that will get replaced. Here's a list of variables. This is basically Watchdog or the T function. In fact, it was a pair of Drupal developers who made sure that this functionality made it into PSR3 because well, we know we've run into this problem before. That's the value of collaboration. We found bugs that we can fix for everybody. You can also log exceptions. There's a magic value exception, which means the exception that caused the error. What you do with that? What the logger's gonna do with that? Hey, that's your problem. If you're writing a standalone library, which you all should be doing these days rather than card coding Drupal modules, any logging you do do via PSR3 via this interface because then you're suddenly compatible with Drupal logging, with symphony logging, with Zend logging, with Laravel logging. Any system can plug into it. Same basic idea for caching. Similar goal here is logging. Make it easy for a standalone library to be compatible with whatever cache system you're using.  I was actually the editor for this one, so again, bias. Contains two interfaces primarily, a cache item and a cache pool. Really works on a repository model here, basically inspired by Drupal because we've had caching problems for a long time and we ran into a lot of these issues. Basic idea here, you have a cache pool, which is just a collection of cacheable stuff similar to a cache bin in Drupal. You can get an item out of a pool by some key name. That item is always a cache item object, which could be a hit or not. You can get the value out of it. If it's not a hit, then you can reconcute it, set a value on it, set it to expire at a specific time or after a specific amount of time, using either date time or date interval. Save it, return it. The standard routine you've seen 100 times in Drupal, but done with proper objects, rather than standard class pseudo objects. It also supports bulk operations. This is primarily useful for cache warming, which we don't really do that much of in Drupal, but you can say, I want to pre-compute and cache 100 different values because they're only gonna rarely change, but I want to just pre-compute them and not have to generate them on a user request. All right, so get an empty item for whatever that thing is going to be. Figure out its value and then save it deferred. Save deferred means save this at some point when we call commit or when we call save again on something else, as long as it gets saved eventually. This gives you in the typical SQL case, we can then write a whole bunch of insert statements in one transaction, which will be faster. You can do that kind of optimization. Other caching backends have different multi-insert commands. Whatever, it's an interface, you do whatever your logic is behind that. You can also get multiple, just like you can in Drupal. Load multiple cache items at once, again, if you know what they're going to be. This is a caching style known as look-aside caching, where in the course of your logic, you look aside to the cache before doing something, it's the most basic because then it's really easy to build read-through caching on top of that. Read-through caching is simply wrap your logic in the cache layer rather than integrating it together, which means when you're using interfaces, this is easy. This is why you should always use interfaces, right? Right? A couple of people are nodding, okay. So we have, yeah. Whatever this expensive stuff is that gets done, we have a wrapper for it that does basically the stuff that we just saw. Get an item with some magic name. If it's not already there, do the expensive stuff, cache it, and then return it. Next request through, then we just return that value, which means that this actual code that does the actual work doesn't need to know about caching, which makes it way easier to unit test. This is a good thing. I would recommend structuring your caching this way. Whether you're using PSR6 or not, structure your cache this way whenever possible. It is also fairly extensible or just designed to be in that you can add sub-interfaces for both the pool and the item together, say to add tagging support or namespace support or various other features. And then you can have a PSR6 extended version. We may in the future have standard extensions from FIG, but you can also build your own if you need to because our subclasses, the normal behavior still works fine. PSR7, HTTP messages, perhaps the most important to date.  CGI is terrible. Common gateway interface, a quick question. Who in this room was born after 1993? Usually this, okay, we do have someone. The standard that PHP uses to talk HTTP is older than some people in this room. It's terrible. It's a specification for calling command line executables. Oh, God. Based on the passing environment variables to a script, which means shoehorning HTTP into environment variables like dollar server, which is terrible. Why is dollar server so weird and mixes so many things together in ugly ways? Because CGI. And also because Superglobals. No comment. If I shouldn't need to explain to you why Superglobals are terrible anymore. HTTP messages should just be objects. It's 2016. You should be doing message passing. So PSR7 is. If you worked with the request and response object in Symphony or Drupal 8, because it's the same thing. It's essentially that idea just abstracted a little bit differently. We have a request interface, response interface, server-specific version, and a couple of others as well. Again, I'm just gonna go over this at a very cursory level. All of these objects are designed to be immutable. So instead of editing them in place and passing them around, every change you make spawns a new object. So if you have a response object, you want to set a status code on it.  So add this header, add another cache control header, and so on and so on. You keep getting back a new object each time. It's actually very performant because PHP has copy-on-write support natively. So spinning up lots of very similar variables doesn't cost all that much. This also makes the code a lot more predictable. You need a lot less error handling. The whole system becomes a lot more stable when you deal with immutable value objects. It also uses streams, or actually a stream wrapper for the actual content for both the request and the response. Why? Because you really don't want to require it to use a string and then have a string output that is a gigabyte-sized CSV you're generating on the fly, or a 500-megabyte file on disk, because that's bad. So instead, you could have a file stream that you set as a body, or random string, or even use a callback function of some kind, which is similar to what Symphony can do. Again, a lot of this inspired by Symphony's HTTP foundation because that was the old de facto standard for how to do this kind of abstraction. Streams are not immutable because they kind of can't be because PHP's underlying stream system is not immutable. Sorry. Your eyes are also abstracted to an interface because they are way more complicated than you think. They are not just a simple string. It's not just the domain and the path. What happens when you specify a port number or that when you specify a port number, that's non-standard. What happens when you specify no domain? What happens when you specify no origin? There's a lot of weird edge cases that are taken care of by this object, which makes it a lot more portable and predictable than just playing around with parse URL. Not gonna go into detail there, I don't have that kind of time. But it's there. We actually support this in Drupal 8. If you have a controller, if you type in instead of on request, but on the PSR7 request interface, you'll get a PSR7 request object instead, translated from the symphony object. If you return a PSR7 response object, it'll get mapped into a symphony response object and go through the rest of the system, which makes it really easy to take something else outside of Drupal that uses PSR7 and plug it in somewhere. That's by design. It's a very late addition to Drupal 8 that we managed to sneak in, but I'm very happy that we did. Coding standards. PSR1 and PSR2. Basically, these are the most needlessly controversial specs in the history of PHP because everybody has an opinion. PSR1 is actually fairly uncontroversial. It started as a single spec, they got split at the last minute. PSR1 is things that affect your runtime code. So for example, don't use short tags. Please. Your files should always be in UTF-8 character encoding, not in Windows 12.52 or whatever it is. Thank you. Camel case your classes, capitalize your constants, stuff like that. Use an auto-loader of some kind, please. And if you have a given file, it should either declare functions and declare classes or it should have coded executes in the global namespace. One or the other, not both. Pretty much odds are you're doing this already. Most code in Drupal was already following this standard because most well-written code already followed this standard to begin with. So really nothing controversial here. The controversial one is PSR2, which is the more stylistic stuff. For example, it specifies four-space indentation, not tabs, not two spaces, four spaces. It also specifies the one true brace alignments, but only for classes and functions, for four statements and if statements, it's inline.  I don't actually like PSR2 and all of the stuff it does, but that doesn't really matter because what's important is that the vast majority of PHP projects don't have to think about their coding standards anymore. And they can just say use PSR2 because that's the default in my IDE and argue about other things that actually matter. So whether you approve of PSR2 or not, you should learn it because that's pretty much anything outside of Drupal and WordPress are gonna be using now. So if you're working with any other system, this is the coding style you'll be following because it's just been adopted by almost everybody. Hopefully updated soon in PSR12, which is in development now. Really just updating for PHP 7, which has a bunch of new syntax in it that's way cool and you should all be using because PHP 7 is way faster and some new updates coming for that soon. Again, see the specs if you want to see what the current status there is. So that's what we've got so far. It's actually quite a bit. A lot of these took a while. There's drama behind some of them, but FIG is producing stuff that actually has an impact on the way we develop and makes code more interoperable. And we've got more in the pipeline. We've got a lot in the pipeline. If you're interested in getting involved in FIG, there's, let's say 10-ish, one, two, three, four, five, six, seven, eight, nine specs currently in some stage of development from just starting to nearly done. So if these interest you, if you are educated in this topic, get involved. These are open for comment right now. I'm gonna go through them very, very briefly. PSR9 and PSR10 are around security best practices for projects, no actual code standards here. PSR9 is around reporting mechanism and a good process for handling security reports. This is for projects receiving information about security advisories. Like you should always have a security at whatever address. Or by the way, don't disclose security errors until you actually fix them. All these kind of best practices that Drupal already follows, frankly. And then PSR10 is a security advisory format. The idea here is that we can have a standard machine readable and human readable format in which to publish security advisories. Similar to what Drupal does now, but in a machine readable format, which means you can build tools that can analyze your code base and say, hey, are there security advisories against my program? I've got 15, 20, 30, third party dependencies. Do any of them have security advisories against them that I need to update for? Basically, there is a tool called Sentiolab Security Advisory Checker. This is, the idea is to build the tools that make an open source equivalent of that viable. Maybe tying into Composer, maybe not. But just, we want to get to the point where you can point your code base and say, do I have a security hole? Yes or no? This seems good to me. Ben, in development for a while, was silent for quite some time. We just recently got a new editor for it, Michael Hess of the Drupal security team. So I have very good faith that when these are done, they will be really, really good because Drupal's security team is awesome. The PSR11 is looking to standardize dependency injection containers. This was actually very controversial. It was one of the closest entrance votes we've ever had. It's very, very simple at this point, just the get and has interface. There are a number of projects already using this in development, or the draft version here in their development systems. Why is this useful? I mean, code shouldn't depend on your container, right? That's why it's controversial. The idea is for factories, places that are going to need to depend on a container to load one of these services at runtime based on user configuration or something, which we have a number of in Drupal. We have a lot of places in Drupal we're doing that, so it is relevant. It's also for delegation. The idea here being a lot of libraries ship with a ton of code you have to wire together to make it work correctly. And that wiring is different for every single container, every single application you put it into, which means you need a symphony bridge, a Drupal bridge, a Zend bridge, a Laravel bridge, and that's just a ton of work. So instead, they can ship a tiny little hard-coded hard-wired container for just those services and the main container of your application can delegate to that. Is that a good idea? I don't know. I'm not working on this on myself. I'm honestly still undecided about it. If you want to give me input as the Drupal rep, let me know. PSR 13, this is one that I'm the editor for. It is nearly complete. It's in review right now. We're just working on naming something. The idea here, standardized hypermedia links, because you have a lot of value objects, a lot of data objects for representing JSON API, HAL, HTML has hypermedia link support, Adam has hypermedia link support. Let's standardize how we work with those so that I can translate from a HAL object to HTTP links on a response object really easily. Kind of an edge case, a narrow use case, but a legit one. There are value objects that are read-only or immutable just like in PSR 7. We've got a link object which has the relationship on it, the href that it points to, and attributes on it, and also a templated flag for HAL. And then also objects can be a link collection. This is the one we're still debating the name on, which means I can have an entity that has links on it. I can just say, hey, entity, give me all the link objects that are relevant to you. And it can generate those on the fly off of user configuration and database date and so forth. There are extended interfaces for them that do the same kind of with whatever methods as PSR 7. There's work on an event manager. This is PSR 14. Basically, simply event dispatcher you've seen in Drupal 8. Same thing, just more abstract and standardized. Still very early, it's not much to say on it yet. The current draft is frankly a little over complicated and over engineered, but we'll get to that. We'll fix that. Some more fun ones. Some better tooling around HTTP messages. PSR 15 and PSR 17. 15 is, excuse me, 17 is HTTP factories. The idea here is that PSR 7 interfaces are great, but at some point someone's gotta create an object. And as soon as you have code that's creating the actual object, you're hard coding that library to one specific PSR 7 implementation. You don't want that. So instead, make it really easy to outsource that to a factory. So whoever's providing that implementation, say Zend's the Ectoros library, which is the most common, or Guzzle has one. It can also provide you with a factory to create those objects. Which means you can write middleware, that's PSR 15, that is completely abstracted away, can still generate responses, but is completely abstracted away from the underlying implementation. Who's worked with StackPHP at all? Or Sylex? Okay. You know how you can wrap HTTP kernel instances around each other in StackPHP and in the symphony kernel model? That's middleware. And ironically, symphony was the first to make it possible to do in PHP, but doesn't use it very much. It has become incredibly popular in PHP in the last couple of years. The Zend expressive library is all built on that. Zend 3 framework is built on PSR 7. Slim 3 uses PSR 7 and wants you to use middlewares and so forth. So we standardize that too. Again, this is currently draft, so it's not necessarily what it's going to end up looking like. But the idea being that you have an interface with, it has a process and a next. This is basically the equivalent of handle in the symphony world. And then your middleware simply has that process method, gets a request, and it's going to return a response. So it can get that response by passing it on to the next wrapped middleware, or creating one yourself off the factory. This way, I can still create a new response, and I can plug this code into Drupal, into symphony, into something using Zend dictoros, into any other implementation, and I am still abstracted away from what the underlying implementation is. That's kind of cool. You need both the factory piece and the middleware piece to make that work. That's why it's two specifications. It's also an effort to simplify caching a bit, because the cache system, PSR6 is very robust, it's very flexible, but if you just need a dumb key-value store, it's more work than some people want. So, PSR16 is just a very basic cache interface. Excuse me. With basic key-value, key of string, value is mixed, whatever. There is a wrapper for it to bridge it to PSR6, which is probably what you'll use 90% of the time. So, if you're writing a library that doesn't have complicated needs, they just need very, very basic caching needs, then you can take any PSR6 library, toss the wrapper at it, and then do basic caching on it. If you want something more advanced, you write to the PSR6 interface. That's what's on the table. That's what's coming down the pipeline as people work on it. In some of these cases, there's active work, and some we need people to get involved. Ultimately, though, FIG's goal, any version, any iteration of FIG, its goal is to encourage collaboration, because collaboration builds interoperability, it builds compatibility, and it makes it easier to build a larger community. A community not just of Drupal, and Symphony, and Zen, but of PHP. And frankly, we've met with pretty good success on this front to date. According to packages, PSR3 has almost 2,000 packages that depend on it. PSR6 has 165, PSR7, over 700 packages depending on PSR7. And they've been downloaded millions of times. There's also roughly the order in which they were approved. PSR3 was the first one approved, then 7, then 6. They're roughly following a similar trajectory. This is the data from packages as of about a week ago. Of course, FIG's biggest success, where it's had the most impact, is PSR8. Which is the huggable interface. I'm the editor for this one as well. Surprise, surprise. Defines two interfaces, huggable and group-huggable. The idea here, you can indicate when you are compatible for hugging, when you want to hug someone, or not. You can have a group hug. Drupal knows all about this, right? Drupal has been PSR8-compatible for years. There's actually a number of implementations in the wild, especially this from Bulgaria, PHP about a year ago. Where we did successfully implement the group hug version. Because at the end of the day, the goal is to make it easier to work together. To be able to inter-operate, to build a better ecosystem. To get projects talking. To get people talking. To have people solving common problems and make it easier to divide and conquer. Easier to say, you know what, I want a cache system. I don't care which one it is. I want a logger. I don't care which one it is. I can mix and match easily. I can plug into any framework easily. There's plenty of discussion happening that's not around PSRs necessarily. About just good practices. Because ultimately the goal is to collaborate better and build a better, more robust ecosystem for everyone working in PHP. Thank you. I have a couple minutes for questions. I don't know if there's a microphone around. If you have questions, I'll just repeat them. Shout it out. I'll repeat it. Context around the recent public blog posts around FIG. Disclaimer. Highly biased opinions follow. When FIG 3 was being discussed, it was not explicitly liked. A couple of the people speaking against it proposed instead. Well, let me back up. I talked about who is FIG 4. Member projects or all of PHP. What's our scope? There are those in FIG who feel that FIG was and always should be interested only in member projects and just ignore the entire rest of the world. That's the minority. But it's a loud minority. There are those, myself included, who feel that that's a wonderful fantasy and that'd be nice, but in practice it's impossible for a group like FIG to not impact non-member projects. So we should be paying attention to non-member projects and just accept the fact that we are the PHP standards group, whether that was the original intent or not. A few people have responded by saying, well, if FIG is the original vision of being just for projects and ignore the rest of the world, then we should just shut down FIG. And if you want to have a standard body on this model, then go make a new organization, don't use the FIG name for it. And some of that discussion has gotten rather heated. And one supporter of the shut down FIG position has been very vocal and very public about his distaste for everything and anything involving FIG 3. And I will stop that description there for the sake of diplomacy. So yeah, that's existential crisis in FIG as we decide are we a standards body or not. And some people standing on soapboxes about that, and of course a lot of FUD. I actually did an article for SitePoint last week. A week and a half ago now. Specifically because someone else not involved in FIG had done an article for them that got most of it wrong. Factually wrong. So I put up a blog post to correct that fact. Because people are paying attention to FIG. And I think I've got time for one more question before I get thrown off the stage here. Outlook for Drupal using PSR2. I think it's going to happen eventually. Not soon.  You run a code format across the code base and commit the result. And break every single patch against every single module in the entire system. And that's not even counting the number of people who don't like PSR2 for very legitimate reasons.  And the fact that we do have a lot of tooling built up around our current coding standards. And in many ways our coding standards are a lot more detailed than PSR2 is. So it's not it is socially a very difficult transition to make. I think it's probably going to happen eventually anyway. Simply because there will be enough pressure over time. But I'm not pushing that myself. I probably won't push myself more. I am resigned to the fact that it will eventually happen. But I have no clue on a timeline for that. Probably Drupal 9 at the absolute earliest. What changes to suspect in PSR12? No changes for current code. So it's not going to change the brace position or anything like that. It's mostly PHP 7 adds support for return types. Okay. Where do we put the colon? Where do we put the spaces around the colon for return types? Those didn't exist when PSR2 was written. We now have people using declare statements for strict typing. What are the carriage returns around that? That kind of stuff. So it's all stuff that didn't exist when PSR2 came out. And now they do. So okay, we should probably standardize those. Which is also an open question with a small number of people saying don't standardize anything until people are already doing it. FIG should only ever standardize what's already being done. Other people pointing out that's a great way to end up with incompatibility and a lot of people having to break compatibility when we define a new standard. So it should be all backward compatible stuff in PSR12. Thank you all for coming. Please do get involved if there's an area that you have specific interest in and specific domain knowledge. And come up and get one of these cool stickers. I'm happy to answer questions after the session as well. Thank you.


Hello welcome back to the happy hut. My name is Neil and if you're new to the channel you're most welcome but I don't think anything in this video will make that much sense because I have got the nicest comments on on my videos lately that have said things like Neil. Where are you? Well, I haven't seen a video be uploaded in three weeks. Is everything okay? And no everything isn't okay, and I'm gonna show you why here in the heart So it's been quite a busy time in the garden I've got some randy pigeons on the roof so you might hear quite a lot of noise from them But let's go into the hut and I'm going to show you some of the changes I've made to my YouTube studio setup I absolutely love watching YouTube studio setup videos So I thought well, why don't I make one of my own? I've made some changes to the setup here and I think it might be a bit of overkill This is how the setup is looking at the moment I've got an IKEA standing desk the scarcer standing desk and that's going to be featuring on my IKEA dad channel Very soon once it gets through all of the editing it really works. It's so much better And I've put in the light panel that featured on the on the last video I still think the lighting is a bit harsh and hello here. I am on camera 2 So this this is the potential new setup and I'm not sure I'm not sure about the lighting. It feels a bit a bit harsh It still feels a bit bright at the moment But the great thing with this is apart from me being able to pretend like I am I justine Which is obviously a very long held ambition of mine But I also have a second camera up in the roof It's actually my phone where there's a better shot So that's giving me a top-down view and I've got that running now And here this is something else that I've put into my desk I've made a video about this and that should be the next video up on the channel And what it is it's this I've cut a hole in my brand new desk I've cut this hole for this headphone jack and USB port so I can just plug things into my desk And I can transfer files really easily from even micro SD card But it's also got an SD card in port as well if I ever go down the route of having SD cards Like I should and it's also got a little gap in here So I can run my microphone cable down there under the desk And all the way over to camera 2 over there. Hello. You're still there Let me show you underneath the desk because that's where the magic happens So underneath here I have my mini PC lashed to the desk up there I haven't quite sorted out the spaghetti yet I'm going to I think I'm going to bind those up I'm going to move the ethernet cable to over to that side This is the underside from the USB port and headphone port I'm going to sort of cable tie cable clip that to the to the desk there Tied it all up. I've put the whole thing on casters as well The whole thing moves which is really great And I can obviously use this winding handle The IKEA SCASTER desk has a winding handle that makes the desk go down as well So I'll keep it up for this shot here Now the idea is that I think I mentioned this on my last video That I want to be standing up while shooting my YouTube videos Because it just feels a lot more energetic He says on a Sunday afternoon having spent all day trying to get this ready But I do have some energy left and the next two videos will be Me fitting the USB port to the desk and also sneak preview I'm going to be doing an unboxing or first impressions review Of the Audio Technica ATH-M40X Which has been very kindly provided by my work But it turns out that these are the exact headphones that I've been Covering for about a year now Since I saw this video with Phineas Eilish Billy Eilish's producer brother uses these very same headphones It's been tortured to get this desk ready before I can unbox it So I'm looking forward to that and look this is the top shop Does that work? I'll be able to test this in the edit I think it's doing it in portrait mode which isn't very helpful Because I'm going to flip it over and I don't think that helps the quality at all I like flying camera number one here That's pretty cool Let me show you what it's like to actually stand at this desk It's... I think I have to pull back a bit to get everything in But what's great is that I can have the monitor here And the wish is that I have got a USB-C to HDMI output And I think my phone does actually output HDMI footage But my monitor is too old to actually take that in So I'm going to have to work out some way of getting some kind of HDMI monitor So I can actually see what I'm shooting in the ceiling And that will be a lot easier because then I'll know where to hold the box It sounds like we've got a motorcycle display team outside But it's a summer Sunday so we've got some mowing going on I haven't quite figured out how to completely soundproof the hearts I guess closing the door would help wouldn't that? Let's try that So what do you think loyal subscribers? I thank you so much for your comments But is the lighting too harsh? And how is this framing for you? It feels really comfortable for me and I can make the desk go even higher I want to I almost snapped the monitor cable when I did this earlier Oh my goodness, this feels so comfortable And I can hold pack shots like this or from up above Thanks for being there, thanks so much for your kind comments I promise I've got some cracking banger videos on their way to you right now And right here, I've had that box over my face, haven't I? Right here are some other things that I've been doing on YouTube Thanks once again and we've got some more great videos coming right up I think that was everything You


The question is, how you, as a person, can be empowered to efficiently and effectively initiate massive people-mandated changes. We have developed the purpose to be served, our human purpose on which we have natural agreement. We have developed value analysis and learning to see where the general benefit awaits us. We have discussed presentation techniques to communicate that value to others, and we have gone layers deeper in seeing existing potentials for change, and how to communicate the potentials to others. And then we have examined an efficient process for not only initiating change, but for enlisting leadership to become part of that change. There are understandings that can guide the development of the sampling effort, a few more concepts that are not only obvious once presented, but that simplify the process greatly. One fundamental is that change is based on a valued result, not on some action. If the question asked is based on the rightness or effectiveness of some action, you are likely to find issues and challenges rather than agreement. We agree on valued results, and there may be differing opinions on what will best get us there, issues generally prevent or interfere with performance. What the mandate is to accomplish is the end result, but that the state and change action is an accepted way to get there. It does not even have to be the preferred way, but only reasonably bring a valued result to accomplishment.   That is what has to be accomplished if there is to be a public mandate. There is no mandate through popularity, through having more people on your side than on some others. Mandate occurs where there is no real alternative because the level of agreement is so high that alternatives do not support agreement in opposition. Our sampling subject is the criteria for agreement must be able to attract the voluntary support of Pareto level segments of the population. The challenge is not popularity, it is the requirement for participation being voluntary. There is a human cost in pausing from other things that we are doing. There is a cost in time and attention that is paid by each person who participates in establishing the mandate. There must be such obvious value potential that people will choose to pause at their other pursuits long enough to receive knowledge of the potential. They must see sufficient value in taking part to give their opinion of what they have received to indicate their agreement or disagreement on the suggested mandate. You are your own sample of one person. What can you see that has such value as an end result that people will pause and give support? Your commitment is essential. It has to be something so valuable to you that you are willing to put in the time to publicly present the potential mandate. People react to the expressed commitment of other people. It is hardwired into us as human beings. How much time and effort are we willing to commit as individuals is variable. But we do always react to other people who seem committed even if it is to reject what they are committed to do. And then we have that same wedge in the door to personal empowerment. We and that is all people are the only party in interest. There is nobody else who has to be considered. There are no right people whose opinions and approval are required for mandate. The first subject is honesty in your own commitment. If you do not believe in the result of the subject mandate with sufficient fervor to commit your own time and effort to the sampling, that will almost certainly result in failure. We are dealing with all of us as human beings and all focused on what each of us will be able to value. A second subject is consistency. There must be a central document, video, or other consistent record so that our agreement is documented as to what each of us is agreeing to. It may be supplemented by answering any questions or challenges that are personally raised, but the record of the agreement has to stand on its own as a basis for people coming to agreement. It is also important to keep in mind that the desired result of the sampling is not the mandate document, but the agreement itself. If the people who are sampled are not willing to support the mandate as presented, then the mandate is not a reality. For the same reason it is important to avoid intentional bias in the selection of mandate subjects. Our purpose is not served by an attempt to manufacture a mandate. If the agreement is not real, then there is unlikely to be a real mandate as a basis for action. We need this to immediately separate this effort from exercise of privilege. Mandating is not a goal to be documented and directed to commoners for action. That will be the knee-jerk reaction of modern privilege-oriented leaders. That manipulative and authoritative application is the basic technique of privilege to sell the public on what the leader has decided is the right thing to do. The potential for mandate is either real or is not real. Answering to authority manipulation is likely to be an exception rather than the rule. On the other side, there is no need to intentionally seek to sample everyone fairly. If mandate is real, it will be hard to find any homogenous public group that will not support it. Misrepresenting the public does not create mandate. Skewing results will not affect whether a mandate is real. Our change purpose is served by discovering and documenting a real mandate potential. And then there is the mandate criteria. The smaller and more directed is, the greater the chance people will pause to receive it. If a mandate is more than half a page and is likely that people will not pause long enough to receive it, if a video is longer than two minutes, they are likely to continue on their way without receiving all of it. The one who samples needs a very short and to-the-point criteria. It has to either address a common value or put some obvious challenge forth for correction. This same consideration for the nature of the document or the record will be important in presenting it to leaders for their action. If it is simple and clear in what it is to accomplish, that clarity and simplicity become part of an agreement that the leader will have to rely upon for assuring that the people are mandating. For simplicity, I would suggest that the document be titled and that title state the valued result. The remainder of the document or record describes the changes that are proposed for action. If that sort of simplicity is not available for the action you propose for mandate, then it is likely that there will be no mandate. If people do not receive the criteria as basis for agreement, then they will not be agreed, no matter how valuable and how consistent the sought agreement may be. The rule is that you have to be prepared to rework the criteria if the potential for mandate is there, but not presented as people will support it. More complicated changes will have to be achieved by other processes, as might be gained by setting public bodies under the public's exception management authority so that the public value becomes more a criteria for political actions. We also need to consider the general leader hostility to the very concept of people coming together without a proper, or a right leader, guidance. That is a threat to privilege. For practice we can consider the current waste from the federal spending of our tax contributions. The damage is lack of any accountability or management by anyone. We want to title our mandate criteria to be simple and indicate the nature of the change we propose. The purpose is to have people pause and receive the change suggestion. This supports a title like financial representation. An optional statement of purpose can expand on this or provide additional scoping information, but care should be taken to keep any such statement simple and to the point. This is to empower our representative to take charge of spending our tax dollars, and they are to report the same to us. Then set the change in as simple terms as you can. Divide our congressional district's tax contribution out of the general treasury, and provide our representative with a checkbook. Call Congress to come together to work for us. Checks must be countersigned by one or both of our elected senators. The title gives the purpose. We can narrow it. Only our representative can write checks and other expenditures require three-quarter vote of both House and Senate members. This mandate is also to establish our citizen management by feedback information that we need to see if we are to approve or disapprove when our representative does in our name. Report to us regularly concerning the purpose of spending, specifically showing the amount committed purpose served on the senator or senators who approved. And as a final management information for us, publish a monthly status for funds held in our account, and summary of expenditures and additions. The final item on the criteria is always the question of agreement. I would approve or not approve this change. Presenting this in a public place may face challenge. It is best supported by having at least a few others who have committed themselves to the purpose of testing for mandate. It is prior agreement that best communicates value. It is the invitation of others that raises the value that you would present. Incentive to stop and take part may be appropriate, so long as it is not something that might skew or otherwise interfere with the sampling. You might, for example, offer to pay a fixed price for taking part in the sample. A pastor I knew who worked as a chaplain at the Naval Academy noted that he could always gather students by offering pizza to those who came. While such an action might be inappropriate for a mandate to authorize a pizza ria on campus, as collecting only those who like pizza, it would be of general use in gathering students as a sample to test for a summer trip mandate to a shipbuilder facility. As with other matters, if the mandate is real, people will be receptive to it. And almost everyone who experiences a sampling criteria will recognize the potential to bring people to agree. If it turns out to be simply popular, that will also be recognized. Our ability to understand general social matters is pretty well fixed. In general accord with the stated purpose for this study, the very gathering of the sample information is empowering to the ones who bring it together. It is empowering to those who take part as supporters. It is even empowering to those who are in the sample. They are receiving the understanding that their agreement may be effective, along with the stated opinions of others who probably will also agree if the criteria is well presented. For you as a student, this is not any basis for a commitment on your part. It is a potential to be compared with the many things that this study of performance will open for your decision. The true empowerment is having the choice for where you commit your efforts based on what you most value and the apparent potentials for accomplishment. The next example might be titled Manage the United States. It is a follow-on subject and I assume that the example above has been implemented. This addresses reinvigorating the constitutional assignment of government management to our congressional representatives. It empowers them to represent us more effectively through controlling the purse strings of government. Our statement of vision? Congressional management. No spending bill shall be passed without a valued result returned to Congress or to the people indicating success in the funded effort. Just that easily, every funding bill becomes an assignment to accomplish a valued result. This is a statement of government management gaining a valued result through those who are authorized to act. Maintain and publish a list of spending bills together with the amount committed, the product to be gained, estimate of when the value will be returned and when the valued result is successfully delivered. The obvious requirement is that there is feedback on performance by those who are funded and that it is published for us, citizens, to see that our leaders are successfully managing in our name. Note that satisfying leader goals and objectives has no valued product. Running things has no product. Sustaining organization has no product. The funding of all these will be presented as obvious waste. This would force an almost immediate reorganization of government so that every funded effort has some valued result to deliver from its efforts. Elements without products such as the Office of Personnel Management could not be funded without accusation of waste. Entities like the Department of Education or Environmental Protection Agency would be funded only for specific projects with deliverable results. It would be far more difficult to fund secret projects or elements of organizations as they can be intentionally avoiding having products that can be delivered. The obvious challenge to having Congress do its job is political. It is direct and obvious denial of privileged rule. The expected resistance to application would be severe, almost to the point of leaders residing rather than putting it in place. Having the responsibility for financial representation already in place will change the mandate from a direct denial of privilege to implementation of performance management, a much easier pill to swallow. As in most improvements, almost everyone comes out a winner by this change. The congressman receives the power to manage what has been denied by others assuming privilege. We certainly come out ahead as it gets much more difficult to spend tax dollars on privileged leader goals and objectives. We get to see what our leaders are accomplishing. The operation of government is required to deliver value. It has to have a public purpose or it is likely to be unfunded. But again, all those many privileged leaders are also part of us. They also receive the benefit of a more functional government that spends less of their earnings. They just lose the privilege of harvesting other people's money for wasteful purposes. In that they are losers. There is also the shrinking of government when non-productive efforts lose their public funding. There will be a lot of government employees released as their positions cannot be sustained. We will no longer be doing public charity as it has no value, public result. Government can arrange for private charity to serve the transition to a government that is managed and that does deliver value to the public. Assigning citizen rights in our amendments is ineffective for assigning privilege. If we the people are to be self-governing, it requires harshly stripping privilege from non-citizens. It is our law that any written agreement buy in among the people only puts duties and responsibilities on those who sign. The challenge is potential citizens who do not accept the authority of we the people of the United States as the one who determine the direction of our political government. Think of the impact on elected officers having to be voting citizens knowledgeable in the document being our national government before they get to assume office. It adds a whole new emphasis on the oath of office if they are a signatory to it. Also signatories limit the authority of government as it only sets such authority as the signatories can provide. That is basic to our law of contracts. One possible title for the criteria sets citizen authority. As a statement of intent, only constitutional signatories are entitled to representation in federal governance of the United States of America. Then challenge other authorities. So other authorities shall take part in governance without a signed statement of agency by authorizing signatories documenting the purpose and limits of the agency granted. To prevent effective political slavery, citizen rights to self-governance cannot be limited by agency agreement. It is probably necessary to intentionally strip privilege protection from the officers of private corporations. Corporate officers shall be personally liable for violations committed by their corporate entities. This rips up our current system of influence peddling. It rips up our money-limited system of election. It defines our current way of doing the business of government as criminal, subjecting those who would continue using it to potential prosecution and possible law civil office. It is likely to be especially hard on our news media, as corporate entities who feel privileged to peddle their own corporate preferences. It reshuffles the deck for them as they risk prosecution for endorsing one candidate above others. They get to report political news not to take part in creating or influencing it. They get to observe, to report, and to editorialize. They do not otherwise get to take an active part in election or representation matters, only as citizens can news leaders issue their personal endorsements. For implementation, the right to vote in federal elections is only recognized for those who have accepted the duties and responsibilities of citizenship through a recorded signature on a copy of our constitutional agreement and capacity to record such citizen signatures shall be provided at all polling places. For enforcement, we have to give teeth to our right to self-governance, arranging for effective prosecution of non-citizen interference. Congress shall establish and appropriately fund and staff a public office to receive, investigate, and appropriately act upon citizen complaints of violation or misrepresentation. This tears up our current political nation, replacing it with a representative republic which was originally offered. It is probably too big a change to be addressed in the near future. It is the sort of thing where the mandate might be suggested, giving people time and opportunity to accustom themselves to the extent of the challenges we face. It is hard to grasp the full extent of the damages that privileged leadership has visited upon us as a people and even harder to sell the need for the level of pain that would be experienced should we exercise our ownership rights so openly. The only losers will be well paid for their services. It will be those who are hired and well paid for implementing the change. They will be in direct contact with the painful reality of our ownership upon those who would otherwise gain their own wealth and potency at our expense. As a last note on this, there would be a significant influence on public education as it would be forced to teach the Constitution. People are not going to be eager to officially sign a document that would set duties and responsibilities upon them without having a pretty good understanding of what they sign. As another workable direction, consider the prohibition against taking private property for public purpose without paying for it. Even a privilege-based legal system recognizes citizen ownership and personal income. We have property rights to our money. While our Constitution does recognize our rights to be secure in our earnings, privilege-based leadership has continued to harvest it for the purpose of the public, with those elected into privilege having general privilege to do what is right for the public. By this point, that should start the alarm bells clanging. Something doesn't fit here. Don't our leaders have to pay for it? The answer that those elected are really rulers obviously won't do it. So the presented angle has to be that running the government is the public purpose. Just that quickly you find a change on which people can agree. You are the public. If you do not receive the benefit of an expenditure, then taking it is a Constitution level forbidden activity. Consider the impact on a public charity, a subject already discussed as a reasonable place to discover a mandate. You are the public. If you do not get value what our leaders spend in your name, then it is without value to you and probably without value to the public. A title might be Citizen Return for Taxes. No citizen taxes shall be spent without return of value to the taxpayers. I note that this is another challenge for just dumping funds into a treasury than every dollar spent has a citizen contribution. Our courts shall be authorized to receive citizen challenges to federal spending legislation or other expenditures by government that return no value to the taxpayers. Public officers who voluntary actions violate this duty are subject to prosecution before a jury of citizens for misrepresentation or embezzlement. A jury finding of embezzlement shall immediately remove the offending officer from further public employment or later public benefits from public employment. Of course there will be a cry of unfair to interrupt retirement. The answer is to make it personal. If you hired someone to clean your house, said the work is acceptably done for a long time before he is caught selling the family silver, would you consider continuing to pay what was promised for retirement or pay only after you had recovered the cost put upon you by the theft? We have to be fair to the public too. Our prior discussion is pretty well defined. Our potential mandate for patent and copyright law rewrites. For patent law, the title might be Citizen Invention Rights. The focus is the action can be simply stated as public protection is offered to citizens for their inventive and artistic works. We need to clarify the limit of effect to citizens cutting out corporate bodies in their otherwise privileged master and servant relations with American citizens. Only citizens shall be protected as inventors, authors, and artists. Government shall honor their ongoing decisions on the use and distribution of their protective works. This is strengthened by recognition of the public purpose that stands behind that area of law. Patents and copyrights are granted for the benefit of the public and protection may be terminated upon petition for any works that are effectively denied to or withdrawn from the public. The effect is to remove the public protection for planned obsolescence. Implementation will need to be enforced. Improperly claiming protection as the author, inventor, or assignee of the invention or artistic works of others shall be a misdemeanor. An appropriate recovery and restitution shall be legally directed, including the potential for punitive damages. We have the same sort of clarity for public charity. A potential title might be Supporting Citizen Charities. Our criteria must make it clear that what we have been doing is criminal. The defining statement, expending public funds on charitable causes, is misrepresentation or embezzlement as may be determined during prosecution. First, disrupt the wasteful use of tax dollars. Tax dollars shall only be used to operate the government as a service to we the people. The elected leaders shall be supported with public funds for recognizing, establishing, and arranging operation of citizen-supported charities. The service shall include the efficient receipt and distribution of donations to the published charitable purpose. As with other mandates, there must be a stated challenge for those who would continue to exercise privilege with public funds. Officers shall be personally labelled for any mishandling of donation or misdirection of public funds. We do not have to have a single direction for removing inappropriate secrecy. Our approach can be as simple as mandating the release from public office and benefits for a public officer who would secure their government activities or products from representative government management. That just cannot be allowed to continue. It is an insult to the public. It might also address the authority of our elected leaders to manage government as our representatives, so that secrecy from a representative becomes actionable, again removing the offending employee from further public office or benefit. It might again be focused on empowering grand jury review to establish secrecy as an exception matter only, so that there is a legal foundation for maintaining some critical information that is not further distributed. While it would be much harder matter to get Pareto-level agreement, it could openly criminalize all secrecy from the public. That would put the requirement of public review on all proposed secrecy, probably empowering grand jury review. Our challenge in this is the combined seriousness of those who feel privileged to accept public employment without any responsibility to the public, and the obvious value of permitting some reasonable level of protection for information that might be detrimental if generally distributed. It is not a challenge in our authority, but in having many options for mandate criteria without a clear limit on what we can accomplish as the necessary level of agreement. Our challenge for empowerment is in the ability to design and present the criteria to collect a sample from the public that can mandate public action. The good news is that empowerment is not limited to what you can do as an individual. If you have a potential mandate, you will be able to enlist others to a teamed design effort. In this lesson, we have been addressing mandate potentials. These are subjects where there are specific changes to be directed by public acclimation. It is where we, as a public, can exercise authority to assign specific duties or activities to those who are employed and operating our government. It is specific exercise of public authority to accomplish what we, as the public, can value. Our next effort will address a wider application of performance principles. It will address our potentials for we the people, assuming effective senior management over our government. This involves systemic changes to support our voluntary assumption of authority, to more directly implement public mandate, and to step in and support action wherever it seems appropriate to us as a people.


It's time for me to be very confused for half an hour. We're gonna hop right in. It's called Dragon Ball Z Abridged the World's Strongest. Again, absolutely, I have no idea what the concept of this movie is, but that's what makes this fun. As always, don't forget to check out Dragon Ball Z Abridged the original series. The first link down in the description below. Drop us up if you're new and let's hop into it. All right, here we go. The following is a fan-based parody. Dragon Ball, Dragon Ball Z, and Dragon Ball GZ are all owned by- This is cozy. Okay, is this a promo image? 2GTV and Akira Toriyama. These guys kind of look like the garlic kind of goons. Please support the official release. This, was that, what was in the back? Was that like the main villain? Oh no, this is gonna be disastrous. I can't wait. Good, progress on my ice castle is underway. I have to install central heating. I like the overarching joke of Piccolo just wanting a house, bro. It's 90% water and this cloak does nothing. Now, maybe you should have packed more. You never said we were going to the Surinamite Zubatim Mountains. Literally, but call this place on Earth. A little more climbing. They just found the sixth ball. It kind of seems wrong that we're planning on stealing a wish. Yeah. It reminds me, what are you planning to wish for? Oh no. What? Panties. Gonna wish for panties. All right, you won't. Yeah, yeah, just get the lot out before they find the seventh ball. Classical log. Uh-oh. I like being in the Alps. Who's they? Yeah. Did I do it right? I hope I did it right.  Wait, they all the... I never thought about that, can they? No, surely not. I should run. Used to not seeing like Goku at all. Now this is a nice change of pace. This should be good. This should be good. No shot. That wasn't going to work. Tried fire, melted it. That just made more ice. Try and figure that out. Just move! Then I tried... I'm sorry, is this a little unorthodox? Just a little, yes. I'm sorry, I'm not really used to the whole magical dragon thing. I'm an engineer by trade. Hey look, it's fine. But how about just throwing it out there? I give you the power to melt the ice. But that's what I have in your form. Very cool. But I'm trying to. There's more application. I'm not, but if it happens again, then you know, fine, whatever. I like how Shinron actually tried to help this man, though.  Yeah, well I just put a massive hole in your ocelette. What took you 50 years to find me? Good luck figuring out how long it takes that to fix. Shinron out. Shinron out. He's so pissed, dude. Oh, his house is huge. Oh, okay. I see where the actual application of like this comes in. So I'm guessing like this evil alien ship was frozen and whatever and he just wanted to unleash them again. That makes sense. That makes a lot more sense. Ooh, ooh. Okay. Now, there has to be a reason this is the longest DBZ abridged movie, I think. At least that we've watched thus far. So I'm guessing it gets relatively convoluted. It looks like an evil layer. Oh no, no, no way. I know how this goes. You can't make me. Wait, those look like Saibamen. Get him. But like even the eviler. Oh shoot. Hey, Gohan, cold enough for you. Piccolo, it's a little cold. We miss some Saibamen. We're up. I feel like we miss some Saibamen. Bioman. Let's do Piccolo. Just watch out for the 840 ones.  Hey guys, I was in the middle of training and I saw what went down. Why are you here? Yeah! Don't wanna pull up that. It's always like Yamcha listen. Help me build my ice castle. Oh shoot. Oh my gosh. Hey guys, I was just doing some training. I'm asking. You're sorry, but he was screaming pretty loud. When's the last time you saw a fight where someone didn't scream right now? We are going to go home and you are not going to tell your mother about this little outing. But I do not tell your mother. Fine. Why do I feel like I'm going to hear that for the rest of my life? You know who you are. Yeah. You are seriously not going to talk to him. Why? He came back safe and sound. He was gone for three days and refuses to tell us where he went or what he did. Come on, Chi Chi. I lived in the woods for eight years all by myself. And look how eyes were turned out. That's the rule of his role model. Of course not. Piccolo is. And that is a good news. At least he can admit it. Desperately need to have. Yeah, so like he just doesn't care about Piccolo? Sure, Mr. Piccolo is doing all right. Yeah, hello? I'm trying to reach you telepathically. Oh my God. They captured me. Go on. They're forcing me into my brain. Go on. Go on. Oh my God. What is going on with you? Dude, why is Piccolo always the one that's just going through it in these movies? He either has to be the one that shows up and saves literally like the entire universe or he's just the one that's put through all the pain.  Oh mom, I'm never finished. That is the correct answer. Come on. You were not on drugs, right? It was just the one apple, mom.  Just because I stole the Dragon Ray means I have to do all the prep work. Why does he even grow this stuff anyway? Doesn't have a basement. That's not to ask too many questions. Also, have you checked the oven?  Right, now my entire evening is going to be spent trying to find something to watch on Netflix. Those better not be my brownies, Pic. East Turtle, can you get that? Can the turtle open the door? What up? You got the money? We want the road, Jay. And we want the money. Bring us the road, Jay. I'll be destroyed.  Oh. 999 years old. You won't be the end of me. So they're here for Roshi? I can't cook brownies. You have been forced by a jet to the laboratory of Dr. Willow. I only need one doctor, and that's feel good. Also, my GP to check my prostate every few years is more than my age. Roshi, what the heck is going on? Wait, are those Cybermen? We are. Oh, it is a bad time for this. We're bad for combat. I want to see Roshi fight. I don't think I ever have. Hell, yeah, dude. I do not hold back when I'm toasted. It's exactly to be expected from the world's strongest fighter. World's strongest. Dr. Willow will be humbled to have you as his honored guest, whether you like it or not. The body is not a clear indicator of how this is going to go down. Well, you see, strength is only relative when a little leverage is applied. What happened? How did they sneak around like that? This is my cyber. We are biomed. Yes, whatever. Nobody cares. My creations rip a limb from your skin. OK, I need to know, like, actually what they're called. Damn it. And those some fine-ass limbs, too. But all right, I'll go. Turtle, you're in charge. All right, but if the buyer shows up, I'm taking 10%. Bro. Oh, my god. I'm taking 10%. Traffin-ass turtle. Well, man, Roshi might have been kidnapped. Oh, don't sweat it. Roshi can handle that. Yeah, they might have also been strong enough to take Bigelow, too. Oh, they said they were looking for the world's strongest fighter. But I'm, why didn't they? Wouldn't that be Goku? It's been a terrible mistake. I got to think about it. He's like, guys, they must have gone something wrong. Your new body. Why is he old? Oh. Oh, that's why they had the brain as the promo image. They're trying to put the brain inside the strongest body. And the world's oldest. Again, coaching. Oh, no. Goku with the brain of someone like 5 million IQ? That's dangerous, bro.  They're not nearly strong enough. Sexism aside, I'm really not that picky.  So you want to give me the old man? Yes.  Listen, you just need a demonstration. Please, no. Your purse can happen. Where did she sink to? Oh, it's darkness. Deasterous. No, where did she sink to? Oh, Chin. What did you do to my creations? Satsap, blub, blub, blur. I made a few alterations this morning. Introducing electrocutioner, bouncy butcher, and freezer. Wait. Fighting someone on the trademark for that last name, though. They're terrifying. Yeah, freezer? Terrifyingly effective. There is a pose to be cute and cuddly and elderly. Now they're cruel and vicious and fight the elderly. Speaking of which, commence the demonstration. Oh, like, test him out, test out his body. Oh, I bet this is a firefight, too. But then again, like I said, I've never seen Roshi fight. Bouncy butcher, not the world's strongest body. Fiddlesticks. I could have sworn he was the strongest fighter in the world. Oh, wasn't Roshi known as the strongest back in the old days? I think his information is a lot dated. 300-year-old man. Seriously, why is she chained up? Roshi's not even in the top five anymore. As in, I've got at least five friends all stronger than he is. Is that so? I do not indulge him. OK, who else keeps talking? Hello. Oh. Hi. My name is Dr. Willow. Good to meet you. He sounds nice. Dr. Jonathan Willow, the famous biologist Oh. Your breakthroughs changed the entire landscape of the field. Oh, thank you. Thank you. Can I have your body? What? No. Oh, I'm so sorry. Not sexually. I mean your actual physical body to put my brain. No, still. Still no. Oh, come on. It's been 50 years.  And that one deserves to be in stasis. Next thing I know, he's gone to get groceries for 50 years. Which is just my father all over again. OK, well, I'm sorry at all, but there's no way I'd agree to that. Not that you'd fit anyway. Why? Oh, your great matter seems to have absorbed a little bit of the embalming fluid that you're stored in. What? How big am I? Wait. I say a golden retriever. Wait, he wants to put this brain into her? Does he not realize that just does not work?  No, like the size of a golden retriever. Don't you put my hand, man. Oh, calm down, sir. I can't fit in a body like this. Don't worry about it. Sometimes brain surgery is a little more odd than science. You're thinking of baking. I might be thinking of baking. Well, Pinky, you beat the wrong guy anyway. You want some Goku. Can I fit in him? To be fair, there's probably a vacancy. You have to get him here first, and do a kidnapping. I have a feeling that this guy wants to usurp the big brain. I forget, Dr. The Wheeler or something. I feel like he actually wants it, because there's no possible way to do that. And then he says, more art, what are you going to do? Put a giant container on like attach it to him? Amazon Prime delivery. Go in the front door. Sure, hope it's warmer inside. Wait, so where's Piccolo? Oh my. Oh no, he's got a ball pit. I'm genius now. I love how low he is. He's suddenly up and disappeared. They have made us a mint. Dude, this is like that one Incredibles room, times 20. And there are those 50 billions in. I'll watch. That was easily the second worst ball pit I've ever been in. We've all been in a bad ball pit in our time. OK, get it together. Surely he can take him down. Stop. I don't even want to know how go on was made, bro. I really don't. I don't want to know how the interaction happened. Hubbub, he was made for hugs. It's coming. In combat. I'll protect that. I'll be the next guy I see. At least anyone. Do you need some ice? Oh my gosh. They're completely sentient. I need a hug. Top five status anime deaths, bro.  That was so depressing. He just was one and done a thug, bro. You came up with the name Reezer. Oh, hey, son. What? He destroyed the bio where he is. Well, you kind of have to. I just thought of something. Hit the brain in him. Cochin, why didn't you give me one of their bodies? This is not the strongest. I guess you're right. See, this is why you're the... What? Too cheesy? More insensitive. Oh, that's a thicker skin. I thought it was clever. He broke the fourth wall. So, Krillin, the cult never killed anyone. Why don't you turn out the lights? To give us an air of menace. Why do we need menace? Here he comes. Wow. Dude, these villains are a breath of fresh air. I really like them. They're my favorites so far. I mean, in terms of like cheesiness and what not, the dynamic. Well, he gave it his best shot. Oh, no. It's a little sexy. Great. Why is it the size of a greyhound? The bus? This is the menace in that duelo. And we just... Why are we only saying dogs? You two are evil. This is neither a layer. This is a laboratory for science. Yes. Evil science. No. Neutral science at worst.  He's not even that evil. This assistant is more evil. That shot of him, like the brain in the back is really kind of cursed. I'm not going to lie. He said the thing. Oh.   They have control of him or something. God. Bro just wants to further science. Oh. Goku vs Piccolo? Oh my, what? Dead, the ace in the hole. He's a bit... Oh my God. Say coach him please. The FBI would like to have a word. Yeah, okay. That's one of the first few jokes I haven't understood. What? I know who Launch is. She's the girl that like when she sneezes, she changes like from mean to nice, right? So, what's like Crow and Launch's deal? He's back. Oh, he is hitting him for training. I'm doomed to witness these atrocities. I need a body. I will have a body. Sir, you were supposed to be the good one. It was for sight. It's a mech? Oh my, that looks metal. I can dig it. I still think you're going to fit that brain in there though. Just kill him please. Oh, he actually tried. I don't blame him. I genuinely don't. This is not a smell of skeleton. Well, when you think about it, aren't we? It might have been me. There wasn't an attempt to go on. I appreciate it though. Kayoken does actually have more of an impact. It felt like in the game. Again, those of you out of the entire loop of everything up until this point in the jack the bus slash, I should know we lore. I've only played the Dragon Ball Z Kakarot game. I've literally never watched a show and I'm watching a bridge without watching the show. I know it's on Orthodox. Nonetheless, it seems like Kayoken was outscaled very, very, very quickly. So I'm assuming that like, I know this movie like takes place around a 10 of a bridge that was a 10 of a bridge. So I know it's earlier on, but it seems like it gave Kayoken more of a showcase from my perspective. Oh, wow. He actually on denim. Let's say you already did three quicker than expected.  What? Look at this planet. So beautiful. I never see it with my own eyes again. Someone needs to kill him. And by someone, I mean the Earth. Wait, this doesn't seem right. This is so sad. Wait, are you crying? I physically can't, but I'm just so sad. You're not really evil at all, are you? Don't tell me this is how it goes in the movie. No. I just want a body. 50 years, low, trapped. Can you wait one more? For what? I mean, I guess. Oh, no. Oh, no. It was mostly the assistant. Maybe if I just set it down. Oh, my God. Maybe if I just set it down. Oh, my God. I know that's not even remotely how it went. I'm guessing he did actually kill him at some point, but my God. Oh, wait, one more. Dude, I can tell this is like a completely original ending, isn't it? Well, at least it's better than that last wish. Who summons the eternal dragon to melt some ice? Okay, what body does he... Wait. Now I can live a normal life again. Well, it was inevitable. Okay, I know I said that that cooler was my favorite villain thus far. I think that was my favorite movie out of all of them. I have not laughed that hard in a minute. I'm setting the spirit bomb down. Guys, that's been it. As always, check out DBZ, a bridge. First link down in the description below. Drop us up if you're new and I'll catch you in the next one. Bye. Peace, peace.