All right, so I think we'll make a start as the last few people trickle in. My name is Kevin Yank, and this is Developer Happiness on the Frontend with Elm. So I think we are all of us here to get today together, at least in some part, because the Ruby programming language was written to make programmers happy. And as he touched on in his keynote yesterday, DHH, when he describes the design objectives for the Rails framework, he put optimizing for programmer happiness right there at the top. And in this article, the Rails doctrine, DHH describes what he means by developer happiness, and it gives us a few examples. And the one that stood out to me was these array accessors. We all know about array first and array last. Well, Rails adds array second, third, fourth, and fifth, and for good measure throws in 42. And there is no reason for this feature to exist except to make programmers like us smile when we find it in the documentation. And so that's what I think of when I think of programmer happiness. Now I work at a company called Cultramp down in Melbourne, Australia. We build a big web app that companies like Adobe, Airbnb, and Slack use to measure their company culture to collect feedback and data to drive positive change in their workplaces. And so as you might imagine at Cultramp, we take our company culture very seriously and our development culture too. So we value programming languages that make programmers happy. And for that reason, we made the choice early on to use Ruby, and more recently, we've been adding some elixir to our backend as well because these are languages that make programmers happy. On the front end, we chose React not too long ago. And up until about six months ago, we had three teams all building their UI in React. Now the thing about React is it's a JavaScript framework. And this is probably in the top 10 list of cheap conference slide laughs. But what I'll add to this unoriginal observation is yes, the book on the right is actually getting bigger with new additions to the language in ES 2015 and later. JavaScript is getting better. It's getting some nice programmer happiness features. But the thing about JavaScript is it's part of the web platform. So you can never take anything out of JavaScript. And so the book on the left is getting thicker at the same rate. And so for all its strengths, and I will certainly acknowledge that JavaScript is an amazingly versatile and powerful language, it is not, I think, a language designed for programmer happiness. And so for that reason, when it came time to light up a fourth project team at Culture App, we were open to other possibilities. And the possibility we decided to experiment with was Elm. So in this talk, I'll give you a brief introduction to Elm. And then we'll dive into some things about Elm that I think are great sources of developer happiness. And I'll break these into two big categories, the lovable compiler and Elm's radical simplicity. And we'll drill into each of these a little bit. And I'll wrap it all up by coming back to why we're all here today. We'll talk a little bit about Rails and how it compares to Elm. So let's go for an introduction to Elm. It's my distinct pleasure to provide, I hope, the first real glimpse at Elm for many of you in the room today. And that makes me very happy. Elm calls itself a delightful language for reliable web apps. And I think a lot of hay is made of that word reliable. You'll probably, if you've heard about Elm, you've probably heard of its claim of no errors at runtime. But we're here to talk about developer happiness today. So we're gonna focus a little more on the delightful aspect. Elm is a language that compiles to JavaScript. So when you write an Elm app, you'll write a number of modules in separate files. And you'll feed those files to the Elm compiler. What comes out the other end is a big blob of JavaScript that is ready to run your program in a web browser. And when you write an Elm app, you will be following this architectural pattern called Elm architecture. All Elm apps in practice are structured this way. So you'll start by writing an init function. And that function's job is to generate the initial model for your app. And when I say model, I'm not talking about like an active record model that's like a single entity in your database. This is a complete model of the current state of your front end as it's running in the browser. And then you write a second function called view that takes that model, whatever it is at any given time, and generates the HTML interface for your web app. Now if you're familiar with something like React at all, you might know the way it lets you generate a virtual DOM. So every time your front end is rendered, it calculates the entire user interface. And then the React framework takes responsibility for intelligently and efficiently updating just the changes in the actual browser. Elm does the exact same thing. It has its own virtual DOM implementation so you get all those same benefits. And as part of your interface, you'll declare the events you're interested in. And if the user does something like click a button, the Elm runtime will send your program a message. So you need to write a third function to handle those messages and that'll be your update function. And its job is to take the message that's incoming, your program's existing model, and to put them together in order to generate the new updated model for your program, which the Elm runtime doodly feeds to your view function to generate the updated interface. And your program ticks along through this cycle and that's how Elm programs work. So let me show you what this looks like in code. Over here we're going to start by gluing together all the parts of our program. So I've got a main function here and I'm calling HTML beginner program and I'm saying my model will be provided by my init function. My update function is called update and my view function is called view. So we will start by writing that init function I mentioned. It will generate our initial model, which is just a hash or as we call it in Elm, a record with a field called count and a value of zero. We'll then write our view that takes that model and generates our interface.  That's what the first empty array is there. And then the second array is the child nodes of that div. So inside that div I'll have some text, which will be the count from my model. And then I'll have an HTML button that generates on click an increment message and inside the button we'll have the text increment. So I've just made up a name there that increment message. So I need to tell Elm what that is. So I'll say my message type will be this new type that can be only one thing, it'll be increment. And then I write my update function that receives that increment message and my current model and it generates a new model, which is a copy of the existing model, but with the count updated to be count plus one. So there we go. We have a complete Elm program and whenever you click that button, the number will go up by one. And I'm only lying to you a little bit here and that is with the formatting of this code. I've formatted this code so it's easy for Ruby developers to read and JavaScript developers to read. In practice in the wild, Elm code is usually formatted this way. So it's quite a bit taller. Elm likes its vertical white space. But the other thing you'll see going on is these weird commas. So in both of the lists, the commas instead of being at the end of each line, they're at the beginning of the subsequent line. And Elm does this in order to get really clean diffs. You can add new entries to these lists without modifying any of the existing lines. Languages like JavaScript and Ruby do this by supporting trailing commas. Elm prefers to do it this way. I've seen the argument made that if you forget to type a comma, it's a lot more obvious when your code is formatted this way. But I have to admit this was a sticking point for me when I first started playing with Elm. I thought I could kind of get on board with reading code in this format, but there's no way I'm gonna be able to train my crusty old fingers to type code in this format. The good news is you don't have to learn to type code in this format because if you're writing any amount of Elm code, you're probably going to use a tool called Elm Format. It integrates right in with your editor and every time you save your changes, it will snap your code into this community guideline approved format. And there are no configuration options, so there's no Rubocop linter rule wars to go on in your teams. It's really satisfying just to apply the tool and follow the rules and it takes care of the formatting for you. And this actually provides a really satisfying moment of developer happiness. When you're first learning the language, you find yourself typing a lot of code kind of sitting back in your seat thinking, I'm not sure this is quite right. And when you save your changes and the code snaps into place, you get that nice feeling of validation that what you typed at least syntactically does make sense. And that was the first experience of developer happiness that I had with Elm. So that's a brief introduction to Elm and what it looks like. And at this point we'll delve a little deeper into sources of developer happiness that you get with Elm. The first being Elm's lovable compiler. So if you've heard much about Elm, you've probably also heard that it has a reputation for great error messages. And I'm here to tell you today that Elm has the most amazing error messages I have ever seen in my career. Here's an Elm error message, for example. It says, cannot find variable list.nap and it shows my line number. It shows my actual line of code. If it's a red jaggy underline under the part it's objecting to and it even goes on. It says list does not expose nap. Maybe you want one of the following. And its first guess is actually right here. I meant to type list.map. I made a little typo and it's able to fuzzily search the API and guess that what I meant was probably list.map. This is what errors look like at the command line. If you're like me, you probably have a nice editor with an Elm language integration and so this is what error messages look like in Atom, for example. So you get them as popovers when you hover over the red underlined code. They're very nice. Elm errors are also extremely specific. So in this case it's saying the second and third branches of this if produce different types of values. The second branch has the type string but the third is a float. Hint, all the branches of an if need to match so that no matter which one we take we get back the same type of value overall. So the error message is not only telling us what we gave it and what it expected but it's also telling why it had that expectation and even how the language is designed in order to create that expectation. Really, really specific and especially as you're first learning the language this is really helpful stuff. Speaking of beginner friendly errors, here I'm trying to concatenate two strings using the plus operator and that's not how you do it in Elm.  To append strings in Elm you need to use the plus plus operator, not plus and there's even a hyperlink to the relevant documentation. And so when you get something wrong as a beginner as often as not the compiler will guess what your intent was and give you a pointer to the right thing to do. So in the program we wrote before did anyone happen to spot the bug? Because the Elm compiler spotted the bug but I'm not gonna read out this error message because this is actually not that great of an error message. It's pointing at this part of my code as the source of the problem when in fact the bug is down here. I'm passing model.count which is a number to the text function which is expecting a string. And the reason Elm is not able to pinpoint the source of that error is because it doesn't have enough information to do so. I've given it conflicting information and the best it can do is point to the part of my program where those conflicting things come smashing together and I try to plug them together into a coherent program. So the issue is that I've written an init function that has a count that's an integer and I've written a view function that expects a count that's a string. And Elm doesn't have enough information to know which one of these is correct. Elm is a strictly typed language which means the compiler decides for you what all of the values in your program, what types they are and if it finds inconsistencies it gives you an error like this one. So what you can do to get a better error message is to give Elm a little more to go on by providing some type information. I'm gonna declare this type alias called model and what I'm saying here is any time I say model what I mean is a record containing a count field that's an integer and the compiler goes right oh gotcha boss and then I can annotate my init function and say init returns a model and it goes cool that checks out. That matches my expectation and now my view function I can say it takes a model as an argument and returns HTML and the compiler goes bop bop sorry that's not quite right and it gives me now a much better error message. It says the argument to function text is causing a mismatch. Function text is expecting the argument to be a string but it's an int and that makes fixing the bug super easy. I can just wrap my model count in a call to two string and we're done. So Elm has great error messages especially when they're powered by static types and you provide the necessary amount of information for the compiler to understand your expectations about the types flowing through your programs. So let's talk a little more about static types because when I showed you this bug you might justifiably have thought what kind of modern language is this that it can't automatically convert an integer to a string for me when it needs to. Well in order to explain why this is the case I'm going to give you a slightly more real world example of a subtle bug that Elm's really strict type system protects us from. This is a search field that we might have on our site and what I've done is I've put a hyperlink under it that you can probably barely read and it's suggesting that I might wanna repeat my most recent search just by clicking that link and if I were to implement this in JavaScript I might have some code like this where I've got my search history in an array and then I'm outputting a string where I use string interpolation to put the first element in that array right in the string. And the problem here is that I may have never done a search on this site and so that array might be empty and what then happens is my user interface displays the word undefined. JavaScript helpfully converts that nothing into a string and displays it for all my users to see and this is an especially devilish kind of bug because JavaScript is operating as designed here there is nothing wrong and so this isn't the kind of thing that'll turn up in your error tracking software. This will just be delivered to your users as business as usual and you'll never find out about this until you happen upon it yourself. And in fact if I give you a peek behind the curtain here a little bit this is CultureAmp's JavaScript error tracking system as of about two weeks ago and if I zoom in I can show you that every single one of these errors has something to do with a null or an undefined value making its way through our system and exploding at the point that we try to use it. When I was taking this screenshot I couldn't resist going in and trying to fix one of these bugs and I couldn't do it. These bugs are really hard to track down because the place where undefined explodes often has almost nothing to do with the place where it actually gets set in your system. So these are really hard bugs and the reason the person we have to blame for these is this man Mr. Tony Hoare who in 1965 invented the null reference. And in a recent conference talk he said I call this my billion dollar mistake. At that time I was designing the first comprehensive type system for references in an object oriented language. Algal W, everyone's favorite, right? My goal was to ensure that all use of references should be absolutely safe with checking performed automatically by the compiler but I couldn't resist the temptation to put in a null reference simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities and system crashes which have probably caused a billion dollars of pain and damage in the last 40 years and as you can see from our error tracker the legacy continues. So let's look at the equivalent ELM program. This is an ELM list at the top and then in the suggested search function I'm doing a bit of string interpolation to take the value that's returned by list.head and plug it into the string. And the thing is this ELM program will not even compile. When I try to compile this the compiler says that it's expecting an appendable and the hint at the bottom says an appendable might be a string for example. It's expecting a string but the left argument is a maybe string. So what is a maybe string? Well this is a maybe, this is a type that's built into ELM and a maybe something is either just something or it's nothing. So a maybe string is either just a string or it's nothing. And if we look at the API docs for list.head you can see that if we call it on a list with things in it it returns just the first thing but if we call it on an empty list it returns nothing. And so by exploding on us the compiler here is forcing us to handle both of these possibilities. List.head isn't guaranteed to return something so I need to handle it if it returns nothing. So in order to do that I can just change this to a case statement. This is like a switch statement in Ruby. And I'm saying that if list.head's history returns just the latest search then use the latest search in my string but if it returns nothing use this alternative string no previous searches. And so the compiler is forcing me to handle both cases. Because we're all Rubyists and we like some elegant code I'll show you a slightly more elegant version of this. We can use pattern matching in Elm to just match on the pattern of the search history and if the search history is a list starting with the latest search and followed by the rest of the list we can use the latest search but if it's an empty list then we return no previous searches. And the thing is that the maybe type that I showed you before isn't any kind of special case even if I'm doing pattern matching here if I remove that second branch the compiler catches it and says this case does not have branches for all possibilities. You need to account for the following values the empty list. Add a branch to cover this pattern. So through and through the language the compiler is watching our backs and forcing us to handle every possibility. And for this reason Elm is able to make that remarkable claim of no errors at runtime. Due to its strong static type system in which nil is not a thing. To wrap this section of the talk up I'm going to give you a sense of what it is like to build new features in an Elm app. So we'll go back to this program that we've been working on and we're gonna add a new feature to it. I'm gonna go to the view function here and I'm gonna add a second button. This button will be called decrement and generate a decrement message and right away I've got a red underline because the compiler doesn't know what I mean when I say decrement because that's a new name that I've made up. So that's easy to fix. I'll just go to my message type and say there's no longer just one possible message. I now have two possible messages that I might receive in this program. And the compiler says okay great but then you need to update your update function. And it says the pattern does not cover all possible inputs. You need to account for the following values main dot decrement switch to a case expression to handle all possible patterns. And so sure enough I've hard coded the word increment in my function definition there so I can replace that with a variable and then I'll do what it said and add a case statement here. And at this point you can see where my cursor is. The next step here would be I'd go down to the next line and re-indent it under that new branch but because I'm using elm format I can just hit command S to save my changes and it will do that indenting for me. So it's also a really nice development tool this elm format. But my code's now underlined in red so just in case I forgot what I was doing elm is saying this case does not have branches for all possibilities you need to add one for main dot decrement. So I'll go ahead and add that second branch and when I save my changes elm format puts in the requisite vertical white space and I'm done. That's how you add a feature to an elm program. And the reason I took you through this was to highlight the fact that all I really came up with on my own was adding that button. I just imagined the feature that I wanted to exist in my interface and I added it to my view function and from that point on the compiler was leading me by the nose step-by-step through my code base telling me what needed to be added for that feature to exist. And this is what adding new features to elm programs feels like and more importantly this is what refactoring in elm feels like. You can just grab a function that's gotten too big for its bridges and rip it out and put it in a new module and from that point the elm compiler will point you to all the broken connections in your program that you need to go and fix. The lovable compiler that you get with elm is like this perfect pair programming partner that is always guiding you to the next step that you need to move forward rather than complaining about the thing that you just changed. It's really nice and that is one of the two big sources of developer happiness for me in elm. The other is elm's radical simplicity. So elm has a batteries included philosophy and as Rails developers we're quite familiar with this. Rails is this big collection of lots of tools that come all bundled together, pre-configured to work nicely together so that we don't need to learn them separately. And that is surprisingly rare in the JavaScript ecosystem. If you've been watching JavaScript lately you may have heard of this term called JavaScript fatigue or read an article like the one in the background here complaining about the dozens if not hundreds of cleverly named frameworks and languages and dev tools that you need to get your head around and understand how they relate to each other and install them separately and configure them to work together and read the docs for each one separately. It can be a nightmare to try and get into JavaScript development for this reason. And if we look at the stats for NPM the node package manager it's no wonder this is the state of affairs. JavaScript is really a victim of its own success here. The orange line is NPM, the blue line is RubyGems. And I don't know if you had this experience too but when I first got into Ruby even in Ruby I was like put off by the sheer number of cleverly named gems that I needed to get to know. What is devise and why am I supposed to care and why is it called that? If you look at the graph here it's telling us that the problem is about four times as big in the JavaScript ecosystem. And in my experience that's no exaggeration. So if I'm looking to build a modern JavaScript application I'm probably putting together some collection of tools like the one on the left here. And Elm seeks to address this issue by providing all of those things or their equivalents anyway built in with a single installer. You install it once and you've got the equivalent of all of these things configured to work together. There's a single website with a single tutorial that you can follow to learn how it all works. And it is night and day different. And so as Rails developers we probably have some sympathy for this batteries included approach and it's one of the reasons I like Elm so much. Especially for bringing juniors onto our teams. It is amazing how quickly juniors become productive on our Elm code base as opposed to our React Redux code base that often can still be bamboozling them weeks into their new job. I find it a big difference. Functional programming the good parts. So this is Evan Zapplicchi, the creator of Elm. I probably should have mentioned him before now. But in the official Elm tutorial on the website on the very first page he says forget what you've heard about functional programming. Fancy words, weird ideas, bad tooling, barf. So this is an opinionated fellow and his opinion is that Elm doesn't need to be any more complicated than it has to be. And that is what he's sought to create. Elm is a functional programming language and if you've dabbled in functional programming at all that can be a daunting set of words. Because functional programming languages are often full of these weirdly named concepts. But Elm tries to be different and I'll try to illustrate how here. This is a feature of all functional programming languages including Elm called partial application. So I've declared a function here called add that adds the two arguments it takes together and returns their sum. And so I can now type add one two and I get the number three back of course. But I can also just type add one and what I get back is a function that's still waiting for another number before it can return a number to me. So this is a partial application of the add function. And this partially applied function is now a value that I can pass around in my system and use somewhere else. So for example I could write a new function called increment and increment is just add one. And it takes a number and returns a number. So now I can say increment five and I get six. And hopefully this serves to explain why functions like add that take multiple arguments express their type definitions like this as like a chain of values that you pass in one at a time leading to a return value. So in functional programming circles this feature has another name and it's currying. And currying is a weird name. It is hard to understand why it's called that. It's hard to form a mental model around this feature when you're learning functional programming. And so in the Elm community they don't use this name. They just call it partial application. The clearest label they could come up with for this feature. But features they don't need, they remove. So features are constantly being removed from Elm with each subsequent release. Here's an example, before the recently released Elm 18 it had this feature where you could put a function in between back ticks and that would let you put the name of the function between its two arguments instead of at the start of the argument list. And this let you create these readable formulations like buy milk and then dip cookie. But the problem with this syntax is that those back ticks are really confusing if you've not seen them before. To beginners, these look like strings. And so what they figured out is that they could change how and then works and instead use another feature of the Elm language that they already have, the pipelining operator. And if anyone here has played with Elm at all, Elixir at all, the Elm pipelining operator is the exact same thing. It's one of my favorite features of both languages. And so using the pipeline operator where you can still say buy milk and then dip cookie and they get to drop the back tick syntax. And as of Elm 18, that syntax simply doesn't exist in the language anymore. So wherever they can, they are removing features to make sure that Elm is just functional programming the good parts. Lastly, Elm programs are made up of just two things, immutable data and pure functions. And this contributes significantly to the simplicity of the language. So let me tell you what I mean by these before I tell you why it's a good thing. Immutable data, if I give you a Ruby app or a Rails app and I said user.update prams, probably most of the people in this room have enough experience with Rails to spot that this is an active record object and calling the update method on it will change that user object in place. And if I still wanted the old version of user, well, I better have made a copy of it before I made this method call because it's gone now. But in the very same controller action, I might also call hash.merge, which is designed a different way. Hash.merge doesn't modify the hash in place, instead it returns a new hash with the updates applied to it. And the reason these two things might exist in my program is because these are two different APIs designed by two different people with two different design sensibilities. And we as Rails developers just over time start to navigate these design differences and understand why different functions work different ways. But this is confusing to beginners and it's not an issue in Elm because in Elm, values are immutable and so I can pass my user to this update function safe in the knowledge that update function, not only will it not change that user, it couldn't if it wanted to because Elm values are immutable, they can't be changed. All you can do is create a new value with some changes applied to it. And so I know for a fact that my update function will return that new updated user. I don't have to learn that, that's just how all Elm functions work because that's all they can do with immutable data. Going back to this Ruby function though, this Ruby method call, if you know your Rails, you also know this update function does something else which is persist changes to your database. And this is what we call a side effect.  Elm functions simply can't have side effects because all Elm functions are what are called pure functions. And a pure function means that a function, all it does is calculate its return value for you. And the only information it can access in doing that are the arguments that you pass to it. And if you pass the same arguments, you'll always get the same value back and that function can't do anything else to the outside world. It can't make an Ajax request, it can't persist anything to your database. It can't even tell what time it is because that would be information from the outside world that might change the value it returns on any given day. So all Elm functions are pure functions. They cannot have side effects. That is a restriction of the language. So you might be thinking, hang on, I might wanna make an Ajax request in my Elm program. Can Elm not do that? Well of course it can but in order to do it, we need to expand our view of this Elm architecture that I showed you before. You might have guessed it from the name but HTML Beginner Program gives you this simplified version of Elm architecture and the main restriction it gives you is no access to the outside world. And you can often actually start building your app with Beginner Program and when you're ready to graduate to something that has effects, you can switch your function call to html.program and the compiler will guide you through all of the API changes you need to conform to. But when you do this, you get a more advanced version of the Elm architecture and it looks like this. You still write an init function that creates your initial model but that function can also optionally return a command to the Elm runtime. So that might be a command like say, make an Ajax request and the Elm runtime takes that command and actually does that thing for you. In the meantime, your program's view function will have to render a user interface and if you don't have any data yet in your model, then that will probably be some kind of loading view and then when the Ajax request completes, the Elm runtime will let you know about it by sending you a message. This is just like the messages you get from the user clicking a button in your interface but now this is a message generated by the Elm runtime and so you handle it just like any other message with your update function but that update function can also now return optionally a command. And this is how you, for example, kick off an Ajax request in response to the user clicking a button in your interface. And so that's what the more complete Ajax enabled Elm architecture looks like. So I'll show you what this looks like in code. We're gonna go back to our init function here and this function now needs to return both a model and a command. And if you don't want to do a command, well you can just return command.nun to say I have no command for you but if you do wanna do something like send an Ajax request, well you can call a function like http.send and I'm passing to it gotData which is the name of the message I wanna get back when this request completes and getData which is a function I will write to describe the request I wanna make. I'm using http getString which makes a getRequest expecting a string back from the server. As you can imagine there's things like postJSON and stuff like that and we provide the URL. And so all we have to do now is handle that new gotData message so we need to go to our message type and add gotData to it. And gotData is a wrapper around a result which can either be an http error if the request failed or the string that we have successfully received from the server. And then we need to handle this message in our update function. Let me go back there. So there's the update function. We just add a couple of cases using pattern matching. We say if it's a gotData with okay inside it we handle the successful data. If it's a gotData with an error inside it we handle the error. And there you go. That's how you do Ajax requests in Elm. And importantly both of these functions are pure functions which means you can call them and they will not actually generate an Ajax request. All these functions do is generate a command. They return a command. And what causes an Ajax request to happen is when you return that command to the Elm runtime. But you can safely call these functions anytime you want. For example in your test suite these functions are really easy to test. All you do is call them and see if they give back the command you expect. And because no Ajax request will actually occur these are really quick, these are fast tests and you don't need anything like mocking in your test library. The Elm test library simply doesn't support mocking because it's not needed in a world where all of your programs are made up of immutable data and pure functions. So that's Elm's radical simplicity. And just to wrap up here we'll take a look at Rails and Elm because they have some similarities. Both Rails and Elm have this batteries included philosophy and they both pride themselves on their clean language syntax. But there are some trade-offs as well. Ruby on Rails is a dynamic, object-oriented and very flexible language and that's what you want in your backend language. You want a general purpose programming language that could conceivably do anything. And we've seen some talks at this conference showing just how versatile it is. But on the front end in the hostile environment that is today's modern browser and might be sharing space with ad blockers and who knows what else, you want a simple language and one that gives you as many guarantees as possible. And so Elm has chosen this trade-off and it has designed itself to be static, functional and relentlessly simple. And because of these characteristics Elm can give you those guarantees that let you develop with confidence and provide developer happiness. And finally there's at least one clear win I can call out and that's Elm's amazing error messages. I think every other programming language could learn at least one or two lessons from what Elm provides you when you get your code wrong and I'd love to see Ruby adopt some of those. Now if you're wondering how we bring these two worlds together, how we integrate our Elm front end with our Rails backend, well I will refer you to this talk coming up this afternoon by my colleague, Joe Cranford. She's talking about React on Rails and the journey we took adding a rich front end to an existing Rails app and all the same plumbing and machinery we use to integrate our React front ends with Rails, it's the same stuff we're doing for Elm and so if you're interested in how that works please come along to that talk, I'm sure it'll be great, I'll be here too. And with that I will thank you for your attention and take any questions.


