 or all manuals that refer to a certain error constant. Such search keys can even be combined. So if you don't know exactly whether it will be a function type or a variable type or a function argument, your search term will show up in. You just give multiple macro names and search for the same keywords and all of them at the same time. If you don't know at all what kind of thing you are searching for or how it might be marked up, you can use, you can search across all the search keys. Remember, if you don't supply this any, then it just searches in the title line. In, if you supply the any, then it searches in everything that's marked up in any way. You can even use regular expressions. If you exchange the equal sign by a tilde, then it uses regular expressions for searching in those keys. You can construct complex search queries. For example here, I am saying, I want to see all section one manuals that either contain TBL in the title line or contain a name EQN. Obviously I'm interested in graph extensions and it shows me a list of matches but only from the matching section. So terms are you joined with O and if you specify a section with minus X, it's appended with end. You can also make the end or O explicit like in find. You can even use parenthesis to group it. So for example here I'm saying, I want section one manuals having terminal as a word in the title line but which also have a mention of either research unix or old BSD. So I want traditional terminal tools and it gives me indeed a list of tools that have been around for a long time. Such stuff is working basically since this year. In the meantime we can see that later or even in the web interface that it works. Not only the input format, so I've shown so far has been improved but also the output format. Traditionally you always get the name and the section of the manuals that match because that's what you need here. This first column that's what you need to actually look at the manual with man. By default you would get here after the dash, the title line but you can explicitly request some other macro not the ND macro, some other macro to be shown. For example here I'm saying, I want to see manuals having wireless in the title line but I don't want to see the title line. I already know that contains wireless. I want to see the kernel configuration directives from these manuals. So I can see on one with these wireless adapters see at first sight whether they attach at PCI or at cart bus or wherever with one command. Traditionally I would have to do apropos and then look with man at each of them separately. And now we come to the surprise topic of this talk. It's a thing that wasn't completed when I proposed the talk that has been done really during the last two or three months. Traditionally the mandoc toolbox didn't include the man program itself. Our philosophy was mandoc is for formatting and man is for displaying. But we have changed that. The next mandoc release will also contain the man program so that all mandoc man apropos what is have the same user interface and they all do the same steps now. They first decide how to interpret your command line arguments, then build a list of matching manual pages, decide which kind of output provide to you depending on your options, maybe spawn a pager and finally loop around the list of pages and produce an output for each of them. Let's look at the ways the command line arguments can be interpreted. If you specify the minus L option then the command line arguments are just file names. So it takes each file name, maybe formats it, maybe shows it. That's the default operation mode for mandoc. As mandoc always worked. If you call it as man in the default mode, the command line arguments are names of manual pages. So it looks up just like traditional man did, those names in the file system and shows you the manual pages. If you use the F argument it does what is used to do. So look for names as complete words. If you use the minus K it supports the full apropo syntax. What is new is that no matter which of the command names you use, you can always use all of them options. So you can even say what is minus L and it will work just as mandoc. So you just need to remember one set of options. All the traditional database selection options work with all the commands. So to show you one example, probably just do that out of the presentation. You? Yes, probably a good idea. Let me see. Not there. It's right. No, still more. So usually you do something like, oh no, that's a bad one. I always get the, anything. Usually I get a manual just formatted for output on the terminal. Now with the new tool, I say man minus thtml, html monkey typing. I get it formatted as html. So I put a links minus standard in after it. Here I have the manual as html. Firefox doesn't work like that, I think. No, Firefox. But anyway, or another thing I say apropo mdoc, I get a list of manuals that match. I say apropo, which didn't work in the past. I give it an output option that was only supported by man in the past, but not by apropo. I get the file names. Man, sorry. Man minus v graph always worked. You get the file names instead of the formatted pages. Now apropo minus v also works. So having all combinations of all options is quite handy without having to remember something else for each command. So these database selection options, the traditional ones, no work with all the commands. The output options, minus a doesn't show just the first manual matching, but all the manuals matching one after the other. So I could say apropo some keyword with minus a and I get all the matching manuals right away so that in my less, in my pager, I can search through all of them. Minus h is a traditional option from man to just shows the synopsis. Now also works with apropo. I've already shown minus w to show the file names and even the parser and formator output options now work with all of them. Like for example, what is maybe relatively, I guess I've already shown an example with minus t of thtml. And finally the c output option to suppress the pager is also there for all. So that's the unified interface we now have and a nice anecdote about it is that a few months ago I presented in Ottawa at BSD Cannes and I presented a list of things to do five or six entries and this unified interface was not on the list. I had no idea I would do it. But then on the beginning of August, so about six or seven weeks ago, Paul Onishok of Alpine Linux asked, well, why don't you do man or do you do man? And almost without thinking, I wanted to reply, no, we don't do that. Then I stopped and thought, well, why not? And realized the code was almost all already there. I just had to reshuffle it a bit. I needed to do two releases first. So it took about two weeks until it was finished from the idea on August nine, first working version still in the same months and then in August 26, I had it integrated in OpenBSD. Admittedly in OpenBSD, it's so far only integrated for Apropos, what is, and Mandok. Man is still the traditional tool. Some bugs need to be fixed there. To not get too technical, I will be a bit shorter on these two slides. One of the problems we still have is what a name is. You expect that when you say man something, it shows you the manual page for something. So the manual page that is called something dot one or so. So the traditional man only looks at file names. The new man looks for names in more places, like in the prologue that you just learned how to write in the name section, in the synopsis section and all that will show up as manuals in man now, which can be annoying. For example, I happen to have the GNU core utility installed. Now when I take man LS on OpenBSD, I get the GNU LS manual because it also has LS in the name section. That's obviously bad. That's the thing I need to fix before we can enable that. And there are a few more things. One very nice thing that Kristaps did two or three years ago is a minus I interactive option. That's the following. You run an apropo command. You get a list of possible matches with numbers in front and then you say, oh, I want to see number five. Just type five, enter and get the manual page without going back to the shell in between and having to retype the name and possibly mistyping it. That will probably be integrated, but it's not done yet. And there are some problems with man conference so on, I'll cut that here. What is probably more interesting for you is that it not only works at the shell, typing interactively, but you can also do the full power of this semantic complex and searches on the web. So the best thing to explain that is probably a live demo. I have here, yes. Oh, let's do it a different way. I start from the open BSD site. I go to manual pages here, right on the open BSD page. What's wrong with it? Is that a problem with the network here or with... So this one works. What the hell? I don't understand. Okay, something is wrong with the network and I don't know what it is. So we can try again later maybe after the working phase I can try to do the demo again. Right now, let's just say, just explain it in words. You can enter the same apropos searches. You can enter at the command line into the web interface. So even if you don't have open BSD installed, you can do the semantic searches for manual pages. With all the good stuff I've shown before for the command line. It has a few additional features even compared to the terminal, of course, because it's on the web. It can do hyperlinks, both inside pages from one section to the other and across pages pointing from one page to the other. And there is additional potential that is not yet really used because the HTML elements have annotations stating the syntactic functions. So that could be used for CSS or for further markup. Right now, the markup on the web is only the same as that terminal, but one could add to that. At this point, I'd like to extend a special thanks to Sébastien Marie, a French colleague who did an extensive security audit of this code and reported to considerable number of security bugs that meanwhile have all been fixed, but that was quite useful to have. Yeah, so we already had the coffee break. I was planning to, yeah, we're right on time, planning to have a few minutes on system integration. And then the second working phase. So to speed this up, first, what is system integration all about? The traditional way is to either format all the manuals while you are building the operation system and installing pre-formatted manuals. Some operating systems do that. Or to install unformatted manuals. And then at runtime, when a user runs MAN, the MAN in the background traditionally calls NROV, the formator, to format the manual page and pipes the output to the user's pager. Now, quite some operating systems switch in this second way from using NROV to MAN doc, which is better because it's smaller, it doesn't use C++ in the base system, it's faster and many other things. The systems already having done that include OpenBSD and HATBSD. FreeBSD is about to do the switch. So I prepared something for in case there would have been any freeBSD developers here to explain in-depth what they still need to do to get there. I guess I will skip most of it, just a few points. The first thing they need to do is what some of you have done here. Try in the tree whether everything really builds with MAN doc, figure out the fatal issues, report the non-fatal ones to us and so on. Yeah, that's about the non-fatal. Of course, if you're doing the system integration, it's more important than if you are just doing quality checking to see that the output from MAN doc is really the same as the output from NROV because you don't want your manuals to change, you just want to exchange the tool. And then finally, you switch over the tree by exchanging the tool. At that point, it's important to do it right after a release when you have a long time to fix potential problems. Yeah, regression testing is not really interesting here for this audience because it's about regression testing of the tool itself, right? So much about base system integration, just very brief. Manual pages in ports, are you aware of what ports is about? What the term means? Some, but some are looking confused. It's, if you take software that is developed operating system independently and make it run on a particular operating system, that's, yeah. So in that case, you get very diverse manual pages written by many different people in many different styles using all kinds of unusual functionalities. So about 95% of them will work with MAN doc and about 5% will not work with MAN doc because they are using low-level NROV functionality that simply isn't implemented yet or will maybe never be implemented because MAN doc is not a full NROV processor. So you have to do something that those manuals that can't form it with your new base system tool MAN doc still can be looked at by users. You can't just run NROV and then you remain with 5% of manual pages that are still gone, simply gone. The OpenBSD solution to that developed by Mark Espie who is also here and who is giving a talk on porting in general. Is to add a flag to the port make file saying this port needs NROV for formatting and if that flag is set in the port build system pre-format the pages during the build and install the formatted version. If that flag is absent, just install the unformatted one so that it gets possessed at runtime by the usual MAN doc in the usual MAN doc way. That works quite well, very reliably, very simply. In OpenBSD, we did it in the way that first we marked all the ports having manuals as use graph to be on the safe side and then by hand checked all of them and switched them away from use graph. We have about 8,000 ports and 1,200 of them still use graph so more than 3,000 have been checked in the last three years and have been moved to use MAN doc. Yeah, okay, I'll skip that. Obviously we are also improving MAN doc all the time, fixing bugs, implementing new functionality that helps particular, here is a list of some macros and requests that have recently been implemented. Obviously that helps in particular for ports because manuals and ports are using lots of weird stuff. Oh, I didn't really talk about Mac what is because that's also more for operating system developers. If you switch over, if you pull graph out of the tree completely, FreeBSD will probably never do that because there are a lot of developers who think that having a real fully professional type setting system in base is important but NetBSD might do that at some point and you have to pay attention to a few additional things but again, as you are not changing the base systems, not go into the details here. If you're interested, you can read that later. Okay, so now, we have an opportunity for working a bit more. What would be especially interesting, if in the second phase, if you have a Unix system around where you can install the latest version of MDoc ML from CVS, to do that to really test the search tools, a few people said they expected in this tutorial more of an introduction to the philosophy of writing manuals in general and I talked to Chris Depps. He's willing to use this second working phase to give a short presentation on that after asking what exactly you need is certainly competent to do that right away and then I will have helped those people who want to try out the very latest search functionality to get that going. Of course, if you have started something in the first working phase that you think is really interesting, you can also continue that and try to get it to a state where you can send me patches that I can commit then. So I'd suggest that Chris Depps would get into this area and everybody who wants to join on more philosophical and groundbreaking stuff can join with them and people who want to test search functionality should probably show up that I helped them get started to get the latest MoDoc. If you have an OpenBSD current system, you already have it. So who has an OpenBSD current system? Okay, so you can do that easily. That would be the number of stars here so the number of stars here is about the difficulty so that would probably 8.4.1 or maybe 8.4.2. If you don't have that, who is interested to do that but does not have an OpenBSD current system? Okay, in that case, just take my notebook because on your phone it won't work and we don't need that right now. Just get over, I'll come back, just get over here to one of the terminals. Yeah, here this one, for example, use the shell and yeah, there you can. Okay, so I understand the remaining people are continuing the work that was interrupted by the coffee break, right? That's good, yeah. Okay, so and yeah. It's a fresh install from this morning so I did have to make what is, but yeah. Yeah, so at about the, it's now 16, yeah, it's now seven minutes after five. So at about 20, 22 minutes after five I'll start the wrap up. Giving you an overview of what the status in the various systems is and yeah. Okay, so you are good probably, you were good anyway. Okay, you are joining too? Yes, of course. Just come back, say at 22 or something like that. Then when you come back, guys. Yeah, yeah, I think we got ahead of those groups. We'll just continue mainly with chins and then do some examples or something a little bit. Yeah, yeah, I think that done is probably a larger project but yeah. Yeah, okay, it was just, it was the first thing that came to mind that had reasonably simple and not man-dog, man-page, so. Yeah, looks useful, yeah. Okay. Problems. Okay, you're actually getting mostly the same results because if a manual page is system-independent, it also shows up when you are asking for a bit specific architecture because it is valid for that architecture, yeah. Oh, I already fixed it. Yeah, I thought it was about a bit confused about, because in those cases, the bottom name is part of the sentence or the multiple authors. Okay, can you show one of the examples? Yeah, okay. Yeah, so in this example, it's part of the sentence and there's a period. Yeah, should I do this period, should I do it? Yeah. Is it part of the name or it goes the line itself? No, what you did is actually right. I only very briefly touched that. If you have trading punctuation with almost all macros, you can just put it as an additional argument at the end. Type the following, please type mandoc minus capital T, tree and now pipe to less, first the final name, of course. Type that to less. Like that, you see the syntax tree expanded. If you now go to the point where the author is, then you see that the author name itself, Steve Levine, is in the element, but it realizes that the dot is punctuation and puts it outside the element. So that's a feature of the mandoc, one of the advanced features of the mandoc language I only mentioned briefly. That is completely correct, yes. Basically, all the punctuation marks just go to the end of the list, yeah. Yes, so from the, wait a minute, from the perspective of punctuation, that looks perfect. However, the BR is a bit of a bit strange. Yes, but please show how that looks when you format it. Just mandoc file name and if you want, you can pipe it to less, yes. You have line breaks in there that may come as a surprise. The reason for these line breaks is that the AN macro can be used in the following way. You just have an author section and then you put multiple authors there, each with an AN macro, but nothing else. So you want a list of authors. That's the default mode. On the other hand, you could also have a text where the author- I saw there was, I checked it. Very good, yes, exactly. So here you have to put an AN minus no split in front, such that you get rid of these. Okay, so yes, that looks like you will have some touches to send me afterwards. Yes, of course. Oh, that looks strange. Oh, there are two ways you can do that. No, wait, you want to do what? You want to, ah, there is, that is the one thing where there is no option. So you can get from the man command to all other commands, and you can get from all commands to each other, but you cannot get from another command to man. There is no option for that. The reason is that I didn't want to introduce any new options. I only wanted to extend the existing options because I don't want to introduce more complication. So there is no option for saying I just want to see one single manual. Once I introduce the minus I option, you can use that. It may even work. Try man doc minus I pseudo, what it does. It says, no such file or directory. No, it's not yet implemented, yeah. So you found the one case where, so if you want man, you really need to type man, but all other directions, yeah. Good observation, yes. So you can get less in a loop so that we can keep looking at the file while we edit it. Because we first did it with cap, but we lose the format in that way. What I usually do is type something like the editor command, then a semicolon, then the formator command with a pipe to less. So what then happens is that, as soon as I exit the editor, it at once starts the formator and less. So I see the result. When I type quit, I'm back to the shell again, but then I can just recall the last command and run it again. That is quite convenient when editing. Of course you can construct a while loop, a shell while loop around it. That wasn't our first idea. But then you probably need a sub-shell, but usually you just do it the way I explained that. That's good enough. No, Parker Brothers is the name of a games manufacturing company. Yes, that's Barry Brachmann is the author name, I think. Finding stuff. Between what is and apropos, what is has a much more restricted command line syntax. So if you can only give words to what is, while apropos can use the full expression syntax I presented. And even if you give only words to apropos, then it searches for these words as substrings. So there might be trailing or leading characters. While what is looks for the word boundaries makes sure that there are no prefixes or suffixes. So usually the results from what is is a subset of the results from apropos, which is not really new. That's how it works for decades. That will give a lot of results, yes. It's basically everything that contains the word pearl in the title line. So this comma is a new line or I believe it's here. You actually know it matters. You actually have to leave it on the author name line because if you put it on the next line, there would be a blank in the form of the output because no, the internal mechanism to recognize it as trailing punctuation only works if it's on the same line. So if you end the line, then it's like the, here we are finished. So you have a trailing blank. And then the comma is something like the start of the next sentence. And that was, oh, would I usually do at that point? Yeah, that works. There is a trick to get a similar thing quicker. If you just say CVS up blank minus DP, small D, capital P, the, yes, like that. The options are not strictly required, but it's a good habit to use these options because it will give you new parts and directories. If you do that, it will report which files are modified and at the same time, check whether anything has been updated upstream. That's a very convenient way to find your own changes in the tree. Yeah, switching to a different source code management system is a bit tricky. Yesterday, I attended a tutorial on SVN and had the same experience. Everything is different. I'm used to both CVS and Git, but yeah. What was the contraction? I think it's called a contraction, yeah. So if there is only contraction, then it can stay as it is. Well, I say it may be, but if you have found it and even fixed it, then just include the patch and I'll see whether I can get it in with it. For example, if there are multiple patches in the same tree and they can be committed together, then it's not spam either. So no, I think in this case, so if you would already be a new developer who were going to commit it himself, then the usual advice would be to make sure that every patch is small and self-contained and only does one well-defined thing. On the other hand, these changes are relatively simple and straightforward and all of similar nature. So it's basically one thing you are doing. And in particular, since you're not going to commit it yourself, it's much less work to just send a single patch. And then if it needs to be split up, it's even less work for me to split it up myself if it needs to be split up. So just send me one patch, yeah. Okay, good. We're back in a minute. Where did Chris stop scared to? Yes, do you know? They're in the... Ah, you're coming back for the wrap up. Good. You have to flip up to the problem. Yeah. Yeah. Yeah, you would. Yeah. Yeah. Yeah. Yeah. Yeah. Okay. So, I'm sorry that I might have to reclaim my notebook, but it seems like it helped a bit to get here. Okay. Where is the mouse? What? Okay. Sorry, I confused my notebook by plugging in and out stuff. So you have two or three additional minutes before I can do the wrap up. Okay. So the small side session worked for you? Yeah. Yeah, that's a development notebook. So I have separate partitions for different parts of the source trees and the object areas and so on. Sorry? Everything was mounted is now checked. Yeah. Sure. Okay. So back in working order, mobile 1409 talk, PDF. And I guess I have to move this thing away. Yeah. Back in working order, page 50 or something. Okay. For the wrap up, I'm briefly going through, I'm going to go back to page 50. I'm briefly going through the various operation systems that this conference applies to and telling you what the status in respect with respect to manuals is in OpenBSD. We were the first operating system completely switching to Mandok and it's now almost four years that that graph is completely disconnected from the build and Mandok is the only documentation formator in the OpenBSD based system. So since October, 2010. And since April this year, we are having the full make what is. Yeah, that's a good idea. Thank you. Since April this year, we are having the full make what is apropo functionality that some of you have been experimenting with. So that's nearly a finished story. Of course, there are a few things still to do. I will come to that later in the very last slide, future things to do. Future things are likely to again happen in OpenBSD first. The second system to switch to using Mandok as the default formator was NetBSD. NetBSD also had Mandok in base very early already in 2009. Jörg Sonnenberger did that. He's in the room right beside in the NetBSD developer summit. Yes, he's here. Just saw him. And Jörg Sonnenberger and Thomas Klausner also support Mandok in PKG source. A portable, a porting system with supports lots and lots of different platforms. So that's quite important. The point in time when they switched was basically 2012 in one big step. The next thing NetBSD should probably do is figure out how to get semantic searching. But that's a rather big problem because right now they have full text search that is not semantic, but also using SQLite. So they have to figure out how to integrate the two searching systems, the homegrown one they did and the semantic searching. That would be tricky. You can be glad that you need not do it. Now, FreeBSD and Dragonfly both have Mandok in the base system. FreeBSD sends version 10. But in both FreeBSD and Dragonfly, it's only installed and not yet used by default. Semantic searching is not yet supported at all, not even as an option. The next steps then would be to update to the latest release, 1.13.1, and then to actually use it to format manuals. And unless they manage to do that, it's not much use talking about anything else for those systems. Ulrich Böhlein in FreeBSD has done a lot of preparatory work. Franco Fichtner in Dragonfly also, so they should manage to do it. Now, there is one more system that recently switched to using Mandok. Any of you have any guess what that could be? It runs on Apple. Kristaps has always tested it. I heard something else. Oh, I gave it away. Right, forgot about it, sorry. That's an amazing thing that happened there. Years ago in 2010 or 2011, two guys from Illumos briefly spoke to me and they're never again. And I thought, well, they are not doing anything. And then this July, just a few months ago, suddenly one giant commit happened. And they did all in one step. They imported Mandok into base. They switched from installing formatted manuals to unformatted manuals, and they switched from using graph as a formatted to using Mandok as a formatted, all in one commit, and it just worked. I have no idea how to manage to get, they managed to get such a giant switch working at once, but there weren't even many cleanup commits afterwards. Must have done a tremendous amount of testing. So right now, Illumos is the only non-BSD that is using Mandok by default. Minix, by the way, the Minix chief, like Professor Tannenbaum is here and is giving a talk, Minix has opened BSD, has Mandok in base because they have imported it from NetBSD, they have most of the NetBSD user land, but they are not using it and it is very old, it's three years old, I never updated it. Mac OS X has an old port, an old package from 2010, but it seems Mac ports it is, yeah. Oh, they have, oh, I didn't even know that. Okay, so if anybody is using, actually using Mac OS and finds a port, just tell me, I'm always interested in keeping track of who's using it to be able to actually help people. Well, so it definitely runs on Mac OS, and, but not very actively maintained. Recently I noticed, yes? One dot, one dot three, no. One dot three dot zero. Well, that's worse than prehistoric. I mean, everything that is older than one dot 11 is really, really ancient, like three or four years old. One dot. Okay, we can figure out that afterwards, yeah. Yeah, interesting. And I recently realized that there is even a cycling port for Windows. I never talked to the guy, Jakov Selkovitz, but I dropped him a mail but didn't receive an answer yet. So even for Windows users, there might be a way to get that, but I don't really know much about Windows so I can't help much there. Yeah, status in Linux. There's one Linux distribution that is very actively maintaining their port. Also has it for a long time, which is Alpine Linux. Alpine Linux, a small French distribution focusing on keeping it small and simple, also for embedded stuff. They have provided a lot of feedback. Then, of course, Arch Linux and Slackware Linux, both have ports. And recently, this April, a guy popped up who has basically prepared ports for everything, CentOS, DBM, Fedora, RIT, Sousa, Ubuntu. But of course, it takes a long time to get anything into those systems so we should probably speak again in two or three years whether anything has actually been imported, yes? There's also, if you install it, it won't... Okay, I never heard about that distribution but I will have a look. Oh, actually, that's not a good idea to replace graph because the main purpose of graph is a type setting system. So you use it for setting books or talks or something. Well, Mandok is a documentation system so it may well be that you need both at the same time. But yeah, it's just... Yeah, it's good that you shared. Just mentioned that you shouldn't do it that way because it might mislead people if it just stands like that. Okay, so possibly future directions. There are still quite a few of things I'd like to do. Of course, replace the traditional MAN implementation in OpenBSD with the Mandok one, which is more powerful. Switch the default output mode from T-asky to T-local. That's actually a very easy thing to do. It will not affect people who are using the C-local because we'll just do the same as before but it will be more convenient for people using a new UTF-8 local. Then I'd like to integrate pre-conf into Mandok that will especially be interesting for Russian and Japanese people who are using UTF-8 manuals in non-English languages will make the command line for running the formator much easier. And there is a lot of work going on conversion tools like the Libre SSL documentation is right now all in the Perl documentation format pod and we are converting it to M-Doc and Kristaps and myself are working on tools to facilitate that. That's of course related to Mandok. Some other projects of a similar way like providing tools to, some of you have started to do manual translations from MAN to Mandok, from MAN to M-Doc. There is also a project to use an existing tool by Eric and Raymond to couple that with M-Doc to get manuals translated from MAN to M-Doc semi-automatically you will still have to do manual post-processing of course. And I'd also like to do some low-level infrastructure work on Mandok that I'll not bore you with so there is still an interesting future. And finally I'd like to mention a few people who helped with this, of course Kristaps Johnson who wrote the tool in the first place a few years ago then Jörg Sonnenberger from NetBSD who helped write important code in particular in the initial phase a few years ago. There have been a considerable number of people from various projects who contributed patches Franco, Christos, Tzugutomi. Very important is the work that Mark Espi and OpenBSD has done on Ports integration. I think I wouldn't have been able to go anywhere with lots and lots of discussions with the OpenBSD manual maintainer, Jason McIntyre. The whole thing probably wouldn't have happened either without Theo Derrath, the OpenBSD project lead who invited Kristaps to commit the stuff otherwise I'd probably have missed the whole thing completely. Then thanks again to Sebastian Marie for the recent security check on the web thingy. The main people who helped porting are Thomas Klausner NetBSD who is always also in the room beside who did the NetBSD porting and Ulrich of course and FreeBSD. There were a lot more people in OpenBSD which I'm not all name who did various things to help us and a very long list, actually an impressive list. All these people reported bugs or suggestions that were actually acted on. So each of these names resulted in at least one commit. Yeah, and then I used lots of pictures. So, do you have any questions to finish the session? Anything else you should like to know about manuals? Kristaps? Who's written a manual page here? Who would if it were easier to do? Oh. Actually, I thought about how to use the macros correctly because I just started translating a man page to end up and I didn't really, it looks quite okay, but I guess I have a real warning and I have no idea what to do now. Even after looking at the mandoc portable manual. Okay. To make it look almost like the original man page I wanted to translate. So I managed to do that but now I've got four warnings and I'm pretty sure I've done something slightly wrong but yeah, it's not entirely clear how to do it right. Okay, so that's a. So to have like one complete man page way show had to remove different stuff. That's probably Kristaps tutorial, yes. Well, they would be, because it's so simple generally. It's like you either have a program, you have functions, function library or advice and it would just take you through the questions and it would actually get a meaningful document out there and just, you know, spit it out. Not for really using it after you have collected a bit of experience but for getting started that would be an interesting thing. Yeah. So that interestingly there is also something I'm taking back from here because my impression is that there are quite a few experienced people around here who do a lot of software development and that in contrast to what I think, the stuff is a bit less easy to approach than I thought and that maybe I even started on a level that was a bit advanced. So my impression is that there is really a need for basic documentation, basic tutorials and tools to get started. Yeah, so we should definitely clean up and improve your tutorials and what is already there is a recommendation. Besides the, if you want to read a bit more of it when you get home, then of course you have the slides to look at again. You have the write-up which has a bit, a lot more of technical detail. You have the tutorial but there is lots of stuff for us to improve in particular for beginners. That's interesting for me. Yeah. Anything you want to say for the wrap-up? Maybe what, anything you missed or anything you enjoyed particularly? Okay. Nice to hear that. Nice to hear that. Okay. Yeah. Then I wish all of you a nice evening and a nice conference really starting tomorrow that whole thing. Enjoy. Thank you.