Welcome everybody! It is our release party after an interesting release. We got it out the door everyone and it's really nice and solid and we're getting a lot of praise. So congratulations first of all. Thank you everybody for all the work you've put into Fedora Linux 39 and all its different components and like oh fireworks nice and yeah everything into Fedora you know over this whole last 20 years so it's amazing. Thank you again. Shall we get started with the program Justin? We shall. Let me go ahead and go for the share screen. There we go. Is it all visible and clear? It is. All right. Welcome to the party. Dances and everything. Yes that was a cool one from Emma. So a quick introduction of your hosts for today and tomorrow. I'll pass it to Matthew first. Hi it's me. I am Matthew. I am the Fedora project leader. I've done this for almost a decade now. Before that I worked at a couple universities on various things all Linux all the time. I've been running Fedora workstation I think since 20 and then before that I was running mostly XFCE and then before that window maker but I think it's been my exclusive operating system since 2006 I think. So I've been using it for for quite a while. I've been part of the project since before I started at Red Hat and I'm really glad to see a lot of familiar faces from way back and also new people here. It's nice to see the project thriving and growing even after all this time. That's all about me. Yay Eva. Thanks Matthew. Yeah I'm going to paste in how you say my name phonetically into the chat but I kind of answered most things so it's not a problem if you mix it up. But yeah. Am I saying it close to right? Yeah no you're just that on. Okay we've known you for a while so. You're actually now my manager too so I would expect you of all people to get my name. But yeah no I'm Eva Maloney. I have the privilege of joining the Fedora project as the operations architect. I'm in there all just shy of three weeks now or so. It feels like a lifetime because I've always felt very at home with the Fedora projects but it's also very interesting to see kind of the inner workings of the project too. You can see it anyway there's no behind the curtain really but it's it's cool to see how an open source project actually conducts itself and be paid to be a part of that. So I joined the I'm actually I have a slightly different way into the Fedora project than Justin and Matthew. I'm through Fedora from Red Hat so I'm usually we see a lot of people coming from the outside in but I'm actually kind of coming from the inside out instead which is which is interesting. Yeah I've when I joined Red Hat I was the the the Waterford Office coordinator and then I joined the community platform engineering team as just a bits and bobs of everything. Somebody who needed to help organize things. Apparently I am organized but that's when I got to know the Fedora project and I have loved it ever since and like I said I'm just delighted to actually be now working full-time in the project alongside some excellent folks. I think we need to have the airport part in your bio so so relevant. If you saw this airport it's like a garage it's tiny but there's stories but I do have a session tomorrow of the Meet the Operations Architect the spoiler it's going to be a bit of an ask me anything a bit of a chat this session so like feel free to stop by if you're available tomorrow. Yes I will make sure to get some airport stories out of that. I've been plenty of airport ones plenty of horse ones. Go to be here. Very welcome here and I'm Justin I'm the community architect with the Fedora project I've been around in the Fedora community since 2015 I guess so a little bit over eight years and it's also been cool even though I've been around half of that 20-year ish half ish of that 20-year time it's also been cool to see how how the community is always growing and evolving and changing over the top overall this time and it's really an honor to to be here and be a part of the Fedora community as we celebrate this pretty major milestone here after after 20 years. Seeing all the stories that have come in for Fedora Appreciation Week which if you haven't checked that out on the community blog you should definitely go and take a look at the the series we've been running all week with contributor stories and photos from across the 20-year history that folks have been sharing on Fedora discussion. It's been really awesome to see all those stories come in and helps remind me about all those important things about why we do what we do and why we come together and celebrate like this as a community. So I'm happy to be one of your hosts for for this week so before we get too far into the announcements we'll start with the important things first I know many of you are probably ready for the badge so we have the special edition release party and 20th anniversary Fedora badge which you can claim using the QR code or you can also find it on the reception page of Hopin as well but definitely don't miss out on claiming that special edition version of the badge. Thanks to Chris, Marie and Sandro for wrangling the logistics for getting the badge out. Apparently I am in the top 10 of badges now for the first time ever which I'm very proud of but I think there was someone who's like one badge behind me so I'm gonna quick get this to make sure I don't get displaced. You can also find the schedule for today it's also on the Hopin reception you should be able to find it there but you can also find a wiki-ified version of it on the Fedora wiki if that is easier for you to read you can also find the UTC and US Eastern time zones for all of our sessions there today and lastly we also have a code of conduct for all of our virtual and in-person events you can find it here and open up for the full code of conduct. Also wanted to slip in some special thanks for some folks who did some awesome work to help wrangle the event together Emma Kidney and all the design and graphics and images that you're seeing around the release party around Hopin she was a big part of all of that IFA for being with the host but also helping wrangle a lot of the sessions for all of the speakers and folks who are doing topics here uh shout out to our our mark I see Daymar's message in the chat shout out to our marketing team Joseph and Daymar who have also been helping promote this content for the release party and Appreciation Week all week as well as well as some of our other folks there as well on the other channels and lastly a big thanks to all of our amazing lineup of speakers and organizers of our social activities that we have today and tomorrow. Oh I want to make a plug here too which is this is community driven as you see uh I think we would like to have more people involved in the release parties so if this is something that's kind of interesting to you if you're having fun here you know okay I could help um this is a easy way to get more involved in working in the project um you'd be incredibly welcome talk to IFA Justin me um and we'll we'll get you hooked up. So on that topic of socials we will have the hallway track going all week but we'll also have a special session tomorrow on Saturday for an Among Us round uh so that'll be hosted by the Fedora Pride community and you can get some of the details for how to install um if you can you can get it for free on mobile on Android or iOS or you can use Steam and you can also play it on Linux there as well. More instructions you can find on the QR code it'll take you to a wiki page with more instructions. I'm good I won't be there because I can't handle betrayal just too much. Yeah so I definitely hope to see some other folks if not Matthew in the in the ship. I'll be around I just um you know a watch. So a big thanks to our Fedora Pride folks for helping organize and wrangle that social tomorrow. Now on to the announcements uh key updates things that are happening around in the community. Matthew you want to start? Yeah we if I already introduced herself we're doing this a little bit out of order but I do want to give her a special welcome into this new role as operations architect. Basically the job is to help keep all of our organizational stuff actually organized. Um I have some strengths as a Fedora Project leader as I guess all those badges I do some stuff but keeping everything organized is not one of them so we're looking very much forward to having Ifa help us make everything you know go like clockwork and things that are not working as smoothly as they could uh it's her job to make them better so uh I'm looking forward to a lot of a lot of exciting things in the next few years here. Thank you Ifa for joining us and I'm really glad to have you here. Thank you again and please send me feedback whatever I'm I'm an open book I can take it so I'm the good and the bad. So let me tell this story which is the thing that really impressed me about Ifa what I'd met her before as part of her job at CPE but um we had a Fedora Council meeting in in Berneau and this was there were some things were not going so great between the project and CPE and Ifa came in to give a little presentation about stuff in CPE but had kind of no idea what um upset people were under the under the I don't know context is right yeah and so she came in for a friendly little presentation and we came in to give her what for and really just uh it wasn't intentional at all but we I think we were all pretty like a lot of like questions and anger and things and Ifa handled that with such grace and you know we probably could have been a little more gentle from the Fedora side but there was a lot there was a lot and that really both handled that so well and then really helped improve the relationship and made everything you know help help build bridges up and make things be a lot better and I think that's a lot of why we've got a great functional relationship with CPE today so thank you very much for that and yeah she could take it I can't sorry for swearing but my effort is like the world is full of dickheads there is really no need for us to be like that to each other yeah excellent yeah this is this is for me too here um so in Fedora um although some of us have the privilege of being paid full-time on this that is amazing we also want to make sure this stays a community run project it is not something where just red headers get to make all of the decisions and so to do that we've got a community leadership structure which includes some positions which different teams in the community nominate someone as you know some people who are active working in a particular area and then we also have a lot of positions which are elected from the community at large anybody can run and anybody can be elected as long as you're an active Fedora contributor and so we have three bodies that have elections open on Monday one of them is Fesco the Fedora Engineering Steering Committee and as the name kind of suggests that steers technical decisions one of the biggest things is when there are changes people have probably seen the change announcements going by like when those happen Fesco looks at community input looks at the technical thing and weighs whether that's something we should do or shouldn't do so that's a very important role and we've had some big uh controversial things coming up and I'm sure they're in the past um your voice there is really important please make sure that we have good representation on Fesco uh it's not just the change process there are other technical things that Fesco makes decisions about and you know ultimately a lot of the other engineering teams are connected on our art chart which we'll see later in into Fesco the other committee is Mindshare which is in some ways the other side of the chart things that help bring people into the project help people understand what Fedora is help represent Fedora in different ways and I I Mindshare is maybe not the best name but we've tried many times to come up with a better name so that's basically that part of the project and this team also helps oversee budget decisions for a lot of like community travel and community events if you need money for something or money if money could help you do something better for Fedora Mindshare is the group to talk to you um and I think we're going to invest some in as a council in trying to help Mindshare be more active and functional over the next year so uh this is a great time to get involved especially if you've got some energy for that it's a really important they're important leadership area in the project and then finally the Fedora Council that is our top level governance body and leadership body and the main role there really is to set and execute on or make sure that the Fedora strategy so it's something we've been working on strategy 2028 where we want to double the number of contributors who are active every week how are we going to do that we're working on it we could use your help please run for the council if you have ideas there it's both a kind of talking about the plan and and developing that plan but also people on the council will also serve as executive sponsors for different initiatives and making sure that those are going smoothly in actual actual practice rather than just theory so please run again run for council if those kind of things are important to you anything i'm missing here thank you got it all right elections what does this badge go or the qr code go to that goes to the program management docs for page for the election excellent um yeah slim book um we have an a slim book and another slim book announcement coming up soon but i don't think it's today but stay tuned more slim book stuff this is a small company that makes laptops that um are made to run with linux they have a basic commission of making it easier to people to get linux and they came to us and said what if we made a fedora special edition and we said awesome let's do that and it came out very beautifully um and if you are a fedora contributor i believe this is um do you remember the threshold for this i uh if you i think it's done if you have a certain number of fedora badges you qualify for a discount here so uh that uh released party badge is maybe an important step if you haven't collected enough badges yet here no threshold okay sorry uh you need to have a fedora project at our email address which you can get by being an active contributor and being a member of at least one team in the project i believe i like the badges idea though all right this this address is good too they're very generous oh yeah here's a thing um justin i think this one is quick but just an acknowledgement that some of the infrastructure has been a little tricky in the last couple of months so um i think it was probably sometime in august or even september now that uh there was a so many of us were using a bridge to connect from libera chat irc over to matrix but for the last month or two that bridge has been offline uh on the matrix and uh due to some security issues or um i can't remember the exact context there but this this this link will take you to the community blog post that shares more details about that we just wanted to acknowledge it that i know it's been painful for a lot of folks and there's kind of a split in some rooms and some teams but it's something that we're looking at both monitoring the situation and also trying to find ways to make it easier to navigate the chat universe in fedora but just wanted to acknowledge that uh it's something that we're aware of and we're we're monitoring the situation and hope to have more to share soon i would be a little stronger than that we need to at some point soon come up with an official are we going to move everything to matrix or are we going to keep it split or are we gonna do something else um and uh we need we need to pick something um so uh we that's the subtext yeah i want to bring the subtext to the top also am i getting like color bars flashing on my video that's exciting um tv test pattern excellent can i just say before we move off this i just want to say thank you to um to neo greg ryan lurch kevin there's folks that are working on a bot that will make meetings and is making meetings easier to run in matrix should that be the platform of choice too so thank you i know there's a lot of people in a zod bot development chat room working really hard to get that up and running so yeah actually if you like playing with bots and actually this is um this is an interesting easy way to if you noticed a little bit of programming um bots are a fun way to do things that are cool and really can um i don't make a lot of difference in a project really because of the functionality they can bring for example there's a really cool feature where you can give each other cookies if you see somebody doing something that you like you can give them a little cookie reaction in in matrix and the bot will see that and then count up the cookies and gives you more badges so this is a neat little reward system we've got that's all built with badges and are so built with bots in matrix there was an irc as well but uh this has been a pretty neat project need to see people come together to make all this stuff work for matrix pretty quickly once the bridge was broken so this is another great place people can get more involved and that we already see a lot of amazing things in the fedora universe happening this is a good reminder that if you have not yet added your matrix id to your fedora account now is a good time to do so so you can have all the fun with all the cookies and all the bot commands in on matrix if you use your fedora i am like if you log into chat dot fedora project or that should be already set but if you come have a different matrix account you want to use make sure that's hooked up yeah i think you still have to add it for really oh we should fix that i'm going to go make a file ticket so other other updates and announcements this week as part of the 20th anniversary we have been brought back fedora appreciation week from our 15th anniversary but this week it's not too late if you'd like to share a story or photos of other memories in the fedora community or write an appreciation note for someone else you can still get in on the fun we've been running a series in the community blog all week that highlights some of these stories and all the photos that people have been sharing from the last couple of weeks so do take a look and check out the series you'll get a pretty interesting view of of our past 20 year history um and it's not too late to get in on the fun so there'll still be two more days until uh saturday and sunday so check out the qr code for more details on how you can be a part and earn another badge for appreciation week also want to give a shout out to an october we had the fedora design team and the creative freedom summit group run a free tober art challenge uh so across the month every day had a different theme artists could share uh their artwork their daily sketch inspired by each daily prompt uh you can find more details about that and find some of the posts in the discussion thread this qr code links to also a note around the creative freedom summit is the cfp is open right now for the event in january so if you are doing anything with creative free software tools and you want to share your workflow your best practices or just talk about something that's really cool and interesting in the design end of the free software world of tools make sure you get a submission into the uh the cfp before it closes on november 24 and as was foreshadowed earlier about the org chart this isn't exactly new new but uh earlier this year since our in between since our last release party our organization chart which is kind of a big giant map of the fedora community got a major update from marie nordin uh so if you haven't seen that org chart yet do take a look and check it out uh it's really it was beautiful before but now it's even more beautiful and it has a lot more teams and bubbles on there for new and emerging things that have come up in fedora since it was first created back in 2021 so do take a look it's a pretty nice visual actually of looking at the fedora community because it's like a very bird's eye view high level map of everything that happens in fedora and lastly it's not too late to invite your friends along too so if you have anyone that wants to join in and participate in the release party registration is open uh we'll be here uh for the rest of today and for tomorrow as well you can again find the full schedule on hoppin or the fedora wiki page quick note on swag as well we have a really cool swag vendor based a small vendor in hungry uh from hello tux uh there is a special fedora discount if you use fedora five at checkout you will get five percent off your order uh but they have some really nice embroidered shirts like these are the really nice quality things you know they'll survive a few washes it doesn't all wear out after you know like a screen printed thing tends to so they're very high quality uh shirts and merch that they have there so do take a look at that if you want to pick up your own uh ambassador polo or not really ambassador polo but a polo shirt yeah the ambassador polos are special um but or jackets or hoodies i think they have some they've got t-shirts too now um it's i'm going to order one of these t-shirts i don't have that really nice i feel like i need to i need to grab one i've been meaning to do it for a while and there is one more thing before we get into the rest of the agenda for today because i know we're getting close to time but it's related to a flock announcement is that we can confirm that flock will be happening in in mexico next year in august 2024 uh it'll be in person again just like it was uh this year and we hope to have exact dates soon the hope is to have everything announced before the end of the year so just keep an eye out for more official news and updates on that but otherwise we're hoping that we'll get to see some of you in mexico next august yeah this is the first time we've been back to north america in a long time and we've never we've had there's been fudcons but we've never had a flock event in mexico so i'm really looking forward to this i'm at flock in ireland there were some really awesome folks from the mexico fedora community that we are really excited to have on the ground with us for this one so it's going to be amazing and with that thank you all for being here and joining in for the release party today we have our next session that is going to start here in two minutes uh so we will go ahead and hop off the stage here and we will bring up the next speaker for today otherwise enjoy the release party and uh in the 20th anniversary celebration


So we have 37 minutes left. I want to make sure that we have some time for people sitting in the room to be able to raise questions. So what I'd like to do now, if it's possible, is read to ask each of you a question, which I'd like, if it's possible, to answer it very quickly in two minutes, if you could. And the first question I have is for you, Madame Thuray, which is, you heard this vision of multiple frameworks and coexisting. In some ways, you have some of that already. From your point of view, would that be a good outcome, or would that be a bad outcome? Well, definitely. I spent now some years in the multilateral organization. I was a former UN personnel for many years, went back to, I mean, went to government. And I came out of this process thinking that you need frameworks, for sure. You need many frameworks. And I always speak from the point of view of Africa now. I mean, after having been global now, focusing on Africa, the richest continent, by the way, by any means, and the poorest. So whatever framework that will deal with that issue, we're gonna be part of it first. Second, I'm more interested in, I think that's the feeling in the continent that we have to take business into our own hands. How to strengthen African Union, how to make sure that we are self-interest driven because that's how the world works. And we are going to be more forward-coming in terms of defending our interests, being very strong on whatever issues and making our own points. I appreciate it when you talk about, sort of forcing some countries to take part. That was the case for the Russia-Ukraine war and most of African countries. Look at it as a white man's war somehow and just didn't take it position. And that's our rights, like everybody does. But I think the questions that needs to be, reflect upon is how are we going to make sure that we move forward peacefully, peacefully to a more equal order. An order that respects the environment that put women also on an equal footage. Nobody brought the issue of inequalities and making sure that young people are part of it. And that we need for the corporations. I think that's very important to bring that upon. To look beyond profit because we are a profit-driven world as we speak. So it's not enough anymore. So do we want to go through changes by revolution or do we want to be smarter and put in place equal frameworks where true discussion comes out of what we want to build for the future? Every time I come in this country, in the Emirate, I remember that Dubai 100 years ago was a small Bedouin village. So how did change occur? It means that it's possible. It means that you can accelerate change and then you can have a more sane discussion because we are having an insane discussion because you do have a pool of very wealthy group of countries in front of very poor countries. But within those countries, you do also have that huge gap. I was visiting south of Senegal in the mining areas just before I came. I mean, it was terrible. You do have very big mining companies taking gold out of the country. And they were not even capable of building a decent road because they don't care about it. They just have an airport. They can fly a private jet. It looks like the world we are in. So how are we going to take a pause and then come back to what the United Nation was supposed to be as a promise and share the common interests as human being? Other than that, people are what I'm seeing now very much even within the intellectual elite is let's focus on our own interests as the rest of the world is doing. Human rights, okay, we can talk about it very globally, but it's not a reality. So that's how we look at it. So what are the solutions that we wanna come up with that are human rights-centered, that are equal and preserve the environment beyond just the idea of pursuing profit? Thank you very much. So very clear message that you want to be clear about your own interests and engage in multiple conversations, multiple frameworks, but be clear about what is to the benefit of the continent and organize yourselves in a way to better represent those interests. And in that context, I assume that you and many leaders in Africa would welcome the decision about making the African Union part of a permanent member of the G20. I think that in some ways is one forum where that could happen. I want to turn to you and ask you a question. You sort of said, you've heard this vision about your four different scenarios. To what extent is where you end up across those scenarios a function of the relationship between the US and China? How much is that going to drive where you end up and what's your quick response to that? I guess the relation between the US and China probably is one of the most important relationship which will drive many things including geopolitical tension. Although European countries say to China, don't look us through US. When they visit US, they say to US government, don't look us through China, but actually the US-China relationship now is kind of play very important role. The good news is in past several months we can see the tension between US and China literally reduced, may not be improvement, the tension being reduced. I think that's good for US, for China, for rest of the world. But at the same time we should be sure, we should understand that the policy US government adopt to China call small yard hall fence wouldn't be changed. So competition wouldn't be changed, but the tension has been reduced. That's my conclusion. Thank you. Thanks for being so clear about it. And of course you have to see what is the mechanism by which the small yard stays small because the internal pressures in all countries will be to make the yard bigger without worrying about the height of the fence. Now I want to turn to you and ask you a question which is, let's assume there's some continuing improvement in the US-China relationship, but still tension and particularly when it comes to setting up global rules, to what extent can middle powers create a set of rules that govern relationships among them, even if the largest economies in the world are not so actively participating. And I'm thinking of dispute resolution in the WTO where the formal process is frozen, but there is a parallel process that has been created by middle powers which works to basically govern disputes as if it was within the WTO more or less. To what extent do you think that's a model that can be used in lots of different ways to provide frameworks for the world? Thank you for your questions. In fact, what you mentioned is ideal, but in reality it cannot be applied. In fact, the US-European Union and China, the only powers who make the regulations without them is not possible. You see, I participated in the Uruguay-Law negotiation in the 80s, 90s. It was the fact of bilateral negotiations between European community at the time and United States despite more than 100 countries participated. Now the landscape is totally changed, especially with the joining of China to the WTO in 2001. So I think it's very important to persuade the middle powers, including Korea, Japan, if you say the European Union is a middle power. Okay, the UK, Canada and other countries to persuade both China and United States to participate in strengthening rule-based international order because the strengthening rule-based order is the only solution to their dispute. Without clear rules, they cannot make any settlement. So I think the middle powers must enhance their efforts to persuade China and US, respectively, to honor the already established commitment and agree to strengthening the rule-based order. Thank you very much. That's also very clear. So the middle power's role is not to create a framework that works for them because from what you're saying, it doesn't work without getting the big United States into it, but they can play a major role in helping to persuade. And I think that's quite relevant for a conversation we'll have later about climate change. We're going to be having COP here in a few weeks. And is that the approach one has to follow also in COP? And here I want to come to you with a question which is you had a very long list of things that need to be fixed in the world order. We all have. And everybody will add to it. If we go around the room, we'll add another 20 other things to this. And yet, the first point about mutual interest. So which of these lists on your list, what would you say on which we cannot make progress without international cooperation? And it is in our mutual interest to create a framework for operating them. And then there are other things where it would be nice to have cooperation, but the world will struggle along without cooperation. So what's your sort of priority list of things? Well, there are many ways to address that question. First, I'd be tempted to say that whatever I think doesn't matter, because what we need to do is reach a consensus. So for that to happen, we need to discuss with others. And I think the priority today is not to pick an issue and a solution. It is to meet and discuss and see where national interests are and how they can be combined to define a common good. But of course, as an analyst, I would be tempted to answer differently and say there are major issues today that cannot be addressed without collective action and certainly climate change is one. So it's going to be a mix of these two approaches. I think that we come to the negotiating tables with ideas, with convictions, but these convictions can reach nothing unless they are shared by others. So it's part of the negotiating process and to negotiate you need to understand and try to know more about the other parties. And that's why I think that more research, more knowledge is needed to understand our potential partners and allies better than we do because we are working with stereotypes and that is not going to make the negotiation easier. Now there is a third way to address your question is to say that we cannot progress without a common vision. And I believe that's true and I believe that part of the negotiation is to reach a common vision. The difficulty is that when you look at history, common mobilizing visions, shared visions tend to come out during wars. So a big question today is whether, it's what William James would have called in the early 20th century is a moral equivalent of war. Where is today's moral equivalent of war? Sustainable development goals? Climate change? Not even. The net zero economics? Not mobilizing enough. So where is this project that can be mobilizing enough to create a shared vision? And I don't know and that's what I think makes me afraid because if we need a major crisis of major proportions much bigger than when we have experience or a big war to reach a common vision, then I think that it is certainly not the preferred scenario. So I'll stop there because it's not very optimistic but I believe that the pessimism of analysis can lead to the optimism of action and I think that we need more multilateral discussions and even when summits don't reach a conclusion it doesn't mean that they are not useful or successful. Thank you very much Pierre. So this is getting a little somber towards the end but that's enough. So do you agree that we need common vision and understanding each other before we can actually reach agreements on things that matter to us and maybe quite hard to get to a common vision without more of a crisis? Do you think that it's possible to isolate one or two areas where we really need in our mutual interest without a common vision about the world and where it's going still make progress? How do you see this big vision, big bargain versus let's pick a few things? It's a good question. But I would say that listening to the discussion I reflected on the current situation in general and I would say that to my mind we now are in a situation when a lot of old and fundamental processes are still evolving and we don't see the end of this trend close enough to realize whether we can orchestrate a new order or not. So first of all we have seen since the beginning of the 21st century the intensification of military conflicts in many parts of the world and in any case I would say no political goals were really met with armed interventions. The economic effect was very devastating for many countries and this new circle of war like the war between Russia and Ukraine will also contribute to the understanding that the military interventions and the military confrontation is ruinous for the contemporary world and it just destroys the economic wealth and doesn't have any positive consequences because in the 17th, 18th, 19th century wars they deliver economic benefits for the victors. Now it is not the case. And before this would be really understood I think there is no little chance for new order to exist. The second point is that every time it was spoken about economic order and the new economic reality it was when the new economic trend emerged. For example, in 1960, 1970s the raw resource production producing countries they became very high-flying in economic sense and the very concept of new international economic order was put forward in 1971 but 15 years later all these countries were ruined by the huge debts and they were built out by the United States and many other developed countries. The same situation was, as I already mentioned with the Soviet Union and Japan in the 70s and 80s there were also high-fliers and then a huge systemic crisis emerged. So now we have this competition between China and the rest of the world and I think we should wait for another, I would say, 10 years to understand what the perspective for China is. If China comes to the same result as Japan in 1989 by the end of this decade it would be an absolutely different perspective for new economic order to emerge. And the last point which the colleagues said were interesting was the problem of taxation and the problem of offshore safe havens. So in this case I would say that this tax system which exists in the whole world these days actually has its roots from the early 20th century. And all the tax system was designed for either mercantilistic economy, economy of trade or for industrial economy where everything was reproducible and was server and the stock market, the capital gains were not so much anticipated. Now the creative economy of the post-industrial world of informational technologies creates a lot of wealth and this wealth creation is actually a major engine for economic growth and prosperity. If we tax personal incomes or capital gains as we do for last decades it would stop economic growth in the most promising countries. So my point would be so for challenging this offshore economy some countries, wealthy countries should switch from the taxing the incomes to taxing the consumption and this may change immediately and generally the whole economic construction, the whole economic framework for the world because the first country that changes this system it will get enormous competitive advantages upon all others. So I would say there are too many trends which are coming from quite distant past which are still dominating the global economic order and many of them can evaporate and can be changed in coming decade or two and so afterwards I think the perspective for recreating this economic order would be much more realistic than they are now. Now we are in kind of a tunnel vision and we can jump out of it. Thank you. So we should wait for a decade or so until things become clear and I guess my question to you is can we afford to wait? No, I don't think we can afford to wait but I want to clarify something about the idea of setting priorities. That's all good but unfortunately we cannot lose track of the bigger picture and we need a holistic view so that the impact of our decision is clearly assessed so that there are no unattended consequences and if you take the example of the carbon tax that's going to have an impact on a single man struggling to raise a child who needs her car to visit patients because she's a nurse. The sad truth is that today governments don't have the ability to target specific, very specific categories of population. You can do it in broad terms but if you look at how much money we wasted during COVID or during the inflation period at the start of the Ukraine war it tells you a story that is a bit sad so we really need to raise our game in terms of pricing externalities I think that's essential and one area in particular if you look at the work the latest report from the Intergovernmental Panel on Climate Change there's a lot of debate on whether new projects in all fossil energy should be allowed and you see a lot of arguments from here and there no consensus and I think that's again a lack of fine-tuning or findings and I think it's very important that NGOs in particular become more involved, companies as well, to build stronger data to help governments make better decisions. Thank you very much. Of course every politician that tries to price externalities finds that they run into immediate political difficulties I guess the question for us is also going to be to what extent are the political systems in our countries in particularly the rich countries capable now of taking the decisions both nationally and internationally that everyone here is saying are essential and I think to what extent is the roots of the international economic disorder actually in national economic dysfunctionality and national political dysfunctionality in so many countries. Okay I think we have time for, we have 13 minutes I want to take two questions and in the strictures from Madame Tourier I want to go to the people who are under-represented on this panel which is young people and women and also not men and please be precise and concise if you can. I will try. Hello my name is Basil Cotts I work at the European Commission thank you so much for all of your insights you've mentioned that the global economic order is forever changing and is impacted by many factors my argument is that and you mentioned it as well it is impacted by the evolution of technology and innovations my questions to you would be in your opinion do you think that's the strategic use of innovation's new technology in our era of global interconnectedness will lead to a more stable economic order or in the other hand can lead to disorder of the global economic system thank you very good question so is the technological progress going to lead to more stability or more instability and you might also ask within countries not just international anybody else have a question I see no other questions okay in that case who would like to answer that question do you think that technology the pace of technological change and particularly artificial intelligence now is this going to make international economic relationships work better or more unstable you won't have a view on that I've tried to ask a chat GPT but I couldn't we could ask chat GPT for the answer I think it's a tough question and it can go either way really as I said in principle having more data more functioning of models can help educate all of us and hopefully come up with mutual decisions and that go in the right direction and that creates sort of win-win situations at the end but you know technology can also create some new gaps between countries on balance, on balance that was a very chat GPT answer though right because you're saying it can be this can be that are you feeling positive about this or you think I'm more worried than I am feeling good about it I am an optimist who worries a lot but I'm too right yes definitely I think we do have the example of the Arab Spring how much internet and technology play come into play so the end of the process is another story but if you come back to Africa definitely it has raised the level of consciousness more participation of young people and women and that's a good thing because I'm a pro-disorder type of activist I mean a disorder that would lead to a better order so for that sense in that sense I think it's a good thing that people get more aware of the issues of the scandal that's one thing so it forces government even to be more accountable on the issue they deal with and I think it's very good because to get to a new order you need some disorder and maybe you know technology is going to play a role of course there is a downsize of it we do know that a message of hatred and things like that that we know but globally I think it's a good thing it's a tool that gets citizens to participate more especially in an environment where they don't have much access politically or economically so it gives more eco to the voices of those who are left overs on the side of the road Thank you very much A bit of disorder Yes I would like to address the question raised from the floor with regard to technology development I think it's good or not it can be good or bad but I think they change the priorities my experience in negotiating Korea-US FTA 2007-2006 at the time with regard to telecommunication most important issue was how to liberalize facility-based telecommunication services but after that with the OTT service in place facility-based telecommunication services is not so important value-added services are more important no one talk about facility-based telecommunication services or OTT at the time we did not know what is the OTT and at the time the OTT doesn't enter into force so we resisted the US request to liberalize facility-based telecommunication services but we fully liberalized value-added telecommunication services and OTT like Netflix is come over to the world through facility-based telecommunication services so the development of technology can change the priorities in internet and trade agenda but it can be both good or bad thank you Pierre I agree with what has been said I personally as an engineer see the potential it is in technology I think there are a lot of promises in technological progress it is the responsibility of human beings to give a moral dimension to technology use and so technology is not a substitute to political will and to thinking about the moral dimension the ethical dimension of technological change what makes me more optimistic than I was earlier is that there are international discussions about that dimension especially as far in so far as artificial intelligence for example is concerned so I think that technology can bring people together to discuss substantial matters and that's a good news even in the current context thank you very much I guess the progress of science generally is good but it's implication it's uncertainty the movie really release Robert Hem disclosed these fundamental contradiction I guess that's a very simple question simple answer thank you very much any thoughts on this? I just think that first of all technology brings chaos because it undermines some old technologies some established relations and some established visions so therefore every kind of technological breakthrough is connected with increasing chaos but the the mission of innovators is to do what they are doing to increase the chaos and the mission of politicians and the mission of intellectual lead is just to combat this and to put in some framework to put some limits to this so this is a kind of associated change as it is organized so I definitely oppose the idea that we should regulate and limit the creative knowledge and the creative expression in any way thank you very much I think we've come to the end of our time and I don't think that's a conversation that is feasible to summarize so what I will say though is that I think what's very clear from this is that I don't think that this hankering for preserving the order in which we used to live is actually a meaningful approach because every time we start talking about it we discuss mostly the so many problems that the order that we have has created and I don't think we yet have agreement on what is the kind of order where we're going to where we would like to end up let alone where we are going to end up and I'd say there's some quite open questions about how long and how disorderly the transition process will be and whether during that transition process we can make progress on some of the common challenges where we can't afford to wait for the lack of clarity to be resolved because it will just end up creating disorder of a whole different magnitude so I want to thank all our panelists for their insights I want to thank you all for your presence and I'd like you to join me in giving them a round of thanks please


Institutionally, the arbitral tribunal is often made of three or five arbitrators. Sometimes states agree on a single arbitrator or umpire, but this is quite exceptional today. Three is the default number under PCA rules. Each party has the right to appoint one arbitrator or two arbitrators if the tribunal has five members. Parties may not appoint one of their national as arbitrator. The presiding arbitrator is then appointed by the party appointed arbitrators. And if they fail to agree, or if one of the parties fails to appoint its own arbitrators in due course, the procedural rules agreed upon by the parties usually provide that for instance the PCA Secretary General or the President of the International Court of Justice or any neutral authority like the Secretary General of the United Nations has the power to appoint the missing members of the tribunal. Once the tribunal is constituted, it conducts the procedure according to the rules of procedure agreed by the parties. And very often the respondent will want to raise jurisdictional objections and the procedure will bifurcate in the sense that before hearing the case on the merits the parties will exchange arguments in writing and orally about the competence of the tribunal to entertain the dispute and the tribunal will have to deliver an award about its jurisdiction. An essential principle in that regard is that the tribunal always has what is called the compétence de la compétence which means that even if it has no jurisdiction to hear the claim on the merits, the tribunal has at least the competence to decide on its own jurisdiction and to decline it eventually. If it decides that it has no jurisdiction, that's the end of the matter. But if the tribunal decides that it has jurisdiction, then the case proceeds to the merits and during that second phase the parties will present their views in writing and orally about the merits of the claims. And of course the parties will submit evidence to substantiate their claims and sometimes experts or witnesses may be called in. The awards are final and binding on the parties. Those states must consent to arbitration and because arbitral tribunals are often called when the procedure bifurcates to assess and check their jurisdiction, states rarely fail to implement binding awards. And in this course there is no need to enter into the details of the possible annulment of arbitral awards but suffice it to say that the grounds for annulment are usually considered to be rather limited and limited to excessive power that is going well beyond what was agreed under the Compromis or the Compromissory Clause. Corruption of a tribunal member is also a ground formality or sound departure from the procedural rules including the failure to state the reasons for the award. The parties must bear the costs of arbitration including the arbitrator's fees and this is a disadvantage of arbitration but the advantage of arbitration is that it can be tailored exactly according to the needs of the parties. Arbitration is flexible and fairly speedy and the parties may agree also to keep it confidential. And this latter aspect may sound unacceptable at a time when transparency is rightly praised as an essential requirement in public affairs but confidentiality may have the advantage of bringing the parties closer together in the course of the proceedings. If the dispute is politically sensitive for the domestic audience and if the press is present in the room the tone used by states and by their councils can be very different and less compromising than if the proceedings are kept confidential. Most of the time arbitral tribunals are established to settle one claim and the arbitral tribunal is not permanent. However some arbitral tribunals have been established to settle hundreds of claims and have existed for decades and most notably this is the case of the Iran-U.S. claims tribunal established under the Algiers agreements of 1981 to settle the claims resulting from the Iranian revolution of 1979. The tribunal has finalized nearly 4,000 cases that mostly related to claims by individuals and corporations but it must still decide on large and complex claims between the U.S. and Iran and it still exists. When an arbitral tribunal serves over such a long period of time it develops an institutional history and also judicial consistency. Such consistency is not necessarily present between the awards rendered by different tribunals in different cases and in different contexts. However some awards are considered as landmark cases and decisions and they are referred to in many proceedings.


Guardi's been working walks. I got a couple of walks. You know, I think just our plate discipline has been great. You know, Stanton's been barreling up the ball. You know, kind of looks just like his playoff form that he was last year. You know, he's looking great. You know, I think just obviously the guys came in the camp ready to go. You know, that's the biggest thing I've noticed is guys came in the camp ready to go. You know, I haven't seen those games where guys are trying to, you know, really work into it or see pitches. You know, guys are swinging them bad and they're getting after it. So, you know, that's what I've noticed in a couple of games I've played is, you know, the guys are ready to roll and their focus. You just see this different, you know, different level of attention to detail, I think.