* Re: Creating subtitles for the Guix Days videos!
@ 2022-03-05 18:23 Blake Shaw
2022-03-06 1:30 ` Matt
0 siblings, 1 reply; 12+ messages in thread
From: Blake Shaw @ 2022-03-05 18:23 UTC (permalink / raw)
To: Matt; +Cc: guix-devel
Hi Matt,
Matt <matt@excalamus.com> writes:
> ---- On Tue, 01 Mar 2022 22:44:18 -0500 Matt <matt@excalamus.com> wrote ----
> >
> > ---- On Tue, 01 Mar 2022 18:18:42 -0500 Matt <matt@excalamus.com> wrote ----
> >
> > > I've started working on the "Dreaming of better patch review". This is great steno practice!
>
> I'm (finally) done!
>
> There were some things he said that I couldn't understand. I notated
> all of them using square brackets and three question marks, [like
> this???]. You should be able to search on "???" to find them.
>
> It was an interesting talk with good points and some smart ideas. I'm happy to have been able to make it more accessible to others. :)
>
>
Thank you so much! Thats awesome work. I'll take a look at the parts
that were difficult... but I'm not sure what software I need to use this
file format. Lmk and I'll get you the corrections.
ez,
b
--
“In girum imus nocte et consumimur igni”
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-05 18:23 Creating subtitles for the Guix Days videos! Blake Shaw @ 2022-03-06 1:30 ` Matt 0 siblings, 0 replies; 12+ messages in thread From: Matt @ 2022-03-06 1:30 UTC (permalink / raw) To: Blake Shaw; +Cc: guix-devel ---- On Sat, 05 Mar 2022 13:23:22 -0500 Blake Shaw <blake@nonconstructivism.com> wrote ---- > Thank you so much! Thats awesome work. I'll take a look at the parts > that were difficult... but I'm not sure what software I need to use this > file format. Lmk and I'll get you the corrections. You're welcome. I used aegisub to do the captioning. The file appears to be a text format. Noticed that mpv auto-detected the subtitles when placed in the same directory as the video. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Creating subtitles for the Guix Days videos! @ 2022-03-01 14:36 Julien Lepiller 2022-03-01 21:15 ` Luis Felipe ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Julien Lepiller @ 2022-03-01 14:36 UTC (permalink / raw) To: guix-devel Hi Guix! I'm looking for volunteers to create English subtitles for the Guix Days talks. It would be great for people who are not very good with spoken English but who can still understand text. We have created a pad with the list of videos and steps to coordinate and make sure we don't all work on the same videos. Please add you name in front of the video you want to create subtitles for: https://mensuel.framapad.org/p/guixdays2022-videosubtitles-9stl You can use aegisub to create the subtitles. Note that it's a lot of work (typically 1 hour for ~10 minutes of video), so I'd be glad for any work you can do, even if it's partial. Please send me the subtitles once they are completed, I'll add them with the videos. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-01 14:36 Julien Lepiller @ 2022-03-01 21:15 ` Luis Felipe 2022-03-01 22:08 ` Tanguy LE CARROUR 2022-03-01 23:18 ` Matt 2 siblings, 0 replies; 12+ messages in thread From: Luis Felipe @ 2022-03-01 21:15 UTC (permalink / raw) To: Julien Lepiller; +Cc: guix-devel [-- Attachment #1.1: Type: text/plain, Size: 420 bytes --] Hi, On Tuesday, March 1st, 2022 at 2:36 PM, Julien Lepiller <julien@lepiller.eu> wrote: > You can use aegisub to create the subtitles. Just wanted to mention that there's also an application called Gaupol, which people new to subtitling may find less intimidating. You can save to WebVTT format. These are the basic steps to use it: https://github.com/otsaloma/gaupol/blob/master/doc/creating-subtitles.md [-- Attachment #1.2: publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc --] [-- Type: application/pgp-keys, Size: 1815 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 509 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-01 14:36 Julien Lepiller 2022-03-01 21:15 ` Luis Felipe @ 2022-03-01 22:08 ` Tanguy LE CARROUR 2022-03-01 22:36 ` Julien Lepiller 2022-03-01 23:18 ` Matt 2 siblings, 1 reply; 12+ messages in thread From: Tanguy LE CARROUR @ 2022-03-01 22:08 UTC (permalink / raw) To: Julien Lepiller; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 671 bytes --] Hi Julien, Quoting Julien Lepiller (2022-03-01 15:36:19) > I'm looking for volunteers to create English subtitles for the Guix Days > talks. […] Please send me the subtitles once > they are completed, I'll add them with the videos. It's my first time, so thank you for your indulgence! :-) I'm attaching my humble contribution: - `.txt` the transcription ; - `.ass` the file created by Aegisub ; and - `.sub` an attempt to export it to sub format. I have to admit that is pretty bad "punctuation-wise", because I was not sure were the sentences started and ended. Sorry! Just let me know if I have to fix anything. Regards, -- Tanguy [-- Attachment #2: guix-days-2022-modernizing-python-build-system.mkv.txt --] [-- Type: text/plain, Size: 11693 bytes --] hello everyone nice to have you here at Guix Days 2022 I would like to talk about Python build system and why we need to modernize it python-build-system is the Guix component that turns the source distribution of any Python package out there into an installable image so, basically, a directory under the GNU store let's have a look at tomli a quite simple Python package which has no external dependencies so, if we import it using `guix import`, here add a few imports to the resulting file and then try to build it it should work out of the box, right? The problem is, it does not! and instead we see at the bottom an error message saying "no setup.py found" and, indeed, if we look at the source distribution there is no `setup.py` to be found anywhere So, what is going on? Fortunately, this package is already available in Guix as `python-tomli` so we can have a look at its definition to see how it is currently built let's just do that looking at the build system's arguments we see the phases `build` here and `install` here which are usually provided by Python build system replaced with custom code I'm only showing the interesting parts here the actual commands are actually much longer first the build phase uses a Python module called `build` to build the wheel, as we can see here the wheel is basically a distribution format in the Python world then in the install phase we simply use a well known tool called Pip to install the wheel that we just built into the output which would be somewhere around the GNU store so how does the build module knows what to do what to build? it follows PEP 517 PEPs are kind of the RFCs of the Python world and this PEP basically splits building wheels into two parts a frontend and a backend the frontend is the user facing part for example the `build` we just saw here this is the user facing part of the build process and then a backend the frontend is supposed to read a file called `pyproject.toml` this is what we are seeing here and in that TOML file, a section called `build-system` this one here declares which backend will actually build our wheel and, in this case, another package called `flit_core` its requirements a build time dependency of tomli and its module `flit_core.buildapi` is providing us with the build entrypoint. The file also contains standardize metadata and tool related configuration data which I'm not showing here A PEP 517* compatible build backend provides a standard function entrypoint called `build_wheel` in the module I just referenced here in the top and, if we call it, it will just do its magic and it will produce a wheel file and its first argument it's the wheel directory that wheel is basically a zip file with a predefined structure that we can extract into our store and we are almost done and this is what Pip does in the install phase here and that's basically the entire build process as specified by PEP 517 there is no `setup.py` involved any more we don't have to call it we don't have to create it as a package provider so the reason why the error message I showed, showed up earlier will keep on poping up more and more is simple: we are late! we are really really late, actually because PEP 517 was originally created in 2015 and that it gained provisional acceptance in 2017 and just last year, after being basically being the *de facto* successor of `setup.py` for some time it has been finalized and fully accepted and more importantly, flit which you remember from the previous slide is also able to create source distributions and upload them to PyPI Python public package repository basically so far, it has been generating a `setup.py` and does nobody really noticed but since version 3.5, which was released in November 2021 flit stop doing that by default and thus we are seeing more and more packages without `setup.py` in their source distributions and so we are basically unable to build this projects right now or this Python modules a look at the Guix's repository in late January and back then only 11 packages actually used Pip or PyPA build as we've seen but I think our ecosystem is quite old about half the packages not being the latest versions available upstream according to `guix refresh` so it's possible that more packages actually require support for this `pyproject.toml` and we simply have not updated them yet for whatever reason maybe because it's too difficult or nobody poped to do it yet they are also more issues with our current Python build system for instance `setup.py` test ???? has been deprecated for quite some time since 2019 actually and the Python build system's default check phase relies on that even though it doesn't work for a lot of packages right now and thus, almost every package in our repository needs to replace that check phase with a call to Pytest which is the *de facto* standard right now for executing tests ???? tox does something similar but not quite the same another long standing issue is wrapping of Python path or Guix Python path now because it includes native inputs and thus propagates way too many packages and I'm sure we can find more issues with the current Python build system thus, for almost a year now, I've been working on a modernized Python build system that addresses some of this issues unfortunately I haven't had much time lately to improve it for others I hope to pick it up again and get it into shape and get it to master at some point you can read about it here in Guix issue #46848 or you can just pull a branch called `wip-python-pep517` it's also build by the CI by the way so you don't have to do the whole world rebuild by yourself and it's using exactly the method I described above the part written in Guile ends up reading the project's `pyproject.toml` and then calls the build system's entrypoint `build_wheel` as we can see here and if there's no `pyproject.toml` it's also not a problem actually because setuptools, which is still provided by default, and still included in the build system by default, because setuptools still provides a PEP 517 build backend which simply uses the existing `setup.py` behind the curtains so we don't have to, like provide extra logic for that they were actually other options for this build phase in how to do it basically for example, we could also use the build module that we have seen above and some packages use currently however that raises questions about bootstraping how do you build the build package if it essentially requires itself because the build module is part of the Python build system and of of it's dependency tomli for example is one of the dependency of build and what do we do with tomli like how do we install it without having build so this is tricky, and I tried it in the beginning and it works but we need to do ???? manual copying and that's not really pretty to be honest we could also use Pip which is usually distributed with Python also our python package bundles Pip and setuptools this has caused a few issues in the past because we cannot update either of them for provide alternative newer versions without having a full world rebuild basically and also Pip being a massive project it bundles quite a few of it's dependencies and I feel "we" as a Guix project should try to untangle that mess whenever we can and in this case, we actually can so, in conclusion, I think running this 4 lines of Python code that you can see here is a much simpler solution that trying to bootstrap the build module, tomli and all the modules required to get a Python based builder basically we can just do it in 4 lines of code there are a few changes for packagers which aime to reduce the need for custom phases first, it is possible to override the build backend detected from the `pyproject.toml` especially early adopters of PEP 517 use modules which have been renamed in the meantime I think both Poetry and Flit did that at some point the split their build logic into a separate project and renamed the backend so, for some packages, it's necessary to override this detected build backend and you can do that simply by specifying the `#:build-backend` option and also if the detection is wrong at some point we could override it without causing too much damage secondly, we have `#:configure-flags` they had existed before, but where applied only during install but not during the build phase which, I believe, is a ????, we'll see and this are arguments to `setup.py` but their syntax depends on the build backend unfortunately sometimes you can pass the argument directly sometimes you need to pass them as an option to another option like we can see here that's the setuptools specific way to do it so you have an option and then you have to pass the actual options as an argument to that option and, in theory, they could also look completly different like no relationship to any command line flags it's just legacy code right now and it's not pretty and it's one of the things that have been criticized about PEP 517 this configure flags are not really specified how they are supposed to look but this solution exists, so we have to swim with the flow, kind of and, finally, they are `#:test-flags` my proposal was to auto detect test binary based on the package's native inputs so if pytest is available, it will just use pytest if nose is available, it will use nose and so on now, test flags override the default arguments passed to this test command and, hopefully, this can reduce the number of custom phases required to exclude tests mostly in this case, we are simply don't want to run the `test_legacy_callbacks` function and so we can just exclude it with the flags and the package will build just fine, probably, hopefully so, where do we go from here? the first step would be to finalize the work on the Python build system and get the branch ready into a state where it can be merged unfortunately, right now, quite a few packages fail to build there because their previously disabled test suite fails not necessarily disabled, but it was never ran because the test runner was buggy and the `setup.py test` command simply did nothing and didn't detect edge cases we could also go a different route and add a new build system without touching the old one and just slowly migrate every Python package we have over instead of doing the big switch at once that was also one of the suggestions that was certainly possible I haven't explored that it would works as I mentioned earlier, currently the native inputs end up in wrapped binaries and I think this is one thing we should address while doing the whole world rebuild anyway but I haven't done any work on that yet, unfortunately and finally, the pypi import needs support to read `pyproject.toml` not so much for the runtime dependencies, this is fine, we have another metadata file which contains the runtime dependencies but for build time and test dependencies because they are not included in the wheel file, there's a file called metadata, and it doesn't have this data so right now, if you import a `pyproject.toml` based project you will lack the build dependencies basically for example flit will not be in the native input right now and that's it for me for now I hope to answer some of your questions during the live Q and A and in the PDF version of this slides, you'll find some clickable links to different talks and to the standards I have referenced so, I hope I'll see you soon! [-- Attachment #3: guix-days-2022-modernizing-python-build-system.mkv.sub --] [-- Type: text/plain, Size: 14898 bytes --] {29}{43}hello everyone {44}{109}nice to have you here at Guix Days 2022 {110}{161}I would like to talk about Python build system {162}{202}and why we need to modernize it {203}{251}python-build-system is the Guix component {252}{318}that turns the source distribution of any Python package out there {319}{347}into an installable image {348}{405}so, basically, a directory under the GNU store {406}{492}let's have a look at tomli a quite simple Python package {493}{526}which has no external dependencies {527}{608}so, if we import it using `guix import`, here {609}{668}add a few imports to the resulting file {669}{697}and then try to build it {698}{753}it should work out of the box, right? {754}{782}The problem is, it does not! {783}{840}and instead we see at the bottom {841}{927}an error message saying "no setup.py found" {928}{985}and, indeed, if we look at the source distribution {986}{1043}there is no `setup.py` to be found anywhere {1044}{1074}So, what is going on? {1075}{1142}Fortunately, this package is already available in Guix {1143}{1171}as `python-tomli` {1172}{1209}so we can have a look at its definition {1210}{1239}to see how it is currently built {1240}{1268}let's just do that {1269}{1327}looking at the build system's arguments {1328}{1395}we see the phases `build` here and `install` here {1421}{1486}which are usually provided by Python build system {1487}{1531}replaced with custom code {1532}{1582}I'm only showing the interesting parts here {1583}{1634}the actual commands are actually much longer {1635}{1681}first the build phase {1682}{1739}uses a Python module called `build` {1740}{1801}to build the wheel, as we can see here {1802}{1926}the wheel is basically a distribution format in the Python world {1927}{1995}then in the install phase {1996}{2052}we simply use a well known tool called Pip {2053}{2116}to install the wheel that we just built {2117}{2203}into the output which would be somewhere around the GNU store {2204}{2261}so how does the build module knows what to do {2262}{2291}what to build? {2292}{2355}it follows PEP 517 {2356}{2406}PEPs are kind of the RFCs of the Python world {2407}{2522}and this PEP basically splits building wheels into two parts {2523}{2551}a frontend and a backend {2552}{2585}the frontend is the user facing part {2586}{2638}for example the `build` we just saw here {2639}{2696}this is the user facing part of the build process {2697}{2725}and then a backend {2726}{2870}the frontend is supposed to read a file called `pyproject.toml` {2871}{2899}this is what we are seeing here {2900}{2993}and in that TOML file, a section called `build-system` {2994}{3015}this one here {3016}{3075}declares which backend will actually build our wheel {3076}{3160}and, in this case, another package called `flit_core` {3161}{3247}its requirements a build time dependency of tomli {3248}{3305}and its module `flit_core.buildapi` {3306}{3361}is providing us with the build entrypoints. {3362}{3421}The file also contains standardize metadata {3422}{3460}and tool related configuration data {3461}{3489}which I'm not showing here {3490}{3595}A PEP 517* compatible build backend {3596}{3653}provides a standard function entrypoint {3654}{3682}called `build_wheel` {3683}{3740}in the module I just referenced here in the top {3741}{3802}and, if we call it, it will just do its magic {3803}{3847}and it will produce a wheel file {3848}{3911}and its first argument it's the wheel directory {3912}{3968}that wheel is basically a zip file {3969}{3990}with a predefined structure {3991}{4032}that we can extract into our store {4033}{4081}and we are almost done {4082}{4146}and this is what Pip does in the install phase here {4234}{4291}and that's basically the entire build process {4292}{4326}as specified by PEP 517 {4327}{4378}there is no `setup.py` involved any more {4379}{4387}we don't have to call it {4388}{4465}we don't have to create it as a package provider {4491}{4575}so the reason why the error message I showed, showed up earlier {4576}{4610}will keep on poping up more and more {4611}{4645}is pretty simple we are late! {4646}{4697}we are really really late, actually {4698}{4784}because PEP 517 was originally created in 2015 {4785}{4869}and that it gained provisional acceptance in 2017 {4870}{4898}and just last year, {4899}{4987}after being basically being the *de facto* successor of `setup.py` for some time {4988}{5045}it has been finalized and fully accepted {5046}{5137}and more importantly, flit which you remember from the previous slide {5138}{5197}is also able to create source distributions {5198}{5233}and upload them to PyPI {5234}{5297}Python's public package repository basically {5298}{5363}so far, it has been generating a `setup.py` {5364}{5393}and does nobody really noticed {5394}{5500}but since version 3.5, which was released in November 2021 {5501}{5561}flit stop doing that by default {5562}{5627}and thus we are seeing more and more packages without `setup.py` {5628}{5656}in their source distributions {5657}{5734}and so we are basically unable to build this projects right now {5735}{5763}or this Python modules {5764}{5830}a look at the Guix's repository in late January {5831}{5896}and back then only 11 packages actually used Pip {5897}{5939}or PyPA build as we've seen {5940}{5996}but I think our ecosystem is quite old {5997}{6060}with about half the packages not being the latest versions available upstream {6061}{6089}according to `guix refresh` {6090}{6193}so it's possible that more packages actually require support for this `pyproject.toml` {6194}{6263}and we simply have not updated them yet for whatever reason {6264}{6321}maybe because it's too difficult or nobody poped to do it yet {6351}{6437}they are also more issues with our current Python build system {6438}{6546}for instance `setup.py` test ???? has been deprecated for quite some time {6547}{6589}since 2019 actually {6590}{6675}and the default Python build system's default check phase relies on that {6676}{6727}even though it doesn't work for a lot of packages right now {6728}{6791}and thus, almost every package in our repository {6792}{6872}needs to replace that check phase with a call to Pytest {6873}{6930}which is the *de facto* standard right now for executing tests {6931}{7021}???? tox does something similar but not really quite the same {7022}{7104}another long standing issue is wrapping of Python path {7105}{7133}or Guix Python path now {7134}{7178}because it includes native inputs {7179}{7222}and thus propagates way too many packages {7223}{7307}and I'm sure we can find more issues with the current Python build system {7308}{7481}thus, for almost a year now, I've been working on a modernized Python build system {7482}{7513}that addresses some of this issues {7514}{7588}unfortunately I haven't had much time lately to improve it for other {7589}{7615}I hope to pick it up again {7616}{7628}and get it into shape {7629}{7657}and get it to master at some point {7658}{7686}you can read about it here {7687}{7771}in Guix issue #46848 {7772}{7858}or you can just pull a branch called `wip-python-pep517` {7859}{7904}it's also build by the CI by the way {7905}{7966}so you don't have to do the whole world rebuild by yourself {7967}{8032}and it's using exactly the method I described above {8034}{8148}the part written in Guile ends up reading the project's `pyproject.toml` {8149}{8264}and then calls the build system's entrypoint `build_wheel` as we can see here {8265}{8351}and if there's no `pyproject.toml` it's also not a problem actually {8352}{8438}because setuptools, which is still provided by default, {8439}{8473}and still included in the build system by default, {8474}{8564}because setuptools provides a PEP 517 build backend {8591}{8673}which simply uses the existing `setup.py` behind the curtains {8674}{8757}so we don't have to, like provide extra logic for that {8787}{8847}they were actually other options for this build phase {8848}{8876}in how to do it basically {8903}{8943}for example, we could also use the build module {8944}{8963}that we have seen above {8964}{9016}and some packages use currently {9017}{9063}however that raises questions about bootstraping, like {9064}{9134}how do you build the build package if it essentially requires itself {9135}{9184}because the build module is part of the Python build system {9185}{9221}and of of it's dependency {9222}{9279}tomli for example is one of the dependency of build {9280}{9337}and what do we do with tomli {9338}{9367}like how do we install it without having build {9368}{9434}so this is tricky, and I tried it in the beginning {9435}{9457}and it works {9458}{9521}but we need to do like some weird manual copying {9522}{9569}and that's not really pretty to be honest {9570}{9598}we could also use Pip {9599}{9656}which is usually distributed with Python {9657}{9721}also our python package bundles Pip and setuptools {9722}{9772}this has caused a few issues in the past {9773}{9801}because we cannot update either of them {9802}{9853}for provide alternative newer versions {9854}{9917}without having a full world rebuild basically {9918}{9959}and also Pip being a massive project {9960}{10004}it bundles quite a few of it's dependencies {10005}{10033}and I feel "we" as a Guix project {10034}{10091}should try to untangle that mess whenever we can {10092}{10120}and in this case, we actually can {10121}{10207}so, in conclusion, I think running this 4 lines of Python code {10208}{10236}that you can see here {10262}{10294}is a much simpler solution {10295}{10351}than trying to bootstrap the build module, {10352}{10468}and tomli and all the modules required to get a Python based builder basically {10469}{10501}we can just do it in 4 lines of code {10556}{10606}there are a few changes for packagers {10607}{10654}which aime to reduce the need for custom phases {10655}{10787}first, it is possible to override the build backend detected from the `pyproject.toml` {10788}{10848}especially early adopters of PEP 517 {10849}{10905}use modules which have been renamed in the meantime {10933}{10990}I think both Poetry and Flit did that at some point {10991}{11048}and they split their build logic into a separate project {11049}{11077}and renamed the backend {11078}{11164}so, for some packages, it's necessary to override this detected build backend {11165}{11222}and you can do that simply by specifying the `#:build-backend` option {11223}{11280}and also if the detection is wrong at some point {11281}{11338}we can just override it without causing too much damage {11345}{11416}secondly, we have `#:configure-flags` {11425}{11483}they have existed before, but where applied only during install {11484}{11512}but not during the build phase {11513}{11552}which, I believe, is a ????, we'll see {11553}{11628}and this are kind of arguments to `setup.py` {11629}{11676}but their syntax depends on the build backend unfortunately {11677}{11738}so sometimes you can pass the arguments directly {11739}{11788}sometimes you need to pass them as an option to another option {11789}{11813}like we can see here {11814}{11870}I think that's the setuptools specific way to do it {11871}{11906}so you have an option {11907}{11976}and then you have to pass the actual option as an argument to that option {11977}{12063}and, in theory, they could also look completly different {12064}{12120}like with no relationship to any command line flag {12121}{12181}it's just legacy code/stuff right now {12182}{12208}and it's not pretty {12209}{12271}and it's one of the things that have been criticized about PEP 517 {12272}{12353}this configure flags are not really specified how they are supposed to look {12354}{12440}but this solution exists, so we have to swim with the flow, kind of {12444}{12500}and, finally, they are `#:test-flags` {12501}{12614}my proposal was to auto detect test binary based on the package's native inputs {12615}{12673}so if pytest is available, it will just use pytest {12674}{12723}if nose is available, it will use nose {12724}{12737}and so on {12738}{12826}now, test flags override the default arguments passed to this test command {12827}{12892}and, hopefully, this can reduce the number of custom phases required {12893}{12925}to exclude tests mostly {12926}{13015}in this case, we are simply don't want to run the `test_legacy_callbacks` function {13016}{13064}and so we can just exclude it with the flags {13092}{13157}and the package will build just fine, probably, hopefully {13158}{13220}so, where do we go from here? {13221}{13310}the first step would be to finalize the work on the Python build system {13311}{13404}and get the branch ready into a state where it can be merged {13405}{13484}unfortunately, right now, quite a few packages fail to build there {13485}{13571}because their previously disabled test suite fails {13572}{13612}not necessarily disabled, but it was never ran {13613}{13713}because the test runner was buggy and the `setup.py test` command simply did nothing {13714}{13745}and didn't detect edge cases {13746}{13816}we could also go a different route and add a new build system {13817}{13841}without touching the old one {13842}{13913}and just slowly migrate every Python package we have over {13914}{13945}instead of doing the big switch at once {13949}{13988}that was also one of the suggestions that was certainly possible {13989}{14027}I have explored that it would work {14028}{14154}as I mentioned earlier, currently the native inputs end up in wrapped binaries {14155}{14280}and I think this is one thing we should address too while doing the whole world rebuild anyway {14281}{14354}but I haven't done any work on that yet, unfortunately {14355}{14444}and finally, the pypi import needs support to read `pyproject.toml` {14445}{14499}not so much for the runtime dependencies, {14500}{14582}this is fine, we have another metadata file which contains the runtime dependencies {14583}{14615}but for build time and test dependencies {14616}{14668}because they are not included in the wheel file, {14669}{14754}there's a file called metadata, and it doesn't have this data {14755}{14870}so right now, if you import a `pyproject.toml` based project {14871}{14934}you will lack the build dependencies basically {14935}{15020}for example flit will not be in the native inpust right now {15021}{15091}and that's it for me for now {15092}{15166}I hope to answer some of your questions during the live Q and A {15167}{15253}and in the PDF version of this slides, you'll find some clickable links bellow {15254}{15340}to different talks and to the standards I have referenced {15341}{15369}so, I hope I'll see you soon! [-- Attachment #4: guix-days-2022-modernizing-python-build-system.mkv.ass --] [-- Type: text/plain, Size: 25221 bytes --] [Script Info] ; Script generated by Aegisub 3.2.2 ; http://www.aegisub.org/ Title: Default Aegisub file ScriptType: v4.00+ WrapStyle: 0 ScaledBorderAndShadow: yes YCbCr Matrix: TV.601 PlayResX: 1916 PlayResY: 1076 [Aegisub Project Garbage] Export Encoding: Unicode (UTF-8) Audio File: guix-days-2022-modernizing-python-build-system.mkv Video File: guix-days-2022-modernizing-python-build-system.mkv Video AR Mode: 4 Video AR Value: 1.780669 Video Zoom Percent: 0.250000 Active Line: 248 Video Position: 15341 [V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1 [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.64,0:00:02.60,Default,,0,0,0,,hello everyone Dialogue: 0,0:00:02.60,0:00:06.92,Default,,0,0,0,,nice to have you here at Guix Days 2022 Dialogue: 0,0:00:06.92,0:00:10.64,Default,,0,0,0,,I would like to talk about Python build system Dialogue: 0,0:00:10.64,0:00:13.32,Default,,0,0,0,,and why we need to modernize it Dialogue: 0,0:00:13.32,0:00:16.76,Default,,0,0,0,,python-build-system is the Guix component Dialogue: 0,0:00:16.76,0:00:21.38,Default,,0,0,0,,that turns the source distribution of any Python package out there Dialogue: 0,0:00:21.38,0:00:23.38,Default,,0,0,0,,into an installable image Dialogue: 0,0:00:23.38,0:00:27.78,Default,,0,0,0,,so, basically, a directory under the GNU store Dialogue: 0,0:00:27.78,0:00:33.14,Default,,0,0,0,,let's have a look at tomli a quite simple Python package Dialogue: 0,0:00:33.14,0:00:36.08,Default,,0,0,0,,which has no external dependencies Dialogue: 0,0:00:36.08,0:00:41.12,Default,,0,0,0,,so, if we import it using `guix import`, here Dialogue: 0,0:00:41.12,0:00:45.94,Default,,0,0,0,,add a few imports to the resulting file Dialogue: 0,0:00:45.94,0:00:47.94,Default,,0,0,0,,and then try to build it Dialogue: 0,0:00:47.94,0:00:51.12,Default,,0,0,0,,it should work out of the box, right? Dialogue: 0,0:00:51.12,0:00:53.84,Default,,0,0,0,,The problem is, it does not! Dialogue: 0,0:00:53.84,0:00:57.38,Default,,0,0,0,,and instead we see at the bottom Dialogue: 0,0:00:57.38,0:01:03.20,Default,,0,0,0,,an error message saying "no setup.py found" Dialogue: 0,0:01:03.20,0:01:07.64,Default,,0,0,0,,and, indeed, if we look at the source distribution Dialogue: 0,0:01:07.64,0:01:11.32,Default,,0,0,0,,there is no `setup.py` to be found anywhere Dialogue: 0,0:01:11.32,0:01:13.86,Default,,0,0,0,,So, what is going on? Dialogue: 0,0:01:13.86,0:01:18.26,Default,,0,0,0,,Fortunately, this package is already available in Guix Dialogue: 0,0:01:18.26,0:01:20.26,Default,,0,0,0,,as `python-tomli` Dialogue: 0,0:01:20.26,0:01:22.64,Default,,0,0,0,,so we can have a look at its definition Dialogue: 0,0:01:22.64,0:01:24.64,Default,,0,0,0,,to see how it is currently built Dialogue: 0,0:01:24.64,0:01:26.64,Default,,0,0,0,,let's just do that Dialogue: 0,0:01:26.64,0:01:30.68,Default,,0,0,0,,looking at the build system's arguments Dialogue: 0,0:01:30.68,0:01:35.92,Default,,0,0,0,,we see the phases `build` here and `install` here Dialogue: 0,0:01:37.36,0:01:42.04,Default,,0,0,0,,which are usually provided by Python build system Dialogue: 0,0:01:42.04,0:01:44.66,Default,,0,0,0,,replaced with custom code Dialogue: 0,0:01:44.66,0:01:48.36,Default,,0,0,0,,I'm only showing the interesting parts here Dialogue: 0,0:01:48.36,0:01:52.10,Default,,0,0,0,,the actual commands are actually much longer Dialogue: 0,0:01:52.10,0:01:55.50,Default,,0,0,0,,first the build phase Dialogue: 0,0:01:55.50,0:01:59.60,Default,,0,0,0,,uses a Python module called `build` Dialogue: 0,0:01:59.60,0:02:03.80,Default,,0,0,0,,to build the wheel, as we can see here Dialogue: 0,0:02:03.80,0:02:12.14,Default,,0,0,0,,the wheel is basically a distribution format in the Python world Dialogue: 0,0:02:12.14,0:02:16.54,Default,,0,0,0,,then in the install phase Dialogue: 0,0:02:16.54,0:02:20.50,Default,,0,0,0,,we simply use a well known tool called Pip Dialogue: 0,0:02:20.50,0:02:25.06,Default,,0,0,0,,to install the wheel that we just built Dialogue: 0,0:02:25.06,0:02:31.04,Default,,0,0,0,,into the output which would be somewhere around the GNU store Dialogue: 0,0:02:31.04,0:02:35.58,Default,,0,0,0,,so how does the build module knows what to do Dialogue: 0,0:02:35.58,0:02:37.58,Default,,0,0,0,,what to build? Dialogue: 0,0:02:37.58,0:02:41.84,Default,,0,0,0,,it follows PEP 517 Dialogue: 0,0:02:41.84,0:02:45.48,Default,,0,0,0,,PEPs are kind of the RFCs of the Python world Dialogue: 0,0:02:45.48,0:02:52.78,Default,,0,0,0,,and this PEP basically splits building wheels into two parts Dialogue: 0,0:02:52.78,0:02:54.78,Default,,0,0,0,,a frontend and a backend Dialogue: 0,0:02:54.78,0:02:57.72,Default,,0,0,0,,the frontend is the user facing part Dialogue: 0,0:02:57.72,0:03:00.94,Default,,0,0,0,,for example the `build` we just saw here Dialogue: 0,0:03:00.94,0:03:04.78,Default,,0,0,0,,this is the user facing part of the build process Dialogue: 0,0:03:04.78,0:03:06.78,Default,,0,0,0,,and then a backend Dialogue: 0,0:03:06.78,0:03:16.84,Default,,0,0,0,,the frontend is supposed to read a file called `pyproject.toml` Dialogue: 0,0:03:16.84,0:03:18.84,Default,,0,0,0,,this is what we are seeing here Dialogue: 0,0:03:18.84,0:03:25.70,Default,,0,0,0,,and in that TOML file, a section called `build-system` Dialogue: 0,0:03:25.70,0:03:27.30,Default,,0,0,0,,this one here Dialogue: 0,0:03:27.30,0:03:31.48,Default,,0,0,0,,declares which backend will actually build our wheel Dialogue: 0,0:03:31.48,0:03:36.98,Default,,0,0,0,,and, in this case, another package called `flit_core` Dialogue: 0,0:03:36.98,0:03:42.68,Default,,0,0,0,,its requirements a build time dependency of tomli Dialogue: 0,0:03:42.68,0:03:46.96,Default,,0,0,0,,and its module `flit_core.buildapi` Dialogue: 0,0:03:46.96,0:03:50.46,Default,,0,0,0,,is providing us with the build entrypoints. Dialogue: 0,0:03:50.46,0:03:55.12,Default,,0,0,0,,The file also contains standardize metadata Dialogue: 0,0:03:55.12,0:03:57.74,Default,,0,0,0,,and tool related configuration data Dialogue: 0,0:03:57.74,0:03:59.74,Default,,0,0,0,,which I'm not showing here Dialogue: 0,0:03:59.74,0:04:06.74,Default,,0,0,0,,A PEP 517* compatible build backend Dialogue: 0,0:04:06.74,0:04:10.56,Default,,0,0,0,,provides a standard function entrypoint Dialogue: 0,0:04:10.56,0:04:12.56,Default,,0,0,0,,called `build_wheel` Dialogue: 0,0:04:12.56,0:04:17.00,Default,,0,0,0,,in the module I just referenced here in the top Dialogue: 0,0:04:17.00,0:04:21.42,Default,,0,0,0,,and, if we call it, it will just do its magic Dialogue: 0,0:04:21.42,0:04:24.06,Default,,0,0,0,,and it will produce a wheel file Dialogue: 0,0:04:24.06,0:04:28.30,Default,,0,0,0,,and its first argument it's the wheel directory Dialogue: 0,0:04:28.30,0:04:32.22,Default,,0,0,0,,that wheel is basically a zip file Dialogue: 0,0:04:32.22,0:04:33.94,Default,,0,0,0,,with a predefined structure Dialogue: 0,0:04:33.94,0:04:37.30,Default,,0,0,0,,that we can extract into our store Dialogue: 0,0:04:37.30,0:04:40.12,Default,,0,0,0,,and we are almost done Dialogue: 0,0:04:40.12,0:04:44.76,Default,,0,0,0,,and this is what Pip does in the install phase here Dialogue: 0,0:04:50.36,0:04:54.48,Default,,0,0,0,,and that's basically the entire build process Dialogue: 0,0:04:54.48,0:04:57.42,Default,,0,0,0,,as specified by PEP 517 Dialogue: 0,0:04:57.42,0:05:00.50,Default,,0,0,0,,there is no `setup.py` involved any more Dialogue: 0,0:05:00.50,0:05:01.50,Default,,0,0,0,,we don't have to call it Dialogue: 0,0:05:01.50,0:05:06.78,Default,,0,0,0,,we don't have to create it as a package provider Dialogue: 0,0:05:08.16,0:05:14.08,Default,,0,0,0,,so the reason why the error message I showed, showed up earlier Dialogue: 0,0:05:14.08,0:05:16.46,Default,,0,0,0,,will keep on poping up more and more Dialogue: 0,0:05:16.52,0:05:19.34,Default,,0,0,0,,is pretty simple we are late! Dialogue: 0,0:05:19.34,0:05:22.46,Default,,0,0,0,,we are really really late, actually Dialogue: 0,0:05:22.46,0:05:28.72,Default,,0,0,0,,because PEP 517 was originally created in 2015 Dialogue: 0,0:05:28.72,0:05:34.14,Default,,0,0,0,,and that it gained provisional acceptance in 2017 Dialogue: 0,0:05:34.14,0:05:36.14,Default,,0,0,0,,and just last year, Dialogue: 0,0:05:36.14,0:05:42.74,Default,,0,0,0,,after being basically being the *de facto* successor of `setup.py` for some time Dialogue: 0,0:05:42.74,0:05:46.32,Default,,0,0,0,,it has been finalized and fully accepted Dialogue: 0,0:05:46.32,0:05:53.18,Default,,0,0,0,,and more importantly, flit which you remember from the previous slide Dialogue: 0,0:05:53.18,0:05:57.26,Default,,0,0,0,,is also able to create source distributions Dialogue: 0,0:05:57.26,0:05:59.54,Default,,0,0,0,,and upload them to PyPI Dialogue: 0,0:05:59.54,0:06:03.80,Default,,0,0,0,,Python's public package repository basically Dialogue: 0,0:06:03.80,0:06:08.08,Default,,0,0,0,,so far, it has been generating a `setup.py` Dialogue: 0,0:06:08.08,0:06:10.88,Default,,0,0,0,,and does nobody really noticed Dialogue: 0,0:06:10.88,0:06:17.74,Default,,0,0,0,,but since version 3.5, which was released in November 2021 Dialogue: 0,0:06:17.74,0:06:21.88,Default,,0,0,0,,flit stop doing that by default Dialogue: 0,0:06:21.88,0:06:26.98,Default,,0,0,0,,and thus we are seeing more and more packages without `setup.py` Dialogue: 0,0:06:26.98,0:06:28.98,Default,,0,0,0,,in their source distributions Dialogue: 0,0:06:28.98,0:06:33.78,Default,,0,0,0,,and so we are basically unable to build this projects right now Dialogue: 0,0:06:33.78,0:06:35.78,Default,,0,0,0,,or this Python modules Dialogue: 0,0:06:35.78,0:06:40.98,Default,,0,0,0,,a look at the Guix's repository in late January Dialogue: 0,0:06:40.98,0:06:45.26,Default,,0,0,0,,and back then only 11 packages actually used Pip Dialogue: 0,0:06:45.26,0:06:47.84,Default,,0,0,0,,or PyPA build as we've seen Dialogue: 0,0:06:47.84,0:06:51.80,Default,,0,0,0,,but I think our ecosystem is quite old Dialogue: 0,0:06:51.80,0:06:56.68,Default,,0,0,0,,with about half the packages not being the latest versions available upstream Dialogue: 0,0:06:56.68,0:06:58.68,Default,,0,0,0,,according to `guix refresh` Dialogue: 0,0:06:58.68,0:07:05.56,Default,,0,0,0,,so it's possible that more packages actually require support for this `pyproject.toml` Dialogue: 0,0:07:05.56,0:07:10.40,Default,,0,0,0,,and we simply have not updated them yet for whatever reason Dialogue: 0,0:07:10.40,0:07:14.82,Default,,0,0,0,,maybe because it's too difficult or nobody poped to do it yet Dialogue: 0,0:07:16.82,0:07:22.16,Default,,0,0,0,,they are also more issues with our current Python build system Dialogue: 0,0:07:22.16,0:07:29.74,Default,,0,0,0,,for instance `setup.py` test ???? has been deprecated for quite some time Dialogue: 0,0:07:29.74,0:07:33.14,Default,,0,0,0,,since 2019 actually Dialogue: 0,0:07:33.14,0:07:39.12,Default,,0,0,0,,and the default Python build system's default check phase relies on that Dialogue: 0,0:07:39.12,0:07:42.72,Default,,0,0,0,,even though it doesn't work for a lot of packages right now Dialogue: 0,0:07:42.72,0:07:47.12,Default,,0,0,0,,and thus, almost every package in our repository Dialogue: 0,0:07:47.12,0:07:52.12,Default,,0,0,0,,needs to replace that check phase with a call to Pytest Dialogue: 0,0:07:52.12,0:07:56.40,Default,,0,0,0,,which is the *de facto* standard right now for executing tests Dialogue: 0,0:07:56.40,0:08:03.02,Default,,0,0,0,,???? tox does something similar but not really quite the same Dialogue: 0,0:08:03.02,0:08:08.68,Default,,0,0,0,,another long standing issue is wrapping of Python path Dialogue: 0,0:08:08.68,0:08:10.68,Default,,0,0,0,,or Guix Python path now Dialogue: 0,0:08:10.68,0:08:13.52,Default,,0,0,0,,because it includes native inputs Dialogue: 0,0:08:13.52,0:08:16.94,Default,,0,0,0,,and thus propagates way too many packages Dialogue: 0,0:08:16.94,0:08:22.30,Default,,0,0,0,,and I'm sure we can find more issues with the current Python build system Dialogue: 0,0:08:22.30,0:08:34.40,Default,,0,0,0,,thus, for almost a year now, I've been working on a modernized Python build system Dialogue: 0,0:08:34.40,0:08:37.00,Default,,0,0,0,,that addresses some of this issues Dialogue: 0,0:08:37.00,0:08:41.68,Default,,0,0,0,,unfortunately I haven't had much time lately to improve it for other Dialogue: 0,0:08:41.68,0:08:43.58,Default,,0,0,0,,I hope to pick it up again Dialogue: 0,0:08:43.58,0:08:44.96,Default,,0,0,0,,and get it into shape Dialogue: 0,0:08:44.96,0:08:46.96,Default,,0,0,0,,and get it to master at some point Dialogue: 0,0:08:46.96,0:08:48.96,Default,,0,0,0,,you can read about it here Dialogue: 0,0:08:48.96,0:08:54.48,Default,,0,0,0,,in Guix issue #46848 Dialogue: 0,0:08:54.48,0:09:00.88,Default,,0,0,0,,or you can just pull a branch called `wip-python-pep517` Dialogue: 0,0:09:00.88,0:09:03.56,Default,,0,0,0,,it's also build by the CI by the way Dialogue: 0,0:09:03.56,0:09:07.70,Default,,0,0,0,,so you don't have to do the whole world rebuild by yourself Dialogue: 0,0:09:07.70,0:09:12.62,Default,,0,0,0,,and it's using exactly the method I described above Dialogue: 0,0:09:12.92,0:09:20.66,Default,,0,0,0,,the part written in Guile ends up reading the project's `pyproject.toml` Dialogue: 0,0:09:20.66,0:09:28.58,Default,,0,0,0,,and then calls the build system's entrypoint `build_wheel` as we can see here Dialogue: 0,0:09:28.58,0:09:34.84,Default,,0,0,0,,and if there's no `pyproject.toml` it's also not a problem actually Dialogue: 0,0:09:34.84,0:09:40.10,Default,,0,0,0,,because setuptools, which is still provided by default, Dialogue: 0,0:09:40.10,0:09:43.10,Default,,0,0,0,,and still included in the build system by default, Dialogue: 0,0:09:43.10,0:09:49.26,Default,,0,0,0,,because setuptools provides a PEP 517 build backend Dialogue: 0,0:09:51.16,0:09:57.00,Default,,0,0,0,,which simply uses the existing `setup.py` behind the curtains Dialogue: 0,0:09:57.00,0:10:02.68,Default,,0,0,0,,so we don't have to, like provide extra logic for that Dialogue: 0,0:10:04.30,0:10:09.00,Default,,0,0,0,,they were actually other options for this build phase Dialogue: 0,0:10:09.00,0:10:11.00,Default,,0,0,0,,in how to do it basically Dialogue: 0,0:10:12.14,0:10:15.36,Default,,0,0,0,,for example, we could also use the build module Dialogue: 0,0:10:15.36,0:10:16.98,Default,,0,0,0,,that we have seen above Dialogue: 0,0:10:16.98,0:10:19.96,Default,,0,0,0,,and some packages use currently Dialogue: 0,0:10:19.96,0:10:23.50,Default,,0,0,0,,however that raises questions about bootstraping, like Dialogue: 0,0:10:23.50,0:10:28.10,Default,,0,0,0,,how do you build the build package if it essentially requires itself Dialogue: 0,0:10:28.10,0:10:31.70,Default,,0,0,0,,because the build module is part of the Python build system Dialogue: 0,0:10:31.70,0:10:34.74,Default,,0,0,0,,and of of it's dependency Dialogue: 0,0:10:34.74,0:10:38.76,Default,,0,0,0,,tomli for example is one of the dependency of build Dialogue: 0,0:10:38.76,0:10:42.10,Default,,0,0,0,,and what do we do with tomli Dialogue: 0,0:10:42.10,0:10:44.90,Default,,0,0,0,,like how do we install it without having build Dialogue: 0,0:10:44.90,0:10:49.26,Default,,0,0,0,,so this is tricky, and I tried it in the beginning Dialogue: 0,0:10:49.26,0:10:51.02,Default,,0,0,0,,and it works Dialogue: 0,0:10:51.02,0:10:55.28,Default,,0,0,0,,but we need to do like some weird manual copying Dialogue: 0,0:10:55.28,0:10:58.46,Default,,0,0,0,,and that's not really pretty to be honest Dialogue: 0,0:10:58.46,0:11:00.78,Default,,0,0,0,,we could also use Pip Dialogue: 0,0:11:00.78,0:11:04.12,Default,,0,0,0,,which is usually distributed with Python Dialogue: 0,0:11:04.12,0:11:09.16,Default,,0,0,0,,also our python package bundles Pip and setuptools Dialogue: 0,0:11:09.16,0:11:12.36,Default,,0,0,0,,this has caused a few issues in the past Dialogue: 0,0:11:12.36,0:11:14.70,Default,,0,0,0,,because we cannot update either of them Dialogue: 0,0:11:14.70,0:11:17.78,Default,,0,0,0,,for provide alternative newer versions Dialogue: 0,0:11:17.78,0:11:22.18,Default,,0,0,0,,without having a full world rebuild basically Dialogue: 0,0:11:22.18,0:11:25.40,Default,,0,0,0,,and also Pip being a massive project Dialogue: 0,0:11:25.40,0:11:28.38,Default,,0,0,0,,it bundles quite a few of it's dependencies Dialogue: 0,0:11:28.38,0:11:30.72,Default,,0,0,0,,and I feel "we" as a Guix project Dialogue: 0,0:11:30.72,0:11:34.66,Default,,0,0,0,,should try to untangle that mess whenever we can Dialogue: 0,0:11:34.66,0:11:36.66,Default,,0,0,0,,and in this case, we actually can Dialogue: 0,0:11:36.66,0:11:42.22,Default,,0,0,0,,so, in conclusion, I think running this 4 lines of Python code Dialogue: 0,0:11:42.22,0:11:44.22,Default,,0,0,0,,that you can see here Dialogue: 0,0:11:45.88,0:11:48.82,Default,,0,0,0,,is a much simpler solution Dialogue: 0,0:11:48.82,0:11:51.98,Default,,0,0,0,,than trying to bootstrap the build module, Dialogue: 0,0:11:51.98,0:12:00.24,Default,,0,0,0,,and tomli and all the modules required to get a Python based builder basically Dialogue: 0,0:12:00.24,0:12:03.02,Default,,0,0,0,,we can just do it in 4 lines of code Dialogue: 0,0:12:06.52,0:12:09.76,Default,,0,0,0,,there are a few changes for packagers Dialogue: 0,0:12:09.76,0:12:13.34,Default,,0,0,0,,which aime to reduce the need for custom phases Dialogue: 0,0:12:13.34,0:12:22.66,Default,,0,0,0,,first, it is possible to override the build backend detected from the `pyproject.toml` Dialogue: 0,0:12:22.66,0:12:27.00,Default,,0,0,0,,especially early adopters of PEP 517 Dialogue: 0,0:12:27.00,0:12:30.94,Default,,0,0,0,,use modules which have been renamed in the meantime Dialogue: 0,0:12:32.66,0:12:36.08,Default,,0,0,0,,I think both Poetry and Flit did that at some point Dialogue: 0,0:12:36.08,0:12:40.62,Default,,0,0,0,,and they split their build logic into a separate project Dialogue: 0,0:12:40.62,0:12:42.62,Default,,0,0,0,,and renamed the backend Dialogue: 0,0:12:42.62,0:12:48.72,Default,,0,0,0,,so, for some packages, it's necessary to override this detected build backend Dialogue: 0,0:12:48.72,0:12:52.60,Default,,0,0,0,,and you can do that simply by specifying the `#:build-backend` option Dialogue: 0,0:12:52.60,0:12:56.30,Default,,0,0,0,,and also if the detection is wrong at some point Dialogue: 0,0:12:56.30,0:13:00.16,Default,,0,0,0,,we can just override it without causing too much damage Dialogue: 0,0:13:01.10,0:13:05.68,Default,,0,0,0,,secondly, we have `#:configure-flags` Dialogue: 0,0:13:05.98,0:13:10.46,Default,,0,0,0,,they have existed before, but where applied only during install Dialogue: 0,0:13:10.46,0:13:12.14,Default,,0,0,0,,but not during the build phase Dialogue: 0,0:13:12.14,0:13:15.30,Default,,0,0,0,,which, I believe, is a ????, we'll see Dialogue: 0,0:13:15.30,0:13:20.06,Default,,0,0,0,,and this are kind of arguments to `setup.py` Dialogue: 0,0:13:20.14,0:13:23.64,Default,,0,0,0,,but their syntax depends on the build backend unfortunately Dialogue: 0,0:13:23.64,0:13:27.80,Default,,0,0,0,,so sometimes you can pass the arguments directly Dialogue: 0,0:13:27.80,0:13:31.46,Default,,0,0,0,,sometimes you need to pass them as an option to another option Dialogue: 0,0:13:31.46,0:13:33.32,Default,,0,0,0,,like we can see here Dialogue: 0,0:13:33.32,0:13:37.28,Default,,0,0,0,,I think that's the setuptools specific way to do it Dialogue: 0,0:13:37.28,0:13:39.54,Default,,0,0,0,,so you have an option Dialogue: 0,0:13:39.54,0:13:44.48,Default,,0,0,0,,and then you have to pass the actual option as an argument to that option Dialogue: 0,0:13:44.48,0:13:50.60,Default,,0,0,0,,and, in theory, they could also look completly different Dialogue: 0,0:13:50.60,0:13:53.98,Default,,0,0,0,,like with no relationship to any command line flag Dialogue: 0,0:13:53.98,0:13:58.94,Default,,0,0,0,,it's just legacy code/stuff right now Dialogue: 0,0:13:58.94,0:14:00.50,Default,,0,0,0,,and it's not pretty Dialogue: 0,0:14:00.50,0:14:05.06,Default,,0,0,0,,and it's one of the things that have been criticized about PEP 517 Dialogue: 0,0:14:05.06,0:14:10.78,Default,,0,0,0,,this configure flags are not really specified how they are supposed to look Dialogue: 0,0:14:10.78,0:14:16.18,Default,,0,0,0,,but this solution exists, so we have to swim with the flow, kind of Dialogue: 0,0:14:17.00,0:14:20.96,Default,,0,0,0,,and, finally, they are `#:test-flags` Dialogue: 0,0:14:20.96,0:14:28.48,Default,,0,0,0,,my proposal was to auto detect test binary based on the package's native inputs Dialogue: 0,0:14:28.48,0:14:32.92,Default,,0,0,0,,so if pytest is available, it will just use pytest Dialogue: 0,0:14:32.92,0:14:35.74,Default,,0,0,0,,if nose is available, it will use nose Dialogue: 0,0:14:35.74,0:14:37.16,Default,,0,0,0,,and so on Dialogue: 0,0:14:37.16,0:14:43.22,Default,,0,0,0,,now, test flags override the default arguments passed to this test command Dialogue: 0,0:14:43.22,0:14:47.54,Default,,0,0,0,,and, hopefully, this can reduce the number of custom phases required Dialogue: 0,0:14:47.54,0:14:49.70,Default,,0,0,0,,to exclude tests mostly Dialogue: 0,0:14:49.70,0:14:55.82,Default,,0,0,0,,in this case, we are simply don't want to run the `test_legacy_callbacks` function Dialogue: 0,0:14:55.82,0:14:59.46,Default,,0,0,0,,and so we can just exclude it with the flags Dialogue: 0,0:15:01.38,0:15:05.72,Default,,0,0,0,,and the package will build just fine, probably, hopefully Dialogue: 0,0:15:05.72,0:15:09.92,Default,,0,0,0,,so, where do we go from here? Dialogue: 0,0:15:09.92,0:15:16.08,Default,,0,0,0,,the first step would be to finalize the work on the Python build system Dialogue: 0,0:15:16.08,0:15:23.16,Default,,0,0,0,,and get the branch ready into a state where it can be merged Dialogue: 0,0:15:23.16,0:15:28.50,Default,,0,0,0,,unfortunately, right now, quite a few packages fail to build there Dialogue: 0,0:15:28.50,0:15:34.04,Default,,0,0,0,,because their previously disabled test suite fails Dialogue: 0,0:15:34.04,0:15:37.36,Default,,0,0,0,,not necessarily disabled, but it was never ran Dialogue: 0,0:15:37.36,0:15:43.92,Default,,0,0,0,,because the test runner was buggy and the `setup.py test` command simply did nothing Dialogue: 0,0:15:43.92,0:15:46.24,Default,,0,0,0,,and didn't detect edge cases Dialogue: 0,0:15:46.24,0:15:51.38,Default,,0,0,0,,we could also go a different route and add a new build system Dialogue: 0,0:15:51.38,0:15:53.22,Default,,0,0,0,,without touching the old one Dialogue: 0,0:15:53.22,0:15:57.80,Default,,0,0,0,,and just slowly migrate every Python package we have over Dialogue: 0,0:15:57.80,0:15:59.90,Default,,0,0,0,,instead of doing the big switch at once Dialogue: 0,0:16:00.02,0:16:03.30,Default,,0,0,0,,that was also one of the suggestions that was certainly possible Dialogue: 0,0:16:03.30,0:16:05.76,Default,,0,0,0,,I have explored that it would work Dialogue: 0,0:16:05.76,0:16:14.98,Default,,0,0,0,,as I mentioned earlier, currently the native inputs end up in wrapped binaries Dialogue: 0,0:16:14.98,0:16:23.38,Default,,0,0,0,,and I think this is one thing we should address too while doing the whole world rebuild anyway Dialogue: 0,0:16:23.38,0:16:28.36,Default,,0,0,0,,but I haven't done any work on that yet, unfortunately Dialogue: 0,0:16:28.36,0:16:34.98,Default,,0,0,0,,and finally, the pypi import needs support to read `pyproject.toml` Dialogue: 0,0:16:34.98,0:16:38.74,Default,,0,0,0,,not so much for the runtime dependencies, Dialogue: 0,0:16:38.74,0:16:43.88,Default,,0,0,0,,this is fine, we have another metadata file which contains the runtime dependencies Dialogue: 0,0:16:43.88,0:16:46.76,Default,,0,0,0,,but for build time and test dependencies Dialogue: 0,0:16:46.76,0:16:49.84,Default,,0,0,0,,because they are not included in the wheel file, Dialogue: 0,0:16:49.84,0:16:55.80,Default,,0,0,0,,there's a file called metadata, and it doesn't have this data Dialogue: 0,0:16:55.80,0:17:03.78,Default,,0,0,0,,so right now, if you import a `pyproject.toml` based project Dialogue: 0,0:17:03.78,0:17:08.70,Default,,0,0,0,,you will lack the build dependencies basically Dialogue: 0,0:17:08.70,0:17:13.98,Default,,0,0,0,,for example flit will not be in the native inpust right now Dialogue: 0,0:17:13.98,0:17:19.36,Default,,0,0,0,,and that's it for me for now Dialogue: 0,0:17:19.36,0:17:24.60,Default,,0,0,0,,I hope to answer some of your questions during the live Q and A Dialogue: 0,0:17:24.60,0:17:30.38,Default,,0,0,0,,and in the PDF version of this slides, you'll find some clickable links bellow Dialogue: 0,0:17:30.38,0:17:36.34,Default,,0,0,0,,to different talks and to the standards I have referenced Dialogue: 0,0:17:36.34,0:17:38.34,Default,,0,0,0,,so, I hope I'll see you soon! ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-01 22:08 ` Tanguy LE CARROUR @ 2022-03-01 22:36 ` Julien Lepiller 0 siblings, 0 replies; 12+ messages in thread From: Julien Lepiller @ 2022-03-01 22:36 UTC (permalink / raw) To: Tanguy LE CARROUR; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 899 bytes --] Thanks, I changed the default format and published the .ass file on my server. Not sure about the other files. On March 1, 2022 11:08:50 PM GMT+01:00, Tanguy LE CARROUR <tanguy@bioneland.org> wrote: >Hi Julien, > > >Quoting Julien Lepiller (2022-03-01 15:36:19) >> I'm looking for volunteers to create English subtitles for the Guix Days >> talks. […] Please send me the subtitles once >> they are completed, I'll add them with the videos. > >It's my first time, so thank you for your indulgence! :-) > >I'm attaching my humble contribution: > >- `.txt` the transcription ; >- `.ass` the file created by Aegisub ; and >- `.sub` an attempt to export it to sub format. > >I have to admit that is pretty bad "punctuation-wise", because I was not >sure were the sentences started and ended. Sorry! > >Just let me know if I have to fix anything. > >Regards, > >-- >Tanguy [-- Attachment #2: Type: text/html, Size: 1350 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-01 14:36 Julien Lepiller 2022-03-01 21:15 ` Luis Felipe 2022-03-01 22:08 ` Tanguy LE CARROUR @ 2022-03-01 23:18 ` Matt 2022-03-02 3:44 ` Matt 2022-03-02 8:08 ` Tanguy LE CARROUR 2 siblings, 2 replies; 12+ messages in thread From: Matt @ 2022-03-01 23:18 UTC (permalink / raw) To: Julien Lepiller; +Cc: guix-devel ---- On Tue, 01 Mar 2022 09:36:19 -0500 Julien Lepiller <julien@lepiller.eu> wrote ---- > Hi Guix! > > I'm looking for volunteers to create English subtitles for the Guix Days > talks. It would be great for people who are not very good with spoken > English but who can still understand text. > > We have created a pad with the list of videos and steps to coordinate > and make sure we don't all work on the same videos. Please add you name > in front of the video you want to create subtitles for: > > https://mensuel.framapad.org/p/guixdays2022-videosubtitles-9stl > > You can use aegisub to create the subtitles. Note that it's a lot of > work (typically 1 hour for ~10 minutes of video), so I'd be glad for any > work you can do, even if it's partial. Please send me the subtitles once > they are completed, I'll add them with the videos. > I've started working on the "Dreaming of better patch review". This is great steno practice! Aegisub kept crashing when setting hotkeys, but I was able to set some up that make navigation easier. In the "subtitle edit box", I added: Alt-P audio/play/line Ctrl-N time/next Ctrl-P time/prev This is allows me to navigate by lines, play the audio for that section, and then press Return to "commit" what I wrote for the subtitle. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-01 23:18 ` Matt @ 2022-03-02 3:44 ` Matt 2022-03-05 4:54 ` Matt 2022-03-02 8:08 ` Tanguy LE CARROUR 1 sibling, 1 reply; 12+ messages in thread From: Matt @ 2022-03-02 3:44 UTC (permalink / raw) To: Matt; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 292 bytes --] ---- On Tue, 01 Mar 2022 18:18:42 -0500 Matt <matt@excalamus.com> wrote ---- > I've started working on the "Dreaming of better patch review". This is great steno practice! Got to about the 9:21 mark. Putting my work so far here in case I get abducted by aliens before I can complete it. [-- Attachment #2: Guix - Packaging tutorial-R8DtPnP4eL8.ass --] [-- Type: application/octet-stream, Size: 21796 bytes --] [Script Info] ; Script generated by Aegisub 3.2.2 ; http://www.aegisub.org/ Title: Default Aegisub file ScriptType: v4.00+ WrapStyle: 0 ScaledBorderAndShadow: yes YCbCr Matrix: TV.601 PlayResX: 1280 PlayResY: 720 [Aegisub Project Garbage] Audio File: /home/ahab/Downloads/guix-days-2022-patch-review.mp4 Video File: /home/ahab/Downloads/guix-days-2022-patch-review.mp4 Video AR Mode: 4 Video AR Value: 1.777778 Video Zoom Percent: 0.875000 Scroll Position: 271 Active Line: 279 Video Position: 14025 [V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1 [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,Good morning, I'm really pleased Dialogue: 0,0:00:05.00,0:00:07.00,Default,,0,0,0,,to be speaking at Guix Days. Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,My talk today is about Dialogue: 0,0:00:09.00,0:00:11.00,Default,,0,0,0,,improving our patch review and Dialogue: 0,0:00:11.00,0:00:13.00,Default,,0,0,0,,my hopes for what it could be and Dialogue: 0,0:00:13.00,0:00:15.00,Default,,0,0,0,,how it could be a lot better. Dialogue: 0,0:00:15.00,0:00:17.00,Default,,0,0,0,,Let's get right in. Dialogue: 0,0:00:17.00,0:00:19.00,Default,,0,0,0,,So first, a little about Dialogue: 0,0:00:19.00,0:00:21.00,Default,,0,0,0,,me. Dialogue: 0,0:00:21.00,0:00:23.00,Default,,0,0,0,,My name is Arun. I've been a Dialogue: 0,0:00:23.00,0:00:25.00,Default,,0,0,0,,Guix contributor since 2016 Dialogue: 0,0:00:25.00,0:00:27.00,Default,,0,0,0,,and a committor Dialogue: 0,0:00:27.00,0:00:29.00,Default,,0,0,0,,since 2017. Dialogue: 0,0:00:29.00,0:00:31.00,Default,,0,0,0,,Guix is what got me really interested Dialogue: 0,0:00:31.00,0:00:33.00,Default,,0,0,0,,in Guile. I've Dialogue: 0,0:00:33.00,0:00:35.00,Default,,0,0,0,,been interested in the state of the issue Dialogue: 0,0:00:35.00,0:00:37.00,Default,,0,0,0,,tracker for a long, long time. Dialogue: 0,0:00:37.00,0:00:39.00,Default,,0,0,0,,Since Dialogue: 0,0:00:39.00,0:00:41.00,Default,,0,0,0,,the sad days of the Debbugs Dialogue: 0,0:00:41.00,0:00:43.00,Default,,0,0,0,,web interface before Mumi Dialogue: 0,0:00:43.00,0:00:45.00,Default,,0,0,0,,even existed. I am Dialogue: 0,0:00:45.00,0:00:47.00,Default,,0,0,0,,the author of guile-email and guile-[sapien???] Dialogue: 0,0:00:47.00,0:00:49.00,Default,,0,0,0,,both of which are Dialogue: 0,0:00:49.00,0:00:51.00,Default,,0,0,0,,essential to Mumi. Dialogue: 0,0:00:51.00,0:00:53.00,Default,,0,0,0,,So the story is that Dialogue: 0,0:00:53.00,0:00:55.00,Default,,0,0,0,,So the story is that Dialogue: 0,0:00:55.00,0:00:57.00,Default,,0,0,0,,I was... So, before Mumi, Dialogue: 0,0:00:57.00,0:00:59.00,Default,,0,0,0,,existed I was writing Dialogue: 0,0:00:59.00,0:01:01.00,Default,,0,0,0,,a new web interface for Dialogue: 0,0:01:01.00,0:01:03.00,Default,,0,0,0,,Debbugs, the Debbugs tracker, Dialogue: 0,0:01:03.00,0:01:05.00,Default,,0,0,0,,and unbeknownst to me Dialogue: 0,0:01:05.00,0:01:07.00,Default,,0,0,0,,Ricardo was doing the same thing. Dialogue: 0,0:01:07.00,0:01:09.00,Default,,0,0,0,,And he Dialogue: 0,0:01:09.00,0:01:11.00,Default,,0,0,0,,he had listed before Dialogue: 0,0:01:11.00,0:01:13.00,Default,,0,0,0,,I could. Dialogue: 0,0:01:13.00,0:01:15.00,Default,,0,0,0,,He listed his version before I could. Dialogue: 0,0:01:15.00,0:01:17.00,Default,,0,0,0,, Dialogue: 0,0:01:17.00,0:01:19.00,Default,,0,0,0,,And Dialogue: 0,0:01:19.00,0:01:21.00,Default,,0,0,0,,And I looked at his code Dialogue: 0,0:01:21.00,0:01:23.00,Default,,0,0,0,,and it turned out that his Dialogue: 0,0:01:23.00,0:01:25.00,Default,,0,0,0,,web interface Dialogue: 0,0:01:25.00,0:01:27.00,Default,,0,0,0,,was a lot better than mine and Dialogue: 0,0:01:27.00,0:01:29.00,Default,,0,0,0,,my email [password???] was better. Dialogue: 0,0:01:29.00,0:01:31.00,Default,,0,0,0,,So, we had Dialogue: 0,0:01:31.00,0:01:33.00,Default,,0,0,0,,a chat and we decided that the best thing to Dialogue: 0,0:01:33.00,0:01:35.00,Default,,0,0,0,,do is combine forces. Dialogue: 0,0:01:35.00,0:01:37.00,Default,,0,0,0,,So, I released Dialogue: 0,0:01:37.00,0:01:39.00,Default,,0,0,0,,my email-[password???] as Guile Dialogue: 0,0:01:39.00,0:01:41.00,Default,,0,0,0,,guile-email and he released his Dialogue: 0,0:01:41.00,0:01:43.00,Default,,0,0,0,,issue tracker as Mumi. Dialogue: 0,0:01:43.00,0:01:45.00,Default,,0,0,0,,And Dialogue: 0,0:01:45.00,0:01:47.00,Default,,0,0,0,,that's the way it's been. Dialogue: 0,0:01:47.00,0:01:49.00,Default,,0,0,0,, Dialogue: 0,0:01:49.00,0:01:51.00,Default,,0,0,0,,So Dialogue: 0,0:01:51.00,0:01:53.00,Default,,0,0,0,,This talk Dialogue: 0,0:01:53.00,0:01:55.00,Default,,0,0,0,,could not have been without Dialogue: 0,0:01:55.00,0:01:57.00,Default,,0,0,0,,many, many other Dialogue: 0,0:01:57.00,0:01:59.00,Default,,0,0,0,,influences. But most of Dialogue: 0,0:01:59.00,0:02:01.00,Default,,0,0,0,,recently I want it highlight Dialogue: 0,0:02:01.00,0:02:03.00,Default,,0,0,0,,a few talks and articles Dialogue: 0,0:02:03.00,0:02:05.00,Default,,0,0,0,,that I read recently. Dialogue: 0,0:02:05.00,0:02:07.00,Default,,0,0,0,,I want at least to Dialogue: 0,0:02:07.00,0:02:09.00,Default,,0,0,0,,point you to the first Dialogue: 0,0:02:09.00,0:02:11.00,Default,,0,0,0,,talk, "Governing Rust" in the Dialogue: 0,0:02:11.00,0:02:13.00,Default,,0,0,0,,ninth RacketCon. Dialogue: 0,0:02:13.00,0:02:15.00,Default,,0,0,0,,It's a Dialogue: 0,0:02:15.00,0:02:17.00,Default,,0,0,0,,really good talk and Dialogue: 0,0:02:17.00,0:02:19.00,Default,,0,0,0,,it's extremely Dialogue: 0,0:02:19.00,0:02:21.00,Default,,0,0,0,,relevant to the kind of problems that we Dialogue: 0,0:02:21.00,0:02:23.00,Default,,0,0,0,,are facing in scaling up Dialogue: 0,0:02:23.00,0:02:25.00,Default,,0,0,0,,the Guix community. Dialogue: 0,0:02:25.00,0:02:27.00,Default,,0,0,0,,I urge you to watch it if you Dialogue: 0,0:02:27.00,0:02:29.00,Default,,0,0,0,, haven't already. Dialogue: 0,0:02:29.00,0:02:31.00,Default,,0,0,0,, Dialogue: 0,0:02:31.00,0:02:33.00,Default,,0,0,0,,Guix is a victim Dialogue: 0,0:02:33.00,0:02:35.00,Default,,0,0,0,,of its own success. Dialogue: 0,0:02:35.00,0:02:37.00,Default,,0,0,0,,Users, contributers, Dialogue: 0,0:02:37.00,0:02:39.00,Default,,0,0,0,,and contributions have been growing rapidly, Dialogue: 0,0:02:39.00,0:02:41.00,Default,,0,0,0,,I suppose exponentially. Dialogue: 0,0:02:41.00,0:02:43.00,Default,,0,0,0,,This is a really good thing for Dialogue: 0,0:02:43.00,0:02:45.00,Default,,0,0,0,,the project, but we're not able to Dialogue: 0,0:02:45.00,0:02:47.00,Default,,0,0,0,,keep up with the Dialogue: 0,0:02:47.00,0:02:49.00,Default,,0,0,0,,work load. That's the sad truth. Dialogue: 0,0:02:49.00,0:02:51.00,Default,,0,0,0,,Issues are Dialogue: 0,0:02:51.00,0:02:53.00,Default,,0,0,0,,falling through the cracks Dialogue: 0,0:02:53.00,0:02:55.00,Default,,0,0,0,,and reviewers are Dialogue: 0,0:02:55.00,0:02:57.00,Default,,0,0,0,,silently Dialogue: 0,0:02:57.00,0:02:59.00,Default,,0,0,0,,tuning out. Dialogue: 0,0:02:59.00,0:03:01.00,Default,,0,0,0,,The firehose of information that Dialogue: 0,0:03:01.00,0:03:03.00,Default,,0,0,0,,is the email Dialogue: 0,0:03:03.00,0:03:05.00,Default,,0,0,0,,every day. That is way too much mail than Dialogue: 0,0:03:05.00,0:03:07.00,Default,,0,0,0,,any single person can Dialogue: 0,0:03:07.00,0:03:09.00,Default,,0,0,0,,keep track of and it's only going to get Dialogue: 0,0:03:09.00,0:03:11.00,Default,,0,0,0,,worse. Dialogue: 0,0:03:11.00,0:03:13.00,Default,,0,0,0,,But how bad it can be, just have a look at the Dialogue: 0,0:03:13.00,0:03:15.00,Default,,0,0,0,,(GNU/:)Linux mailing list. Dialogue: 0,0:03:15.00,0:03:17.00,Default,,0,0,0,, Dialogue: 0,0:03:17.00,0:03:19.00,Default,,0,0,0,,Nobody can keep that [perfect???]. Dialogue: 0,0:03:19.00,0:03:21.00,Default,,0,0,0,,So, Dialogue: 0,0:03:21.00,0:03:23.00,Default,,0,0,0,,there is quite a lot of frustration about this Dialogue: 0,0:03:23.00,0:03:25.00,Default,,0,0,0,,among the community. Dialogue: 0,0:03:25.00,0:03:27.00,Default,,0,0,0,,what the contributors, Dialogue: 0,0:03:27.00,0:03:29.00,Default,,0,0,0,,reviewers, and pretty much anyone... Dialogue: 0,0:03:29.00,0:03:31.00,Default,,0,0,0,, Dialogue: 0,0:03:31.00,0:03:33.00,Default,,0,0,0,,It's not really easy to see this in public because Dialogue: 0,0:03:33.00,0:03:35.00,Default,,0,0,0,,people are polite Dialogue: 0,0:03:35.00,0:03:37.00,Default,,0,0,0,,and want to stay polite on Dialogue: 0,0:03:37.00,0:03:39.00,Default,,0,0,0,,the mailing list. That's a good thing! Dialogue: 0,0:03:39.00,0:03:41.00,Default,,0,0,0,,But in private conversations, Dialogue: 0,0:03:41.00,0:03:43.00,Default,,0,0,0,,it's pretty clear Dialogue: 0,0:03:43.00,0:03:45.00,Default,,0,0,0,,and evident. Dialogue: 0,0:03:45.00,0:03:47.00,Default,,0,0,0,,So, in fact that is often THE topic of Dialogue: 0,0:03:47.00,0:03:49.00,Default,,0,0,0,,conversation in discussing Guix. Dialogue: 0,0:03:49.00,0:03:51.00,Default,,0,0,0,, Dialogue: 0,0:03:51.00,0:03:53.00,Default,,0,0,0,,So, let's look at the Dialogue: 0,0:03:53.00,0:03:55.00,Default,,0,0,0,,problem from two points of Dialogue: 0,0:03:55.00,0:03:57.00,Default,,0,0,0,,view; of two Dialogue: 0,0:03:57.00,0:03:59.00,Default,,0,0,0,,stakeholders. First, the contributors point of view and Dialogue: 0,0:03:59.00,0:04:01.00,Default,,0,0,0,,then the reviewer's point of view. Dialogue: 0,0:04:01.00,0:04:03.00,Default,,0,0,0,,So, from the contributor's point of view Dialogue: 0,0:04:03.00,0:04:05.00,Default,,0,0,0,,they want Dialogue: 0,0:04:05.00,0:04:07.00,Default,,0,0,0,,the reviewers to be polite and helpful. Dialogue: 0,0:04:07.00,0:04:09.00,Default,,0,0,0,,That's something Guix has done an Dialogue: 0,0:04:09.00,0:04:11.00,Default,,0,0,0,,exemplary job of and Dialogue: 0,0:04:11.00,0:04:13.00,Default,,0,0,0,,something I'm really, really impressed Dialogue: 0,0:04:13.00,0:04:15.00,Default,,0,0,0,,about the community and the reason Dialogue: 0,0:04:15.00,0:04:17.00,Default,,0,0,0,,I stay here. So, Dialogue: 0,0:04:17.00,0:04:19.00,Default,,0,0,0,,we don't have to worry about that Dialogue: 0,0:04:19.00,0:04:21.00,Default,,0,0,0,,in this talk at least. Dialogue: 0,0:04:21.00,0:04:23.00,Default,,0,0,0,,And second is Dialogue: 0,0:04:23.00,0:04:25.00,Default,,0,0,0,,that documentation should be available Dialogue: 0,0:04:25.00,0:04:27.00,Default,,0,0,0,,to, you know, understand and Dialogue: 0,0:04:27.00,0:04:29.00,Default,,0,0,0,,hack on the source. Dialogue: 0,0:04:29.00,0:04:31.00,Default,,0,0,0,,I think they've done okay in this Dialogue: 0,0:04:31.00,0:04:33.00,Default,,0,0,0,,regard. It's probably Dialogue: 0,0:04:33.00,0:04:35.00,Default,,0,0,0,,lots of scope for improvement and the subject Dialogue: 0,0:04:35.00,0:04:37.00,Default,,0,0,0,,of other talks in Guix Days. Dialogue: 0,0:04:37.00,0:04:39.00,Default,,0,0,0,,But, okay, not bad. Dialogue: 0,0:04:39.00,0:04:41.00,Default,,0,0,0,,Not too bad. Dialogue: 0,0:04:41.00,0:04:43.00,Default,,0,0,0,,And then third: Dialogue: 0,0:04:43.00,0:04:45.00,Default,,0,0,0,,the contributions should Dialogue: 0,0:04:45.00,0:04:47.00,Default,,0,0,0,,be reviewed and accepted quickly. This is Dialogue: 0,0:04:47.00,0:04:49.00,Default,,0,0,0,,the real pain point and the Dialogue: 0,0:04:49.00,0:04:51.00,Default,,0,0,0,,subject of this talk. I think Dialogue: 0,0:04:51.00,0:04:53.00,Default,,0,0,0,,speed is the most critical factor Dialogue: 0,0:04:53.00,0:04:55.00,Default,,0,0,0,,in capturing and sustaining interest. Dialogue: 0,0:04:55.00,0:04:57.00,Default,,0,0,0,,So, Dialogue: 0,0:04:57.00,0:04:59.00,Default,,0,0,0,,when a new user or a new contributor Dialogue: 0,0:04:59.00,0:05:01.00,Default,,0,0,0,,comes in with a patch, Dialogue: 0,0:05:01.00,0:05:03.00,Default,,0,0,0,,you want to be able to get back to them really Dialogue: 0,0:05:03.00,0:05:05.00,Default,,0,0,0,,fast. Dialogue: 0,0:05:05.00,0:05:07.00,Default,,0,0,0,,A day, if that's possible. Dialogue: 0,0:05:07.00,0:05:09.00,Default,,0,0,0,,And certainly a week is a good Dialogue: 0,0:05:09.00,0:05:11.00,Default,,0,0,0,,time to shoot for. Anything Dialogue: 0,0:05:11.00,0:05:13.00,Default,,0,0,0,,more than a few weeks and Dialogue: 0,0:05:13.00,0:05:15.00,Default,,0,0,0,,going to the months and years is Dialogue: 0,0:05:15.00,0:05:17.00,Default,,0,0,0,,terrible. Dialogue: 0,0:05:17.00,0:05:19.00,Default,,0,0,0,,People are extremely likely Dialogue: 0,0:05:19.00,0:05:21.00,Default,,0,0,0,,to lose interest and never come back. Dialogue: 0,0:05:21.00,0:05:23.00,Default,,0,0,0,,So, if we give this Dialogue: 0,0:05:23.00,0:05:25.00,Default,,0,0,0,,up some point, we're going to pay the price and Dialogue: 0,0:05:25.00,0:05:27.00,Default,,0,0,0,,lose out on new Dialogue: 0,0:05:27.00,0:05:29.00,Default,,0,0,0,,useful contributors and that's not good. Dialogue: 0,0:05:29.00,0:05:31.00,Default,,0,0,0,, Dialogue: 0,0:05:31.00,0:05:33.00,Default,,0,0,0,,So what about the reviewer's Dialogue: 0,0:05:33.00,0:05:35.00,Default,,0,0,0,,point of view? Of course, Dialogue: 0,0:05:35.00,0:05:37.00,Default,,0,0,0,,it's easy to blame the regulars, Dialogue: 0,0:05:37.00,0:05:39.00,Default,,0,0,0,,but they also have Dialogue: 0,0:05:39.00,0:05:41.00,Default,,0,0,0,,way too much work and Dialogue: 0,0:05:41.00,0:05:43.00,Default,,0,0,0,,can't really keep up. Dialogue: 0,0:05:43.00,0:05:45.00,Default,,0,0,0,,So, from their point of view, Dialogue: 0,0:05:45.00,0:05:47.00,Default,,0,0,0,,it should be Dialogue: 0,0:05:47.00,0:05:49.00,Default,,0,0,0,,quick and easy to Dialogue: 0,0:05:49.00,0:05:51.00,Default,,0,0,0,,review and merge Dialogue: 0,0:05:51.00,0:05:53.00,Default,,0,0,0,,the patch. Dialogue: 0,0:05:53.00,0:05:55.00,Default,,0,0,0,,Having lots of back and forth is not Dialogue: 0,0:05:55.00,0:05:57.00,Default,,0,0,0,,desirable. Dialogue: 0,0:05:57.00,0:05:59.00,Default,,0,0,0,,You want to, I really want to see Dialogue: 0,0:05:59.00,0:06:01.00,Default,,0,0,0,,one very Dialogue: 0,0:06:01.00,0:06:03.00,Default,,0,0,0,,well-written patch Dialogue: 0,0:06:03.00,0:06:05.00,Default,,0,0,0,,that can be, you know, Dialogue: 0,0:06:05.00,0:06:07.00,Default,,0,0,0,,just merged at the click of a button, so to speak. Dialogue: 0,0:06:07.00,0:06:09.00,Default,,0,0,0,, Dialogue: 0,0:06:09.00,0:06:11.00,Default,,0,0,0,,And it should be easy, Dialogue: 0,0:06:11.00,0:06:13.00,Default,,0,0,0,,even trivial, to test these Dialogue: 0,0:06:13.00,0:06:15.00,Default,,0,0,0,,patches. Sometimes when your Dialogue: 0,0:06:15.00,0:06:17.00,Default,,0,0,0,,patch is involving Dialogue: 0,0:06:17.00,0:06:19.00,Default,,0,0,0,,large packages Dialogue: 0,0:06:19.00,0:06:21.00,Default,,0,0,0,,it takes Dialogue: 0,0:06:21.00,0:06:23.00,Default,,0,0,0,,a really, really long time to Dialogue: 0,0:06:23.00,0:06:25.00,Default,,0,0,0,,build those packages and test them. Dialogue: 0,0:06:25.00,0:06:27.00,Default,,0,0,0,,Right, so if you're spending 10 hours Dialogue: 0,0:06:27.00,0:06:29.00,Default,,0,0,0,,building a package Dialogue: 0,0:06:29.00,0:06:31.00,Default,,0,0,0,,and then you tweak a little bit and Dialogue: 0,0:06:31.00,0:06:33.00,Default,,0,0,0,,a little Dialogue: 0,0:06:33.00,0:06:35.00,Default,,0,0,0,,bit in the package definition and you want to try Dialogue: 0,0:06:35.00,0:06:37.00,Default,,0,0,0,,building it again...then good luck with that! Dialogue: 0,0:06:37.00,0:06:39.00,Default,,0,0,0,,That's a really long Dialogue: 0,0:06:39.00,0:06:41.00,Default,,0,0,0,,edit, compile, and debug cycle. Dialogue: 0,0:06:41.00,0:06:43.00,Default,,0,0,0,,And you can't even know ahead Dialogue: 0,0:06:43.00,0:06:45.00,Default,,0,0,0,,of time how long that package is going to take Dialogue: 0,0:06:45.00,0:06:47.00,Default,,0,0,0,,to finish building. So, Dialogue: 0,0:06:47.00,0:06:49.00,Default,,0,0,0,,you probably be Dialogue: 0,0:06:49.00,0:06:51.00,Default,,0,0,0,,switching buffers frequently Dialogue: 0,0:06:51.00,0:06:53.00,Default,,0,0,0,,and glancing back at that Dialogue: 0,0:06:53.00,0:06:55.00,Default,,0,0,0,,task, even when you are Dialogue: 0,0:06:55.00,0:06:57.00,Default,,0,0,0,,probably trying to do something else. Dialogue: 0,0:06:57.00,0:06:59.00,Default,,0,0,0,,This is, of course, terrible for Dialogue: 0,0:06:59.00,0:07:01.00,Default,,0,0,0,,productivity and really going to Dialogue: 0,0:07:01.00,0:07:03.00,Default,,0,0,0,,kill your productivity. Dialogue: 0,0:07:03.00,0:07:05.00,Default,,0,0,0,,Right. Dialogue: 0,0:07:05.00,0:07:07.00,Default,,0,0,0,,So, something needs to be Dialogue: 0,0:07:07.00,0:07:09.00,Default,,0,0,0,,done about that. And then finally, Dialogue: 0,0:07:09.00,0:07:11.00,Default,,0,0,0,,reviewers want to Dialogue: 0,0:07:11.00,0:07:13.00,Default,,0,0,0,,receive notifications only about Dialogue: 0,0:07:13.00,0:07:15.00,Default,,0,0,0,,some specific subsystem that Dialogue: 0,0:07:15.00,0:07:17.00,Default,,0,0,0,,they are interested in. Dialogue: 0,0:07:17.00,0:07:19.00,Default,,0,0,0,,Nobody can keep up with all the information Dialogue: 0,0:07:19.00,0:07:21.00,Default,,0,0,0,,coming through the mailing lists Dialogue: 0,0:07:21.00,0:07:23.00,Default,,0,0,0,,and there should be some way to Dialogue: 0,0:07:23.00,0:07:25.00,Default,,0,0,0,,subscribe to Dialogue: 0,0:07:25.00,0:07:27.00,Default,,0,0,0,,only patches of the Dialogue: 0,0:07:27.00,0:07:29.00,Default,,0,0,0,, Dialogue: 0,0:07:29.00,0:07:31.00,Default,,0,0,0,,huge patch inflow. Dialogue: 0,0:07:31.00,0:07:33.00,Default,,0,0,0,, Dialogue: 0,0:07:33.00,0:07:35.00,Default,,0,0,0,,To make it Dialogue: 0,0:07:35.00,0:07:37.00,Default,,0,0,0,,quick, easy, and make it trivial. That's kind Dialogue: 0,0:07:37.00,0:07:39.00,Default,,0,0,0,,of the idea. Dialogue: 0,0:07:39.00,0:07:41.00,Default,,0,0,0,,So, Dialogue: 0,0:07:41.00,0:07:43.00,Default,,0,0,0,,the first thing is to make it easy Dialogue: 0,0:07:43.00,0:07:45.00,Default,,0,0,0,,for contributors to produce Dialogue: 0,0:07:45.00,0:07:47.00,Default,,0,0,0,,high quality patches. Dialogue: 0,0:07:47.00,0:07:49.00,Default,,0,0,0,,So, there are many slipping Dialogue: 0,0:07:49.00,0:07:51.00,Default,,0,0,0,,points for the Dialogue: 0,0:07:51.00,0:07:53.00,Default,,0,0,0,,contributors. Dialogue: 0,0:07:53.00,0:07:55.00,Default,,0,0,0,,And if they Dialogue: 0,0:07:55.00,0:07:57.00,Default,,0,0,0,,can be made simpler, Dialogue: 0,0:07:57.00,0:07:59.00,Default,,0,0,0,,and if contributors could produce Dialogue: 0,0:07:59.00,0:08:01.00,Default,,0,0,0,,higher quality patches at the Dialogue: 0,0:08:01.00,0:08:03.00,Default,,0,0,0,,first attempt, they need to really Dialogue: 0,0:08:03.00,0:08:05.00,Default,,0,0,0,,lighten the load an the reviewers. And then Dialogue: 0,0:08:05.00,0:08:07.00,Default,,0,0,0,,we need to make Dialogue: 0,0:08:07.00,0:08:09.00,Default,,0,0,0,,it easy for the reviewers to Dialogue: 0,0:08:09.00,0:08:11.00,Default,,0,0,0,,do that, lighten Dialogue: 0,0:08:11.00,0:08:13.00,Default,,0,0,0,,the work of reviewing. So, how exactly do we Dialogue: 0,0:08:13.00,0:08:15.00,Default,,0,0,0,,do that? I have a few Dialogue: 0,0:08:15.00,0:08:17.00,Default,,0,0,0,,mockups and I'll Dialogue: 0,0:08:17.00,0:08:19.00,Default,,0,0,0,,try to explain with those, Dialogue: 0,0:08:19.00,0:08:21.00,Default,,0,0,0,,with the aid of those. Dialogue: 0,0:08:21.00,0:08:23.00,Default,,0,0,0,,So, let's look at... Dialogue: 0,0:08:23.00,0:08:25.00,Default,,0,0,0,,I hope you can see the Dialogue: 0,0:08:25.00,0:08:27.00,Default,,0,0,0,,issue tracker here. This is Dialogue: 0,0:08:27.00,0:08:29.00,Default,,0,0,0,,what Mumi normally looks like. Dialogue: 0,0:08:29.00,0:08:31.00,Default,,0,0,0,, Dialogue: 0,0:08:31.00,0:08:33.00,Default,,0,0,0,,We have patches listed. We have issues Dialogue: 0,0:08:33.00,0:08:35.00,Default,,0,0,0,,listed here. And Dialogue: 0,0:08:35.00,0:08:37.00,Default,,0,0,0,,that is... Dialogue: 0,0:08:37.00,0:08:39.00,Default,,0,0,0,,this patch Dialogue: 0,0:08:39.00,0:08:41.00,Default,,0,0,0,,tag, called a patch, Dialogue: 0,0:08:41.00,0:08:43.00,Default,,0,0,0,,and that's pretty much the only Dialogue: 0,0:08:43.00,0:08:45.00,Default,,0,0,0,,tag that you see here. Dialogue: 0,0:08:45.00,0:08:47.00,Default,,0,0,0,,I believe we want something Dialogue: 0,0:08:47.00,0:08:49.00,Default,,0,0,0,,more like this. Dialogue: 0,0:08:49.00,0:08:51.00,Default,,0,0,0,,You see lots of colorful tags. Dialogue: 0,0:08:51.00,0:08:53.00,Default,,0,0,0,,So, package-fix, package-update, Dialogue: 0,0:08:53.00,0:08:55.00,Default,,0,0,0,,new package, and so on. Dialogue: 0,0:08:55.00,0:08:57.00,Default,,0,0,0,, Dialogue: 0,0:08:57.00,0:08:59.00,Default,,0,0,0,,So, package-fix Dialogue: 0,0:08:59.00,0:09:01.00,Default,,0,0,0,,package-update, and new-package are the three most Dialogue: 0,0:09:01.00,0:09:03.00,Default,,0,0,0,,common operations on a Dialogue: 0,0:09:03.00,0:09:05.00,Default,,0,0,0,,package. And then you have these Dialogue: 0,0:09:05.00,0:09:07.00,Default,,0,0,0,,black tags which Dialogue: 0,0:09:07.00,0:09:09.00,Default,,0,0,0,,tell you which subsystem that Dialogue: 0,0:09:09.00,0:09:11.00,Default,,0,0,0,, issue is about. Dialogue: 0,0:09:11.00,0:09:13.00,Default,,0,0,0,,So, gcc is in Dialogue: 0,0:09:13.00,0:09:15.00,Default,,0,0,0,,commencement.scm. Dialogue: 0,0:09:15.00,0:09:17.00,Default,,0,0,0,,Emacs packages are in Dialogue: 0,0:09:17.00,0:09:19.00,Default,,0,0,0,,emacs-xyz.scm. Dialogue: 0,0:09:19.00,0:09:21.00,Default,,0,0,0,,There's a python-crypto package Dialogue: 0,0:09:21.00,0:09:23.00,Default,,0,0,0,,and so on. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-02 3:44 ` Matt @ 2022-03-05 4:54 ` Matt 2022-03-05 5:30 ` Matt 0 siblings, 1 reply; 12+ messages in thread From: Matt @ 2022-03-05 4:54 UTC (permalink / raw) To: Matt; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 625 bytes --] ---- On Tue, 01 Mar 2022 22:44:18 -0500 Matt <matt@excalamus.com> wrote ---- > > ---- On Tue, 01 Mar 2022 18:18:42 -0500 Matt <matt@excalamus.com> wrote ---- > > > I've started working on the "Dreaming of better patch review". This is great steno practice! I'm (finally) done! There were some things he said that I couldn't understand. I notated all of them using square brackets and three question marks, [like this???]. You should be able to search on "???" to find them. It was an interesting talk with good points and some smart ideas. I'm happy to have been able to make it more accessible to others. :) [-- Attachment #2: guix-days-2022-patch-review.ass --] [-- Type: application/octet-stream, Size: 68170 bytes --] [Script Info] ; Script generated by Aegisub 3.2.2 ; http://www.aegisub.org/ Title: Default Aegisub file ScriptType: v4.00+ WrapStyle: 0 ScaledBorderAndShadow: yes YCbCr Matrix: TV.601 PlayResX: 1280 PlayResY: 720 [Aegisub Project Garbage] Audio File: guix-days-2022-patch-review.mp4 Video File: guix-days-2022-patch-review.mp4 Video AR Mode: 4 Video AR Value: 1.777778 Video Zoom Percent: 0.875000 Scroll Position: 888 Active Line: 899 Video Position: 1523 [V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1 [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,Good morning, I'm really pleased Dialogue: 0,0:00:05.00,0:00:07.00,Default,,0,0,0,,to be speaking at Guix Days. Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,My talk today is about Dialogue: 0,0:00:09.00,0:00:11.00,Default,,0,0,0,,improving our patch review and Dialogue: 0,0:00:11.00,0:00:13.00,Default,,0,0,0,,my hopes for what it could be and Dialogue: 0,0:00:13.00,0:00:15.00,Default,,0,0,0,,how it could be a lot better. Dialogue: 0,0:00:15.00,0:00:17.00,Default,,0,0,0,,Let's get right in. Dialogue: 0,0:00:17.00,0:00:19.00,Default,,0,0,0,,So first, a little about Dialogue: 0,0:00:19.00,0:00:21.00,Default,,0,0,0,,me. Dialogue: 0,0:00:21.00,0:00:23.00,Default,,0,0,0,,My name is Arun. I've been a Dialogue: 0,0:00:23.00,0:00:25.00,Default,,0,0,0,,Guix contributor since 2016 Dialogue: 0,0:00:25.00,0:00:27.00,Default,,0,0,0,,and a committor Dialogue: 0,0:00:27.00,0:00:29.00,Default,,0,0,0,,since 2017. Dialogue: 0,0:00:29.00,0:00:31.00,Default,,0,0,0,,Guix is what got me really interested Dialogue: 0,0:00:31.00,0:00:33.00,Default,,0,0,0,,in Guile. I've Dialogue: 0,0:00:33.00,0:00:35.00,Default,,0,0,0,,been interested in the state of the issue Dialogue: 0,0:00:35.00,0:00:37.00,Default,,0,0,0,,tracker for a long, long time. Dialogue: 0,0:00:37.00,0:00:39.00,Default,,0,0,0,,Since Dialogue: 0,0:00:39.00,0:00:41.00,Default,,0,0,0,,the sad days of the Debbugs Dialogue: 0,0:00:41.00,0:00:43.00,Default,,0,0,0,,web interface before Mumi Dialogue: 0,0:00:43.00,0:00:45.00,Default,,0,0,0,,even existed. I am Dialogue: 0,0:00:45.00,0:00:47.00,Default,,0,0,0,,the author of guile-email and guile-[sapien???] Dialogue: 0,0:00:47.00,0:00:49.00,Default,,0,0,0,,both of which are Dialogue: 0,0:00:49.00,0:00:51.00,Default,,0,0,0,,essential to Mumi. Dialogue: 0,0:00:51.00,0:00:53.00,Default,,0,0,0,,So the story is that Dialogue: 0,0:00:53.00,0:00:55.00,Default,,0,0,0,,So the story is that Dialogue: 0,0:00:55.00,0:00:57.00,Default,,0,0,0,,I was... So, before Mumi, Dialogue: 0,0:00:57.00,0:00:59.00,Default,,0,0,0,,existed I was writing Dialogue: 0,0:00:59.00,0:01:01.00,Default,,0,0,0,,a new web interface for Dialogue: 0,0:01:01.00,0:01:03.00,Default,,0,0,0,,Debbugs, the Debbugs tracker, Dialogue: 0,0:01:03.00,0:01:05.00,Default,,0,0,0,,and unbeknownst to me Dialogue: 0,0:01:05.00,0:01:07.00,Default,,0,0,0,,Ricardo was doing the same thing. Dialogue: 0,0:01:07.00,0:01:09.00,Default,,0,0,0,,And he Dialogue: 0,0:01:09.00,0:01:11.00,Default,,0,0,0,,he had listed before Dialogue: 0,0:01:11.00,0:01:13.00,Default,,0,0,0,,I could. Dialogue: 0,0:01:13.00,0:01:15.00,Default,,0,0,0,,He listed his version before I could. Dialogue: 0,0:01:15.00,0:01:17.00,Default,,0,0,0,, Dialogue: 0,0:01:17.00,0:01:19.00,Default,,0,0,0,,And Dialogue: 0,0:01:19.00,0:01:21.00,Default,,0,0,0,,And I looked at his code Dialogue: 0,0:01:21.00,0:01:23.00,Default,,0,0,0,,and it turned out that his Dialogue: 0,0:01:23.00,0:01:25.00,Default,,0,0,0,,web interface Dialogue: 0,0:01:25.00,0:01:27.00,Default,,0,0,0,,was a lot better than mine and Dialogue: 0,0:01:27.00,0:01:29.00,Default,,0,0,0,,my email [password???] was better. Dialogue: 0,0:01:29.00,0:01:31.00,Default,,0,0,0,,So, we had Dialogue: 0,0:01:31.00,0:01:33.00,Default,,0,0,0,,a chat and we decided that the best thing to Dialogue: 0,0:01:33.00,0:01:35.00,Default,,0,0,0,,do is combine forces. Dialogue: 0,0:01:35.00,0:01:37.00,Default,,0,0,0,,So, I released Dialogue: 0,0:01:37.00,0:01:39.00,Default,,0,0,0,,my email-[password???] as Guile Dialogue: 0,0:01:39.00,0:01:41.00,Default,,0,0,0,,guile-email and he released his Dialogue: 0,0:01:41.00,0:01:43.00,Default,,0,0,0,,issue tracker as Mumi. Dialogue: 0,0:01:43.00,0:01:45.00,Default,,0,0,0,,And Dialogue: 0,0:01:45.00,0:01:47.00,Default,,0,0,0,,that's the way it's been. Dialogue: 0,0:01:47.00,0:01:49.00,Default,,0,0,0,, Dialogue: 0,0:01:49.00,0:01:51.00,Default,,0,0,0,,So Dialogue: 0,0:01:51.00,0:01:53.00,Default,,0,0,0,,This talk Dialogue: 0,0:01:53.00,0:01:55.00,Default,,0,0,0,,could not have been without Dialogue: 0,0:01:55.00,0:01:57.00,Default,,0,0,0,,many, many other Dialogue: 0,0:01:57.00,0:01:59.00,Default,,0,0,0,,influences. But most of Dialogue: 0,0:01:59.00,0:02:01.00,Default,,0,0,0,,recently I want it highlight Dialogue: 0,0:02:01.00,0:02:03.00,Default,,0,0,0,,a few talks and articles Dialogue: 0,0:02:03.00,0:02:05.00,Default,,0,0,0,,that I read recently. Dialogue: 0,0:02:05.00,0:02:07.00,Default,,0,0,0,,I want at least to Dialogue: 0,0:02:07.00,0:02:09.00,Default,,0,0,0,,point you to the first Dialogue: 0,0:02:09.00,0:02:11.00,Default,,0,0,0,,talk, "Governing Rust" in the Dialogue: 0,0:02:11.00,0:02:13.00,Default,,0,0,0,,ninth RacketCon. Dialogue: 0,0:02:13.00,0:02:15.00,Default,,0,0,0,,It's a Dialogue: 0,0:02:15.00,0:02:17.00,Default,,0,0,0,,really good talk and Dialogue: 0,0:02:17.00,0:02:19.00,Default,,0,0,0,,it's extremely Dialogue: 0,0:02:19.00,0:02:21.00,Default,,0,0,0,,relevant to the kind of problems that we Dialogue: 0,0:02:21.00,0:02:23.00,Default,,0,0,0,,are facing in scaling up Dialogue: 0,0:02:23.00,0:02:25.00,Default,,0,0,0,,the Guix community. Dialogue: 0,0:02:25.00,0:02:27.00,Default,,0,0,0,,I urge you to watch it if you Dialogue: 0,0:02:27.00,0:02:29.00,Default,,0,0,0,, haven't already. Dialogue: 0,0:02:29.00,0:02:31.00,Default,,0,0,0,, Dialogue: 0,0:02:31.00,0:02:33.00,Default,,0,0,0,,Guix is a victim Dialogue: 0,0:02:33.00,0:02:35.00,Default,,0,0,0,,of its own success. Dialogue: 0,0:02:35.00,0:02:37.00,Default,,0,0,0,,Users, contributers, Dialogue: 0,0:02:37.00,0:02:39.00,Default,,0,0,0,,and contributions have been growing rapidly, Dialogue: 0,0:02:39.00,0:02:41.00,Default,,0,0,0,,I suppose exponentially. Dialogue: 0,0:02:41.00,0:02:43.00,Default,,0,0,0,,This is a really good thing for Dialogue: 0,0:02:43.00,0:02:45.00,Default,,0,0,0,,the project, but we're not able to Dialogue: 0,0:02:45.00,0:02:47.00,Default,,0,0,0,,keep up with the Dialogue: 0,0:02:47.00,0:02:49.00,Default,,0,0,0,,work load. That's the sad truth. Dialogue: 0,0:02:49.00,0:02:51.00,Default,,0,0,0,,Issues are Dialogue: 0,0:02:51.00,0:02:53.00,Default,,0,0,0,,falling through the cracks Dialogue: 0,0:02:53.00,0:02:55.00,Default,,0,0,0,,and reviewers are Dialogue: 0,0:02:55.00,0:02:57.00,Default,,0,0,0,,silently Dialogue: 0,0:02:57.00,0:02:59.00,Default,,0,0,0,,tuning out. Dialogue: 0,0:02:59.00,0:03:01.00,Default,,0,0,0,,The firehose of information that Dialogue: 0,0:03:01.00,0:03:03.00,Default,,0,0,0,,is the email Dialogue: 0,0:03:03.00,0:03:05.00,Default,,0,0,0,,every day. That is way too much mail than Dialogue: 0,0:03:05.00,0:03:07.00,Default,,0,0,0,,any single person can Dialogue: 0,0:03:07.00,0:03:09.00,Default,,0,0,0,,keep track of and it's only going to get Dialogue: 0,0:03:09.00,0:03:11.00,Default,,0,0,0,,worse. Dialogue: 0,0:03:11.00,0:03:13.00,Default,,0,0,0,,But how bad it can be, just have a look at the Dialogue: 0,0:03:13.00,0:03:15.00,Default,,0,0,0,,(GNU/:)Linux mailing list. Dialogue: 0,0:03:15.00,0:03:17.00,Default,,0,0,0,, Dialogue: 0,0:03:17.00,0:03:19.00,Default,,0,0,0,,Nobody can keep that [perfect???]. Dialogue: 0,0:03:19.00,0:03:21.00,Default,,0,0,0,,So, Dialogue: 0,0:03:21.00,0:03:23.00,Default,,0,0,0,,there is quite a lot of frustration about this Dialogue: 0,0:03:23.00,0:03:25.00,Default,,0,0,0,,among the community. Dialogue: 0,0:03:25.00,0:03:27.00,Default,,0,0,0,,what the contributors, Dialogue: 0,0:03:27.00,0:03:29.00,Default,,0,0,0,,reviewers, and pretty much anyone... Dialogue: 0,0:03:29.00,0:03:31.00,Default,,0,0,0,, Dialogue: 0,0:03:31.00,0:03:33.00,Default,,0,0,0,,It's not really easy to see this in public because Dialogue: 0,0:03:33.00,0:03:35.00,Default,,0,0,0,,people are polite Dialogue: 0,0:03:35.00,0:03:37.00,Default,,0,0,0,,and want to stay polite on Dialogue: 0,0:03:37.00,0:03:39.00,Default,,0,0,0,,the mailing list. That's a good thing! Dialogue: 0,0:03:39.00,0:03:41.00,Default,,0,0,0,,But in private conversations, Dialogue: 0,0:03:41.00,0:03:43.00,Default,,0,0,0,,it's pretty clear Dialogue: 0,0:03:43.00,0:03:45.00,Default,,0,0,0,,and evident. Dialogue: 0,0:03:45.00,0:03:47.00,Default,,0,0,0,,So, in fact that is often THE topic of Dialogue: 0,0:03:47.00,0:03:49.00,Default,,0,0,0,,conversation in discussing Guix. Dialogue: 0,0:03:49.00,0:03:51.00,Default,,0,0,0,, Dialogue: 0,0:03:51.00,0:03:53.00,Default,,0,0,0,,So, let's look at the Dialogue: 0,0:03:53.00,0:03:55.00,Default,,0,0,0,,problem from two points of Dialogue: 0,0:03:55.00,0:03:57.00,Default,,0,0,0,,view; of two Dialogue: 0,0:03:57.00,0:03:59.00,Default,,0,0,0,,stakeholders. First, the contributors point of view and Dialogue: 0,0:03:59.00,0:04:01.00,Default,,0,0,0,,then the reviewer's point of view. Dialogue: 0,0:04:01.00,0:04:03.00,Default,,0,0,0,,So, from the contributor's point of view Dialogue: 0,0:04:03.00,0:04:05.00,Default,,0,0,0,,they want Dialogue: 0,0:04:05.00,0:04:07.00,Default,,0,0,0,,the reviewers to be polite and helpful. Dialogue: 0,0:04:07.00,0:04:09.00,Default,,0,0,0,,That's something Guix has done an Dialogue: 0,0:04:09.00,0:04:11.00,Default,,0,0,0,,exemplary job of and Dialogue: 0,0:04:11.00,0:04:13.00,Default,,0,0,0,,something I'm really, really impressed Dialogue: 0,0:04:13.00,0:04:15.00,Default,,0,0,0,,about the community and the reason Dialogue: 0,0:04:15.00,0:04:17.00,Default,,0,0,0,,I stay here. So, Dialogue: 0,0:04:17.00,0:04:19.00,Default,,0,0,0,,we don't have to worry about that Dialogue: 0,0:04:19.00,0:04:21.00,Default,,0,0,0,,in this talk at least. Dialogue: 0,0:04:21.00,0:04:23.00,Default,,0,0,0,,And second is Dialogue: 0,0:04:23.00,0:04:25.00,Default,,0,0,0,,that documentation should be available Dialogue: 0,0:04:25.00,0:04:27.00,Default,,0,0,0,,to, you know, understand and Dialogue: 0,0:04:27.00,0:04:29.00,Default,,0,0,0,,hack on the source. Dialogue: 0,0:04:29.00,0:04:31.00,Default,,0,0,0,,I think they've done okay in this Dialogue: 0,0:04:31.00,0:04:33.00,Default,,0,0,0,,regard. It's probably Dialogue: 0,0:04:33.00,0:04:35.00,Default,,0,0,0,,lots of scope for improvement and the subject Dialogue: 0,0:04:35.00,0:04:37.00,Default,,0,0,0,,of other talks in Guix Days. Dialogue: 0,0:04:37.00,0:04:39.00,Default,,0,0,0,,But, okay, not bad. Dialogue: 0,0:04:39.00,0:04:41.00,Default,,0,0,0,,Not too bad. Dialogue: 0,0:04:41.00,0:04:43.00,Default,,0,0,0,,And then third: Dialogue: 0,0:04:43.00,0:04:45.00,Default,,0,0,0,,the contributions should Dialogue: 0,0:04:45.00,0:04:47.00,Default,,0,0,0,,be reviewed and accepted quickly. This is Dialogue: 0,0:04:47.00,0:04:49.00,Default,,0,0,0,,the real pain point and the Dialogue: 0,0:04:49.00,0:04:51.00,Default,,0,0,0,,subject of this talk. I think Dialogue: 0,0:04:51.00,0:04:53.00,Default,,0,0,0,,speed is the most critical factor Dialogue: 0,0:04:53.00,0:04:55.00,Default,,0,0,0,,in capturing and sustaining interest. Dialogue: 0,0:04:55.00,0:04:57.00,Default,,0,0,0,,So, Dialogue: 0,0:04:57.00,0:04:59.00,Default,,0,0,0,,when a new user or a new contributor Dialogue: 0,0:04:59.00,0:05:01.00,Default,,0,0,0,,comes in with a patch, Dialogue: 0,0:05:01.00,0:05:03.00,Default,,0,0,0,,you want to be able to get back to them really Dialogue: 0,0:05:03.00,0:05:05.00,Default,,0,0,0,,fast. Dialogue: 0,0:05:05.00,0:05:07.00,Default,,0,0,0,,A day, if that's possible. Dialogue: 0,0:05:07.00,0:05:09.00,Default,,0,0,0,,And certainly a week is a good Dialogue: 0,0:05:09.00,0:05:11.00,Default,,0,0,0,,time to shoot for. Anything Dialogue: 0,0:05:11.00,0:05:13.00,Default,,0,0,0,,more than a few weeks and Dialogue: 0,0:05:13.00,0:05:15.00,Default,,0,0,0,,going to the months and years is Dialogue: 0,0:05:15.00,0:05:17.00,Default,,0,0,0,,terrible. Dialogue: 0,0:05:17.00,0:05:19.00,Default,,0,0,0,,People are extremely likely Dialogue: 0,0:05:19.00,0:05:21.00,Default,,0,0,0,,to lose interest and never come back. Dialogue: 0,0:05:21.00,0:05:23.00,Default,,0,0,0,,So, if we give this Dialogue: 0,0:05:23.00,0:05:25.00,Default,,0,0,0,,up some point, we're going to pay the price and Dialogue: 0,0:05:25.00,0:05:27.00,Default,,0,0,0,,lose out on new Dialogue: 0,0:05:27.00,0:05:29.00,Default,,0,0,0,,useful contributors and that's not good. Dialogue: 0,0:05:29.00,0:05:31.00,Default,,0,0,0,, Dialogue: 0,0:05:31.00,0:05:33.00,Default,,0,0,0,,So what about the reviewer's Dialogue: 0,0:05:33.00,0:05:35.00,Default,,0,0,0,,point of view? Of course, Dialogue: 0,0:05:35.00,0:05:37.00,Default,,0,0,0,,it's easy to blame the regulars, Dialogue: 0,0:05:37.00,0:05:39.00,Default,,0,0,0,,but they also have Dialogue: 0,0:05:39.00,0:05:41.00,Default,,0,0,0,,way too much work and Dialogue: 0,0:05:41.00,0:05:43.00,Default,,0,0,0,,can't really keep up. Dialogue: 0,0:05:43.00,0:05:45.00,Default,,0,0,0,,So, from their point of view, Dialogue: 0,0:05:45.00,0:05:47.00,Default,,0,0,0,,it should be Dialogue: 0,0:05:47.00,0:05:49.00,Default,,0,0,0,,quick and easy to Dialogue: 0,0:05:49.00,0:05:51.00,Default,,0,0,0,,review and merge Dialogue: 0,0:05:51.00,0:05:53.00,Default,,0,0,0,,the patch. Dialogue: 0,0:05:53.00,0:05:55.00,Default,,0,0,0,,Having lots of back and forth is not Dialogue: 0,0:05:55.00,0:05:57.00,Default,,0,0,0,,desirable. Dialogue: 0,0:05:57.00,0:05:59.00,Default,,0,0,0,,You want to, I really want to see Dialogue: 0,0:05:59.00,0:06:01.00,Default,,0,0,0,,one very Dialogue: 0,0:06:01.00,0:06:03.00,Default,,0,0,0,,well-written patch Dialogue: 0,0:06:03.00,0:06:05.00,Default,,0,0,0,,that can be, you know, Dialogue: 0,0:06:05.00,0:06:07.00,Default,,0,0,0,,just merged at the click of a button, so to speak. Dialogue: 0,0:06:07.00,0:06:09.00,Default,,0,0,0,, Dialogue: 0,0:06:09.00,0:06:11.00,Default,,0,0,0,,And it should be easy, Dialogue: 0,0:06:11.00,0:06:13.00,Default,,0,0,0,,even trivial, to test these Dialogue: 0,0:06:13.00,0:06:15.00,Default,,0,0,0,,patches. Sometimes when your Dialogue: 0,0:06:15.00,0:06:17.00,Default,,0,0,0,,patch is involving Dialogue: 0,0:06:17.00,0:06:19.00,Default,,0,0,0,,large packages Dialogue: 0,0:06:19.00,0:06:21.00,Default,,0,0,0,,it takes Dialogue: 0,0:06:21.00,0:06:23.00,Default,,0,0,0,,a really, really long time to Dialogue: 0,0:06:23.00,0:06:25.00,Default,,0,0,0,,build those packages and test them. Dialogue: 0,0:06:25.00,0:06:27.00,Default,,0,0,0,,Right, so if you're spending 10 hours Dialogue: 0,0:06:27.00,0:06:29.00,Default,,0,0,0,,building a package Dialogue: 0,0:06:29.00,0:06:31.00,Default,,0,0,0,,and then you tweak a little bit and Dialogue: 0,0:06:31.00,0:06:33.00,Default,,0,0,0,,a little Dialogue: 0,0:06:33.00,0:06:35.00,Default,,0,0,0,,bit in the package definition and you want to try Dialogue: 0,0:06:35.00,0:06:37.00,Default,,0,0,0,,building it again...then good luck with that! Dialogue: 0,0:06:37.00,0:06:39.00,Default,,0,0,0,,That's a really long Dialogue: 0,0:06:39.00,0:06:41.00,Default,,0,0,0,,edit, compile, and debug cycle. Dialogue: 0,0:06:41.00,0:06:43.00,Default,,0,0,0,,And you can't even know ahead Dialogue: 0,0:06:43.00,0:06:45.00,Default,,0,0,0,,of time how long that package is going to take Dialogue: 0,0:06:45.00,0:06:47.00,Default,,0,0,0,,to finish building. So, Dialogue: 0,0:06:47.00,0:06:49.00,Default,,0,0,0,,you probably be Dialogue: 0,0:06:49.00,0:06:51.00,Default,,0,0,0,,switching buffers frequently Dialogue: 0,0:06:51.00,0:06:53.00,Default,,0,0,0,,and glancing back at that Dialogue: 0,0:06:53.00,0:06:55.00,Default,,0,0,0,,task, even when you are Dialogue: 0,0:06:55.00,0:06:57.00,Default,,0,0,0,,probably trying to do something else. Dialogue: 0,0:06:57.00,0:06:59.00,Default,,0,0,0,,This is, of course, terrible for Dialogue: 0,0:06:59.00,0:07:01.00,Default,,0,0,0,,productivity and really going to Dialogue: 0,0:07:01.00,0:07:03.00,Default,,0,0,0,,kill your productivity. Dialogue: 0,0:07:03.00,0:07:05.00,Default,,0,0,0,,Right. Dialogue: 0,0:07:05.00,0:07:07.00,Default,,0,0,0,,So, something needs to be Dialogue: 0,0:07:07.00,0:07:09.00,Default,,0,0,0,,done about that. And then finally, Dialogue: 0,0:07:09.00,0:07:11.00,Default,,0,0,0,,reviewers want to Dialogue: 0,0:07:11.00,0:07:13.00,Default,,0,0,0,,receive notifications only about Dialogue: 0,0:07:13.00,0:07:15.00,Default,,0,0,0,,some specific subsystem that Dialogue: 0,0:07:15.00,0:07:17.00,Default,,0,0,0,,they are interested in. Dialogue: 0,0:07:17.00,0:07:19.00,Default,,0,0,0,,Nobody can keep up with all the information Dialogue: 0,0:07:19.00,0:07:21.00,Default,,0,0,0,,coming through the mailing lists Dialogue: 0,0:07:21.00,0:07:23.00,Default,,0,0,0,,and there should be some way to Dialogue: 0,0:07:23.00,0:07:25.00,Default,,0,0,0,,subscribe to Dialogue: 0,0:07:25.00,0:07:27.00,Default,,0,0,0,,only patches of the Dialogue: 0,0:07:27.00,0:07:29.00,Default,,0,0,0,, Dialogue: 0,0:07:29.00,0:07:31.00,Default,,0,0,0,,huge patch inflow. Dialogue: 0,0:07:31.00,0:07:33.00,Default,,0,0,0,, Dialogue: 0,0:07:33.00,0:07:35.00,Default,,0,0,0,,To make it Dialogue: 0,0:07:35.00,0:07:37.00,Default,,0,0,0,,quick, easy, and make it trivial. That's kind Dialogue: 0,0:07:37.00,0:07:39.00,Default,,0,0,0,,of the idea. Dialogue: 0,0:07:39.00,0:07:41.00,Default,,0,0,0,,So, Dialogue: 0,0:07:41.00,0:07:43.00,Default,,0,0,0,,the first thing is to make it easy Dialogue: 0,0:07:43.00,0:07:45.00,Default,,0,0,0,,for contributors to produce Dialogue: 0,0:07:45.00,0:07:47.00,Default,,0,0,0,,high quality patches. Dialogue: 0,0:07:47.00,0:07:49.00,Default,,0,0,0,,So, there are many slipping Dialogue: 0,0:07:49.00,0:07:51.00,Default,,0,0,0,,points for the Dialogue: 0,0:07:51.00,0:07:53.00,Default,,0,0,0,,contributors. Dialogue: 0,0:07:53.00,0:07:55.00,Default,,0,0,0,,And if they Dialogue: 0,0:07:55.00,0:07:57.00,Default,,0,0,0,,can be made simpler, Dialogue: 0,0:07:57.00,0:07:59.00,Default,,0,0,0,,and if contributors could produce Dialogue: 0,0:07:59.00,0:08:01.00,Default,,0,0,0,,higher quality patches at the Dialogue: 0,0:08:01.00,0:08:03.00,Default,,0,0,0,,first attempt, they need to really Dialogue: 0,0:08:03.00,0:08:05.00,Default,,0,0,0,,lighten the load an the reviewers. And then Dialogue: 0,0:08:05.00,0:08:07.00,Default,,0,0,0,,we need to make Dialogue: 0,0:08:07.00,0:08:09.00,Default,,0,0,0,,it easy for the reviewers to Dialogue: 0,0:08:09.00,0:08:11.00,Default,,0,0,0,,do that, lighten Dialogue: 0,0:08:11.00,0:08:13.00,Default,,0,0,0,,the work of reviewing. So, how exactly do we Dialogue: 0,0:08:13.00,0:08:15.00,Default,,0,0,0,,do that? I have a few Dialogue: 0,0:08:15.00,0:08:17.00,Default,,0,0,0,,mockups and I'll Dialogue: 0,0:08:17.00,0:08:19.00,Default,,0,0,0,,try to explain with those, Dialogue: 0,0:08:19.00,0:08:21.00,Default,,0,0,0,,with the aid of those. Dialogue: 0,0:08:21.00,0:08:23.00,Default,,0,0,0,,So, let's look at... Dialogue: 0,0:08:23.00,0:08:25.00,Default,,0,0,0,,I hope you can see the Dialogue: 0,0:08:25.00,0:08:27.00,Default,,0,0,0,,issue tracker here. This is Dialogue: 0,0:08:27.00,0:08:29.00,Default,,0,0,0,,what Mumi normally looks like. Dialogue: 0,0:08:29.00,0:08:31.00,Default,,0,0,0,, Dialogue: 0,0:08:31.00,0:08:33.00,Default,,0,0,0,,We have patches listed. We have issues Dialogue: 0,0:08:33.00,0:08:35.00,Default,,0,0,0,,listed here. And Dialogue: 0,0:08:35.00,0:08:37.00,Default,,0,0,0,,that is... Dialogue: 0,0:08:37.00,0:08:39.00,Default,,0,0,0,,this patch Dialogue: 0,0:08:39.00,0:08:41.00,Default,,0,0,0,,tag, called a patch, Dialogue: 0,0:08:41.00,0:08:43.00,Default,,0,0,0,,and that's pretty much the only Dialogue: 0,0:08:43.00,0:08:45.00,Default,,0,0,0,,tag that you see here. Dialogue: 0,0:08:45.00,0:08:47.00,Default,,0,0,0,,I believe we want something Dialogue: 0,0:08:47.00,0:08:49.00,Default,,0,0,0,,more like this. Dialogue: 0,0:08:49.00,0:08:51.00,Default,,0,0,0,,You see lots of colorful tags. Dialogue: 0,0:08:51.00,0:08:53.00,Default,,0,0,0,,So, package-fix, package-update, Dialogue: 0,0:08:53.00,0:08:55.00,Default,,0,0,0,,new package, and so on. Dialogue: 0,0:08:55.00,0:08:57.00,Default,,0,0,0,, Dialogue: 0,0:08:57.00,0:08:59.00,Default,,0,0,0,,So, package-fix Dialogue: 0,0:08:59.00,0:09:01.00,Default,,0,0,0,,package-update, and new-package are the three most Dialogue: 0,0:09:01.00,0:09:03.00,Default,,0,0,0,,common operations on a Dialogue: 0,0:09:03.00,0:09:05.00,Default,,0,0,0,,package. And then you have these Dialogue: 0,0:09:05.00,0:09:07.00,Default,,0,0,0,,black tags which Dialogue: 0,0:09:07.00,0:09:09.00,Default,,0,0,0,,tell you which subsystem that Dialogue: 0,0:09:09.00,0:09:11.00,Default,,0,0,0,, issue is about. Dialogue: 0,0:09:11.00,0:09:13.00,Default,,0,0,0,,So, gcc is in Dialogue: 0,0:09:13.00,0:09:15.00,Default,,0,0,0,,commencement.scm. Dialogue: 0,0:09:15.00,0:09:17.00,Default,,0,0,0,,Emacs packages are in Dialogue: 0,0:09:17.00,0:09:19.00,Default,,0,0,0,,emacs-xyz.scm. Dialogue: 0,0:09:19.00,0:09:21.00,Default,,0,0,0,,There's a python-crypto package Dialogue: 0,0:09:21.00,0:09:23.00,Default,,0,0,0,,and so on. Dialogue: 0,0:09:23.00,0:09:25.00,Default,,0,0,0,,And actual Dialogue: 0,0:09:25.00,0:09:27.00,Default,,0,0,0,,bugs in the Dialogue: 0,0:09:27.00,0:09:29.00,Default,,0,0,0,,core Guix [missionary???] Dialogue: 0,0:09:29.00,0:09:31.00,Default,,0,0,0,,are shown using Dialogue: 0,0:09:31.00,0:09:33.00,Default,,0,0,0,,these red tags. Dialogue: 0,0:09:33.00,0:09:35.00,Default,,0,0,0,,And so on. You have a bug here and so on. Dialogue: 0,0:09:35.00,0:09:37.00,Default,,0,0,0,, Dialogue: 0,0:09:37.00,0:09:39.00,Default,,0,0,0,,So, Dialogue: 0,0:09:39.00,0:09:41.00,Default,,0,0,0,,the thing is, we have Dialogue: 0,0:09:41.00,0:09:43.00,Default,,0,0,0,,two broad kinds of issues, Dialogue: 0,0:09:43.00,0:09:45.00,Default,,0,0,0,,ones that deal with the core of Guix Dialogue: 0,0:09:45.00,0:09:47.00,Default,,0,0,0,,[missionary???] and Dialogue: 0,0:09:47.00,0:09:49.00,Default,,0,0,0,,others that deal with packages. Dialogue: 0,0:09:49.00,0:09:51.00,Default,,0,0,0,,Package [???] issues Dialogue: 0,0:09:51.00,0:09:53.00,Default,,0,0,0,,are never ending and Dialogue: 0,0:09:53.00,0:09:55.00,Default,,0,0,0,,[there are] a huge Dialogue: 0,0:09:55.00,0:09:57.00,Default,,0,0,0,,number of packages and a huge number of Dialogue: 0,0:09:57.00,0:09:59.00,Default,,0,0,0,,issues. Dialogue: 0,0:09:59.00,0:10:01.00,Default,,0,0,0,,Our issue tracker tends to be swamped Dialogue: 0,0:10:01.00,0:10:03.00,Default,,0,0,0,,with those kind of issues. Dialogue: 0,0:10:03.00,0:10:05.00,Default,,0,0,0,,It's hard to find, like, Dialogue: 0,0:10:05.00,0:10:07.00,Default,,0,0,0,,bugs which are related to the Dialogue: 0,0:10:07.00,0:10:09.00,Default,,0,0,0,,core. You know, dig through all the issues Dialogue: 0,0:10:09.00,0:10:11.00,Default,,0,0,0,,find only those that are related to Dialogue: 0,0:10:11.00,0:10:13.00,Default,,0,0,0,,the core of Guix's mission. Dialogue: 0,0:10:13.00,0:10:15.00,Default,,0,0,0,,So, we want, like, tags could Dialogue: 0,0:10:15.00,0:10:17.00,Default,,0,0,0,,really help us sort through this mess Dialogue: 0,0:10:17.00,0:10:19.00,Default,,0,0,0,,quickly and Dialogue: 0,0:10:19.00,0:10:21.00,Default,,0,0,0,,get people to the thing that they Dialogue: 0,0:10:21.00,0:10:23.00,Default,,0,0,0,,are interested in. Dialogue: 0,0:10:23.00,0:10:25.00,Default,,0,0,0,, Dialogue: 0,0:10:25.00,0:10:27.00,Default,,0,0,0,,And also I replaced Dialogue: 0,0:10:27.00,0:10:29.00,Default,,0,0,0,,the absolute date Dialogue: 0,0:10:29.00,0:10:31.00,Default,,0,0,0,,here with the relative Dialogue: 0,0:10:31.00,0:10:33.00,Default,,0,0,0,,date. That's a pretty easy fix, Dialogue: 0,0:10:33.00,0:10:35.00,Default,,0,0,0,,just a one liner patch. Dialogue: 0,0:10:35.00,0:10:37.00,Default,,0,0,0,,I'll probably send it this week to Mumi. Dialogue: 0,0:10:37.00,0:10:39.00,Default,,0,0,0,, Dialogue: 0,0:10:39.00,0:10:41.00,Default,,0,0,0,,Mumi already has most of the code Dialogue: 0,0:10:41.00,0:10:43.00,Default,,0,0,0,,to do it. Dialogue: 0,0:10:43.00,0:10:45.00,Default,,0,0,0,, Dialogue: 0,0:10:45.00,0:10:47.00,Default,,0,0,0,, Dialogue: 0,0:10:47.00,0:10:49.00,Default,,0,0,0,,So, here's the next page. Dialogue: 0,0:10:49.00,0:10:51.00,Default,,0,0,0,,This is what an issue Dialogue: 0,0:10:51.00,0:10:53.00,Default,,0,0,0,,normally looks like. Dialogue: 0,0:10:53.00,0:10:55.00,Default,,0,0,0,,You have a title Dialogue: 0,0:10:55.00,0:10:57.00,Default,,0,0,0,,followed by the conversation, actually Dialogue: 0,0:10:57.00,0:10:59.00,Default,,0,0,0,,the email conversation, here. Dialogue: 0,0:10:59.00,0:11:01.00,Default,,0,0,0,, Dialogue: 0,0:11:01.00,0:11:03.00,Default,,0,0,0,,What I've added a-new is Dialogue: 0,0:11:03.00,0:11:05.00,Default,,0,0,0,,this section called "Summary and pointers". Dialogue: 0,0:11:05.00,0:11:07.00,Default,,0,0,0,, Dialogue: 0,0:11:07.00,0:11:09.00,Default,,0,0,0,,So, Dialogue: 0,0:11:09.00,0:11:11.00,Default,,0,0,0,,issue conversations tend to be Dialogue: 0,0:11:11.00,0:11:13.00,Default,,0,0,0,,long and often tedious, involving Dialogue: 0,0:11:13.00,0:11:15.00,Default,,0,0,0,,lots of details and following Dialogue: 0,0:11:15.00,0:11:17.00,Default,,0,0,0,,the train of thought of multiple Dialogue: 0,0:11:17.00,0:11:19.00,Default,,0,0,0,,participants. Dialogue: 0,0:11:19.00,0:11:21.00,Default,,0,0,0,,Someone looking Dialogue: 0,0:11:21.00,0:11:23.00,Default,,0,0,0,,at the issue should not have to dig Dialogue: 0,0:11:23.00,0:11:25.00,Default,,0,0,0,,through the whole thing to understand what it's about. Dialogue: 0,0:11:25.00,0:11:27.00,Default,,0,0,0,,So, Dialogue: 0,0:11:27.00,0:11:29.00,Default,,0,0,0,,It would be helpful if Dialogue: 0,0:11:29.00,0:11:31.00,Default,,0,0,0,,someone, one of the participants or someone else, Dialogue: 0,0:11:31.00,0:11:33.00,Default,,0,0,0,, Dialogue: 0,0:11:33.00,0:11:35.00,Default,,0,0,0,, Dialogue: 0,0:11:35.00,0:11:37.00,Default,,0,0,0,,put in a summary Dialogue: 0,0:11:37.00,0:11:39.00,Default,,0,0,0,,[of the problem], summarized the problem and Dialogue: 0,0:11:39.00,0:11:41.00,Default,,0,0,0,, Dialogue: 0,0:11:41.00,0:11:43.00,Default,,0,0,0,,suggested a good way Dialogue: 0,0:11:43.00,0:11:45.00,Default,,0,0,0,,to fix the problem. So, Dialogue: 0,0:11:45.00,0:11:47.00,Default,,0,0,0,,this is a great idea Dialogue: 0,0:11:47.00,0:11:49.00,Default,,0,0,0,,for more experienced folks Dialogue: 0,0:11:49.00,0:11:51.00,Default,,0,0,0,,to do because Dialogue: 0,0:11:51.00,0:11:53.00,Default,,0,0,0,,we want experienced folks to Dialogue: 0,0:11:53.00,0:11:55.00,Default,,0,0,0,,be doing the kind of thing that Dialogue: 0,0:11:55.00,0:11:57.00,Default,,0,0,0,,no one else can do. Dialogue: 0,0:11:57.00,0:11:59.00,Default,,0,0,0,,So, Dialogue: 0,0:11:59.00,0:12:01.00,Default,,0,0,0,,if they were to... Dialogue: 0,0:12:01.00,0:12:03.00,Default,,0,0,0,,We don't really want Dialogue: 0,0:12:03.00,0:12:05.00,Default,,0,0,0,,them to Dialogue: 0,0:12:05.00,0:12:07.00,Default,,0,0,0,,code too much and Dialogue: 0,0:12:07.00,0:12:09.00,Default,,0,0,0,,get in all the nitty-gritty of Dialogue: 0,0:12:09.00,0:12:11.00,Default,,0,0,0,,all those packages out there. Dialogue: 0,0:12:11.00,0:12:13.00,Default,,0,0,0,,Rather, if they could Dialogue: 0,0:12:13.00,0:12:15.00,Default,,0,0,0,,write out these detailed instructions Dialogue: 0,0:12:15.00,0:12:17.00,Default,,0,0,0,,to people, Dialogue: 0,0:12:17.00,0:12:19.00,Default,,0,0,0,,instructions in every bug report Dialogue: 0,0:12:19.00,0:12:21.00,Default,,0,0,0,,explaining what to do, how to fix the issue Dialogue: 0,0:12:21.00,0:12:23.00,Default,,0,0,0,,and where to fix the issue. Dialogue: 0,0:12:23.00,0:12:25.00,Default,,0,0,0,,Maybe with examples, clear examples. Dialogue: 0,0:12:25.00,0:12:27.00,Default,,0,0,0,,Some really well written... Dialogue: 0,0:12:27.00,0:12:29.00,Default,,0,0,0,,...a few paragraphs. Dialogue: 0,0:12:29.00,0:12:31.00,Default,,0,0,0,,That would be of immense help to others. Dialogue: 0,0:12:31.00,0:12:33.00,Default,,0,0,0,,New contributors could Dialogue: 0,0:12:33.00,0:12:35.00,Default,,0,0,0,,learn from them and Dialogue: 0,0:12:35.00,0:12:37.00,Default,,0,0,0,, Dialogue: 0,0:12:37.00,0:12:39.00,Default,,0,0,0,,and they might themselves become Dialogue: 0,0:12:39.00,0:12:41.00,Default,,0,0,0,,more experienced Dialogue: 0,0:12:41.00,0:12:43.00,Default,,0,0,0,,contributors quickly. Dialogue: 0,0:12:43.00,0:12:45.00,Default,,0,0,0,, Dialogue: 0,0:12:45.00,0:12:47.00,Default,,0,0,0,,That's one addition. Dialogue: 0,0:12:47.00,0:12:49.00,Default,,0,0,0,,Another [connotation???] here then Dialogue: 0,0:12:49.00,0:12:51.00,Default,,0,0,0,,a patch here. And Dialogue: 0,0:12:51.00,0:12:53.00,Default,,0,0,0,,then you have two little check boxes, Dialogue: 0,0:12:53.00,0:12:55.00,Default,,0,0,0,,two little tick marks. Dialogue: 0,0:12:55.00,0:12:57.00,Default,,0,0,0,,So, you want... Dialogue: 0,0:12:57.00,0:12:59.00,Default,,0,0,0,,as soon as a patch comes in we want Dialogue: 0,0:12:59.00,0:13:01.00,Default,,0,0,0,,lint tests to be Dialogue: 0,0:13:01.00,0:13:03.00,Default,,0,0,0,, automatically run and Dialogue: 0,0:13:03.00,0:13:05.00,Default,,0,0,0,,also the package, Dialogue: 0,0:13:05.00,0:13:07.00,Default,,0,0,0,,in order to be rebuilt in the CI (continuous integration) Dialogue: 0,0:13:07.00,0:13:09.00,Default,,0,0,0,,and then we want Dialogue: 0,0:13:09.00,0:13:11.00,Default,,0,0,0,,little check marks like this which Dialogue: 0,0:13:11.00,0:13:13.00,Default,,0,0,0,,come up and indicate that it passed Dialogue: 0,0:13:13.00,0:13:15.00,Default,,0,0,0,,correctly. I believe Dialogue: 0,0:13:15.00,0:13:17.00,Default,,0,0,0,,Guix Dialogue: 0,0:13:17.00,0:13:19.00,Default,,0,0,0,,data service is supposed to do something like this Dialogue: 0,0:13:19.00,0:13:21.00,Default,,0,0,0,,and I believe that Dialogue: 0,0:13:21.00,0:13:23.00,Default,,0,0,0,,Chris Baines has been... Dialogue: 0,0:13:23.00,0:13:25.00,Default,,0,0,0,,has a patch work instance Dialogue: 0,0:13:25.00,0:13:27.00,Default,,0,0,0,,that indicates the Dialogue: 0,0:13:27.00,0:13:29.00,Default,,0,0,0,,status of each patch. Dialogue: 0,0:13:29.00,0:13:31.00,Default,,0,0,0,,I haven't looked at it very Dialogue: 0,0:13:31.00,0:13:33.00,Default,,0,0,0,,closely, to be honest. Dialogue: 0,0:13:33.00,0:13:35.00,Default,,0,0,0,,But, Dialogue: 0,0:13:35.00,0:13:37.00,Default,,0,0,0,,I believe we want Dialogue: 0,0:13:37.00,0:13:39.00,Default,,0,0,0,,that kind of information to be integrated into Dialogue: 0,0:13:39.00,0:13:41.00,Default,,0,0,0,,Mumi itself. We don't want that to be Dialogue: 0,0:13:41.00,0:13:43.00,Default,,0,0,0,,available on a separate, Dialogue: 0,0:13:43.00,0:13:45.00,Default,,0,0,0,,you know, separate period, a completely Dialogue: 0,0:13:45.00,0:13:47.00,Default,,0,0,0,,different interface and so on. Dialogue: 0,0:13:47.00,0:13:49.00,Default,,0,0,0,, Dialogue: 0,0:13:49.00,0:13:51.00,Default,,0,0,0,,That's one... and Dialogue: 0,0:13:51.00,0:13:53.00,Default,,0,0,0,,Then finally, review check lists. Dialogue: 0,0:13:53.00,0:13:55.00,Default,,0,0,0,,So, as much as possible, the Dialogue: 0,0:13:55.00,0:13:57.00,Default,,0,0,0,, Dialogue: 0,0:13:57.00,0:13:59.00,Default,,0,0,0,,the review process, the tests have to be automated. Dialogue: 0,0:13:59.00,0:14:01.00,Default,,0,0,0,,Well, of course, everything cannot be automated. Dialogue: 0,0:14:01.00,0:14:03.00,Default,,0,0,0,,So, Dialogue: 0,0:14:03.00,0:14:05.00,Default,,0,0,0,,for those tasks that can not be automated, Dialogue: 0,0:14:05.00,0:14:07.00,Default,,0,0,0,,we should have a check list. Dialogue: 0,0:14:07.00,0:14:09.00,Default,,0,0,0,,So, review is largely about Dialogue: 0,0:14:09.00,0:14:11.00,Default,,0,0,0,,looking at Dialogue: 0,0:14:11.00,0:14:13.00,Default,,0,0,0,,lots of tiny things and Dialogue: 0,0:14:13.00,0:14:15.00,Default,,0,0,0,,it's pretty easy to forget the kind of Dialogue: 0,0:14:15.00,0:14:17.00,Default,,0,0,0,, Dialogue: 0,0:14:17.00,0:14:19.00,Default,,0,0,0,,all the points that you have Dialogue: 0,0:14:19.00,0:14:21.00,Default,,0,0,0,,to check. So, it's nice Dialogue: 0,0:14:21.00,0:14:23.00,Default,,0,0,0,,to have a check list. In fact, this is the Dialogue: 0,0:14:23.00,0:14:25.00,Default,,0,0,0,,exact check list that I Dialogue: 0,0:14:25.00,0:14:27.00,Default,,0,0,0,,use personally when I'm reviewing a Dialogue: 0,0:14:27.00,0:14:29.00,Default,,0,0,0,,patch. Dialogue: 0,0:14:29.00,0:14:31.00,Default,,0,0,0,,I have this in an Org mode file and Dialogue: 0,0:14:31.00,0:14:33.00,Default,,0,0,0,,I just go... I run Dialogue: 0,0:14:33.00,0:14:35.00,Default,,0,0,0,,through the check list one point Dialogue: 0,0:14:35.00,0:14:37.00,Default,,0,0,0,,at a time. Dialogue: 0,0:14:37.00,0:14:39.00,Default,,0,0,0,,It would be nice if Dialogue: 0,0:14:39.00,0:14:41.00,Default,,0,0,0,,this kind of check list got standardized and Dialogue: 0,0:14:41.00,0:14:43.00,Default,,0,0,0,,available to everybody so that we could Dialogue: 0,0:14:43.00,0:14:45.00,Default,,0,0,0,,just...anybody could just, Dialogue: 0,0:14:45.00,0:14:47.00,Default,,0,0,0,,you know, run through it and... Dialogue: 0,0:14:47.00,0:14:49.00,Default,,0,0,0,,We would have a standardized process Dialogue: 0,0:14:49.00,0:14:51.00,Default,,0,0,0,,for all Dialogue: 0,0:14:51.00,0:14:53.00,Default,,0,0,0,,reviewers to implement. Dialogue: 0,0:14:53.00,0:14:55.00,Default,,0,0,0,,And they can have some Dialogue: 0,0:14:55.00,0:14:57.00,Default,,0,0,0,,confidence that they are doing the right thing. Dialogue: 0,0:14:57.00,0:14:59.00,Default,,0,0,0,,And often we find the same Dialogue: 0,0:14:59.00,0:15:01.00,Default,,0,0,0,,kind of mistakes in every, Dialogue: 0,0:15:01.00,0:15:03.00,Default,,0,0,0,,in many different patches. Dialogue: 0,0:15:03.00,0:15:05.00,Default,,0,0,0,,[indistiguishable???] Dialogue: 0,0:15:05.00,0:15:07.00,Default,,0,0,0,,Really similar responses to people. Dialogue: 0,0:15:07.00,0:15:09.00,Default,,0,0,0,,So, what Dialogue: 0,0:15:09.00,0:15:11.00,Default,,0,0,0,,if you could just have some check boxes and, Dialogue: 0,0:15:11.00,0:15:13.00,Default,,0,0,0,,you know, if the tests are not packaged Dialogue: 0,0:15:13.00,0:15:15.00,Default,,0,0,0,,and check that. Dialogue: 0,0:15:15.00,0:15:17.00,Default,,0,0,0,,Something wrong with the indentation? Check that. Dialogue: 0,0:15:17.00,0:15:19.00,Default,,0,0,0,,And then just Dialogue: 0,0:15:19.00,0:15:21.00,Default,,0,0,0,,"Report failing checklist items" Dialogue: 0,0:15:21.00,0:15:23.00,Default,,0,0,0,,some kind of template mail goes to the Dialogue: 0,0:15:23.00,0:15:25.00,Default,,0,0,0,,goes to the issue. Dialogue: 0,0:15:25.00,0:15:27.00,Default,,0,0,0,,That would be pretty Dialogue: 0,0:15:27.00,0:15:29.00,Default,,0,0,0,,convenient, right? Dialogue: 0,0:15:29.00,0:15:31.00,Default,,0,0,0,,Yeah. Dialogue: 0,0:15:31.00,0:15:33.00,Default,,0,0,0,,So, the... Dialogue: 0,0:15:33.00,0:15:35.00,Default,,0,0,0,,One point I'd like to make about the Dialogue: 0,0:15:35.00,0:15:37.00,Default,,0,0,0,,tooling is that... Dialogue: 0,0:15:37.00,0:15:39.00,Default,,0,0,0,, Dialogue: 0,0:15:39.00,0:15:41.00,Default,,0,0,0,,So, as long time Dialogue: 0,0:15:41.00,0:15:43.00,Default,,0,0,0,,hackers on this Dialogue: 0,0:15:43.00,0:15:45.00,Default,,0,0,0,,project, we tend to accumulate Dialogue: 0,0:15:45.00,0:15:47.00,Default,,0,0,0,,a bag of tricks, right? Dialogue: 0,0:15:47.00,0:15:49.00,Default,,0,0,0,,So, for example, how do you Dialogue: 0,0:15:49.00,0:15:51.00,Default,,0,0,0,, Dialogue: 0,0:15:51.00,0:15:53.00,Default,,0,0,0,,apply a patch from a mailbox Dialogue: 0,0:15:53.00,0:15:55.00,Default,,0,0,0,,from the convenience of your mail client Dialogue: 0,0:15:55.00,0:15:57.00,Default,,0,0,0,,directly to the Guix git repository? Dialogue: 0,0:15:57.00,0:15:59.00,Default,,0,0,0,,So, for a long time I Dialogue: 0,0:15:59.00,0:16:01.00,Default,,0,0,0,,didn't know that. I didn't know how to do that. Dialogue: 0,0:16:01.00,0:16:03.00,Default,,0,0,0,,And then I hacked Dialogue: 0,0:16:03.00,0:16:05.00,Default,,0,0,0,,up some [???], Dialogue: 0,0:16:05.00,0:16:07.00,Default,,0,0,0,,integrating Notmuch and Dialogue: 0,0:16:07.00,0:16:09.00,Default,,0,0,0,,magit and all that. Dialogue: 0,0:16:09.00,0:16:11.00,Default,,0,0,0,,So, Dialogue: 0,0:16:11.00,0:16:13.00,Default,,0,0,0,,but no one should have to, Dialogue: 0,0:16:13.00,0:16:15.00,Default,,0,0,0,,like, hack up this kind of stuff Dialogue: 0,0:16:15.00,0:16:17.00,Default,,0,0,0,,and reinvent the Dialogue: 0,0:16:17.00,0:16:19.00,Default,,0,0,0,,wheel on this. We should Dialogue: 0,0:16:19.00,0:16:21.00,Default,,0,0,0,,have a standardized Dialogue: 0,0:16:21.00,0:16:23.00,Default,,0,0,0,,and regularized tooling that Dialogue: 0,0:16:23.00,0:16:25.00,Default,,0,0,0,,anybody can Dialogue: 0,0:16:25.00,0:16:27.00,Default,,0,0,0,,just start using without Dialogue: 0,0:16:27.00,0:16:29.00,Default,,0,0,0,,having to reinvent. Dialogue: 0,0:16:29.00,0:16:31.00,Default,,0,0,0,,So, that's idea of tooling. Dialogue: 0,0:16:31.00,0:16:33.00,Default,,0,0,0,,Now let's go on Dialogue: 0,0:16:33.00,0:16:35.00,Default,,0,0,0,,to the shell where I have some... Dialogue: 0,0:16:35.00,0:16:37.00,Default,,0,0,0,,one more mock-up. Dialogue: 0,0:16:37.00,0:16:39.00,Default,,0,0,0,,So, Dialogue: 0,0:16:39.00,0:16:41.00,Default,,0,0,0,,you see this Dialogue: 0,0:16:41.00,0:16:43.00,Default,,0,0,0,,package here? I have this package Dialogue: 0,0:16:43.00,0:16:45.00,Default,,0,0,0,,called "borgmatic" here. Dialogue: 0,0:16:45.00,0:16:47.00,Default,,0,0,0,,It has a couple of linter errors. Dialogue: 0,0:16:47.00,0:16:49.00,Default,,0,0,0,,Let's see how Dialogue: 0,0:16:49.00,0:16:51.00,Default,,0,0,0,,we normally report them. Dialogue: 0,0:16:51.00,0:16:53.00,Default,,0,0,0,,So, Dialogue: 0,0:16:53.00,0:16:55.00,Default,,0,0,0,,let's `./mockup guix lint` Dialogue: 0,0:16:55.00,0:16:57.00,Default,,0,0,0,,This is normally how Dialogue: 0,0:16:57.00,0:16:59.00,Default,,0,0,0,,`guix lint` reports Dialogue: 0,0:16:59.00,0:17:01.00,Default,,0,0,0,,linter errors. So, there's Dialogue: 0,0:17:01.00,0:17:03.00,Default,,0,0,0,,a filename, line number, column Dialogue: 0,0:17:03.00,0:17:05.00,Default,,0,0,0,,number, package name, package version, Dialogue: 0,0:17:05.00,0:17:07.00,Default,,0,0,0,,and then some textual description Dialogue: 0,0:17:07.00,0:17:09.00,Default,,0,0,0,,of the error, right? Dialogue: 0,0:17:09.00,0:17:11.00,Default,,0,0,0,,There are two linter errors for this Dialogue: 0,0:17:11.00,0:17:13.00,Default,,0,0,0,,case. What I propose is Dialogue: 0,0:17:13.00,0:17:15.00,Default,,0,0,0,,something more like this: Dialogue: 0,0:17:15.00,0:17:17.00,Default,,0,0,0,,Something Dialogue: 0,0:17:17.00,0:17:19.00,Default,,0,0,0,,much more detailed, colorful, and Dialogue: 0,0:17:19.00,0:17:21.00,Default,,0,0,0,,most importantly, Dialogue: 0,0:17:21.00,0:17:23.00,Default,,0,0,0,,it has Dialogue: 0,0:17:23.00,0:17:25.00,Default,,0,0,0,,the in-context Dialogue: 0,0:17:25.00,0:17:27.00,Default,,0,0,0,,source of the error. So, Dialogue: 0,0:17:27.00,0:17:29.00,Default,,0,0,0,,The first error is about Dialogue: 0,0:17:29.00,0:17:31.00,Default,,0,0,0,,missing double spaces. Dialogue: 0,0:17:31.00,0:17:33.00,Default,,0,0,0,,So, Dialogue: 0,0:17:33.00,0:17:35.00,Default,,0,0,0,,here you see in the context of the source code Dialogue: 0,0:17:35.00,0:17:37.00,Default,,0,0,0,,exactly where the double space is missing. Dialogue: 0,0:17:37.00,0:17:39.00,Default,,0,0,0,, Dialogue: 0,0:17:39.00,0:17:41.00,Default,,0,0,0,,This is, of course, far better than having to say Dialogue: 0,0:17:41.00,0:17:43.00,Default,,0,0,0,,possible infraction at 86. Dialogue: 0,0:17:43.00,0:17:45.00,Default,,0,0,0,,possible infraction at 86. Dialogue: 0,0:17:45.00,0:17:47.00,Default,,0,0,0,,Here, I don't Dialogue: 0,0:17:47.00,0:17:49.00,Default,,0,0,0,,believe anybody really counts Dialogue: 0,0:17:49.00,0:17:51.00,Default,,0,0,0,,up to distinct position 86 and finds sort of Dialogue: 0,0:17:51.00,0:17:53.00,Default,,0,0,0,,that the... missing Dialogue: 0,0:17:53.00,0:17:55.00,Default,,0,0,0,,double spaces are, right? Dialogue: 0,0:17:55.00,0:17:57.00,Default,,0,0,0,,That's crazy. Dialogue: 0,0:17:57.00,0:17:59.00,Default,,0,0,0,,So, if you could... Dialogue: 0,0:17:59.00,0:18:01.00,Default,,0,0,0,,Like, iron Dialogue: 0,0:18:01.00,0:18:03.00,Default,,0,0,0,,this out and Dialogue: 0,0:18:03.00,0:18:05.00,Default,,0,0,0,,exactly show where the error is would be far better. Dialogue: 0,0:18:05.00,0:18:07.00,Default,,0,0,0,, Dialogue: 0,0:18:07.00,0:18:09.00,Default,,0,0,0,,And the second part Dialogue: 0,0:18:09.00,0:18:11.00,Default,,0,0,0,,of this is this line in magenta. Dialogue: 0,0:18:11.00,0:18:13.00,Default,,0,0,0,,That is the rationale for this rule. Dialogue: 0,0:18:13.00,0:18:15.00,Default,,0,0,0,,So, Dialogue: 0,0:18:15.00,0:18:17.00,Default,,0,0,0,,Humans really like to understand Dialogue: 0,0:18:17.00,0:18:19.00,Default,,0,0,0,,why we have to follow all these rules. Dialogue: 0,0:18:19.00,0:18:21.00,Default,,0,0,0,,It's frustrating to follow rules that we do not Dialogue: 0,0:18:21.00,0:18:23.00,Default,,0,0,0,,know why we are following. Dialogue: 0,0:18:23.00,0:18:25.00,Default,,0,0,0,,So, for a long time, until recently Dialogue: 0,0:18:25.00,0:18:27.00,Default,,0,0,0,,I didn't know why we needed to Dialogue: 0,0:18:27.00,0:18:29.00,Default,,0,0,0,,add two spaces, Dialogue: 0,0:18:29.00,0:18:31.00,Default,,0,0,0,, Dialogue: 0,0:18:31.00,0:18:33.00,Default,,0,0,0,,you know, after a full stop, Dialogue: 0,0:18:33.00,0:18:35.00,Default,,0,0,0,,after a period. Dialogue: 0,0:18:35.00,0:18:37.00,Default,,0,0,0,,And it turns out Dialogue: 0,0:18:37.00,0:18:39.00,Default,,0,0,0,,it's because we need the... Dialogue: 0,0:18:39.00,0:18:41.00,Default,,0,0,0,,it is great for Emacs and [text commands???] Dialogue: 0,0:18:41.00,0:18:43.00,Default,,0,0,0,,to work, right? So, it Dialogue: 0,0:18:43.00,0:18:45.00,Default,,0,0,0,,will be Dialogue: 0,0:18:45.00,0:18:47.00,Default,,0,0,0,,really good if this kind of rationale were Dialogue: 0,0:18:47.00,0:18:49.00,Default,,0,0,0,,put there so that people can Dialogue: 0,0:18:49.00,0:18:51.00,Default,,0,0,0,,understand. And... Dialogue: 0,0:18:51.00,0:18:53.00,Default,,0,0,0,,Even though I did not know this Dialogue: 0,0:18:53.00,0:18:55.00,Default,,0,0,0,,for a long time, even though I did not know Dialogue: 0,0:18:55.00,0:18:57.00,Default,,0,0,0,,why we have this rule for a long time, I Dialogue: 0,0:18:57.00,0:18:59.00,Default,,0,0,0,, Dialogue: 0,0:18:59.00,0:19:01.00,Default,,0,0,0,,I never wanted to ask about this because it sounded Dialogue: 0,0:19:01.00,0:19:03.00,Default,,0,0,0,,like a stupid question which people should not have to ask, Dialogue: 0,0:19:03.00,0:19:05.00,Default,,0,0,0,,right? And that's exactly what Dialogue: 0,0:19:05.00,0:19:07.00,Default,,0,0,0,,new users are going to do. They're not going to ask you Dialogue: 0,0:19:07.00,0:19:09.00,Default,,0,0,0,,these questions. They're just going to Dialogue: 0,0:19:09.00,0:19:11.00,Default,,0,0,0,,maybe be bad with it or Dialogue: 0,0:19:11.00,0:19:13.00,Default,,0,0,0,,they're probably going to be done [indistinguishable???] or something. Dialogue: 0,0:19:13.00,0:19:15.00,Default,,0,0,0,,Alright, so we want this rationale there Dialogue: 0,0:19:15.00,0:19:17.00,Default,,0,0,0,,definitely. Dialogue: 0,0:19:17.00,0:19:19.00,Default,,0,0,0,,And the second Dialogue: 0,0:19:19.00,0:19:21.00,Default,,0,0,0,,that I'm going to say just about Dialogue: 0,0:19:21.00,0:19:23.00,Default,,0,0,0,,check face Dialogue: 0,0:19:23.00,0:19:25.00,Default,,0,0,0,,not respecting tests. Dialogue: 0,0:19:25.00,0:19:27.00,Default,,0,0,0,,So, in the Dialogue: 0,0:19:27.00,0:19:29.00,Default,,0,0,0,,context source, you see exactly the Dialogue: 0,0:19:29.00,0:19:31.00,Default,,0,0,0,,fix that is needed to Dialogue: 0,0:19:31.00,0:19:33.00,Default,,0,0,0,,address this linter error. Dialogue: 0,0:19:33.00,0:19:35.00,Default,,0,0,0,,That's nice. Dialogue: 0,0:19:35.00,0:19:37.00,Default,,0,0,0,,So, it might seem that Dialogue: 0,0:19:37.00,0:19:39.00,Default,,0,0,0,,that this tooling Dialogue: 0,0:19:39.00,0:19:41.00,Default,,0,0,0,,definitely needed to create this kind of Dialogue: 0,0:19:41.00,0:19:43.00,Default,,0,0,0,,tooling would be too much. Dialogue: 0,0:19:43.00,0:19:45.00,Default,,0,0,0,,But Dialogue: 0,0:19:45.00,0:19:47.00,Default,,0,0,0,,I think it'll [certain a lot of saving???] Dialogue: 0,0:19:47.00,0:19:49.00,Default,,0,0,0,,saving of user Dialogue: 0,0:19:49.00,0:19:51.00,Default,,0,0,0,,frustration and also of Dialogue: 0,0:19:51.00,0:19:53.00,Default,,0,0,0,,reviewer time. So, if the Dialogue: 0,0:19:53.00,0:19:55.00,Default,,0,0,0,,contributors have...are producing Dialogue: 0,0:19:55.00,0:19:57.00,Default,,0,0,0,,high quality patches without Dialogue: 0,0:19:57.00,0:19:59.00,Default,,0,0,0,, Dialogue: 0,0:19:59.00,0:20:01.00,Default,,0,0,0,,any errors... there's...that'll Dialogue: 0,0:20:01.00,0:20:03.00,Default,,0,0,0,,already save a great deal of time for the Dialogue: 0,0:20:03.00,0:20:05.00,Default,,0,0,0,,reviewers and is really good for the project. Dialogue: 0,0:20:05.00,0:20:07.00,Default,,0,0,0,, Dialogue: 0,0:20:07.00,0:20:09.00,Default,,0,0,0,,So, back to the slides. So, quick Dialogue: 0,0:20:09.00,0:20:11.00,Default,,0,0,0,,recap of the mock-up that I showed: Dialogue: 0,0:20:11.00,0:20:13.00,Default,,0,0,0,,colorful tags, guidance Dialogue: 0,0:20:13.00,0:20:15.00,Default,,0,0,0,,and mentoring from experienced folks, Dialogue: 0,0:20:15.00,0:20:17.00,Default,,0,0,0,,more automated Dialogue: 0,0:20:17.00,0:20:19.00,Default,,0,0,0,,review, and then Dialogue: 0,0:20:19.00,0:20:21.00,Default,,0,0,0,,checklists for tasks Dialogue: 0,0:20:21.00,0:20:23.00,Default,,0,0,0,,for review tasks that cannot be automated Dialogue: 0,0:20:23.00,0:20:25.00,Default,,0,0,0,,and [then lint error messages???]. Dialogue: 0,0:20:25.00,0:20:27.00,Default,,0,0,0,, Dialogue: 0,0:20:27.00,0:20:29.00,Default,,0,0,0,,So, to the second part of the talk, I believe Dialogue: 0,0:20:29.00,0:20:31.00,Default,,0,0,0,,that our review Dialogue: 0,0:20:31.00,0:20:33.00,Default,,0,0,0,,model is broken. Dialogue: 0,0:20:33.00,0:20:35.00,Default,,0,0,0,,So, Dialogue: 0,0:20:35.00,0:20:37.00,Default,,0,0,0,,normally we have one contributor Dialogue: 0,0:20:37.00,0:20:39.00,Default,,0,0,0,,who comes with a patch and Dialogue: 0,0:20:39.00,0:20:41.00,Default,,0,0,0,,one reviewer who interacts with them Dialogue: 0,0:20:41.00,0:20:43.00,Default,,0,0,0,,and, Dialogue: 0,0:20:43.00,0:20:45.00,Default,,0,0,0,,you know, Dialogue: 0,0:20:45.00,0:20:47.00,Default,,0,0,0,,there's a lot of back and forth that goes in and finally Dialogue: 0,0:20:47.00,0:20:49.00,Default,,0,0,0,,they come down to a patch Dialogue: 0,0:20:49.00,0:20:51.00,Default,,0,0,0,,that can be accepted. So, usually Dialogue: 0,0:20:51.00,0:20:53.00,Default,,0,0,0,,at least more often than Dialogue: 0,0:20:53.00,0:20:55.00,Default,,0,0,0,,not, there is just Dialogue: 0,0:20:55.00,0:20:57.00,Default,,0,0,0,,a single reviewer per issue. Dialogue: 0,0:20:57.00,0:20:59.00,Default,,0,0,0,,For whatever reason, Dialogue: 0,0:20:59.00,0:21:01.00,Default,,0,0,0,,people don't like to barge in Dialogue: 0,0:21:01.00,0:21:03.00,Default,,0,0,0,,on somebody else's issue, right? Dialogue: 0,0:21:03.00,0:21:05.00,Default,,0,0,0,,It happens sometimes, I mean there's times... Dialogue: 0,0:21:05.00,0:21:07.00,Default,,0,0,0,,It's not a bad Dialogue: 0,0:21:07.00,0:21:09.00,Default,,0,0,0,,thing that, you know, commenting on Dialogue: 0,0:21:09.00,0:21:11.00,Default,,0,0,0,,some....on a... Dialogue: 0,0:21:11.00,0:21:13.00,Default,,0,0,0,,on an issue that somebody else is ready working on Dialogue: 0,0:21:13.00,0:21:15.00,Default,,0,0,0,,is no a bad thing. I think it's pretty Dialogue: 0,0:21:15.00,0:21:17.00,Default,,0,0,0,,good in giving a Dialogue: 0,0:21:17.00,0:21:19.00,Default,,0,0,0,,second opinion to the whole process. Dialogue: 0,0:21:19.00,0:21:21.00,Default,,0,0,0,,But more often than not we don't Dialogue: 0,0:21:21.00,0:21:23.00,Default,,0,0,0,,do it. Dialogue: 0,0:21:23.00,0:21:25.00,Default,,0,0,0,,This Dialogue: 0,0:21:25.00,0:21:27.00,Default,,0,0,0,,puts a lot Dialogue: 0,0:21:27.00,0:21:29.00,Default,,0,0,0,,work and responsiblity on that single Dialogue: 0,0:21:29.00,0:21:31.00,Default,,0,0,0,,reviewer. And review is a pretty Dialogue: 0,0:21:31.00,0:21:33.00,Default,,0,0,0,,exhausting process. Dialogue: 0,0:21:33.00,0:21:35.00,Default,,0,0,0,,So, I think we should... Dialogue: 0,0:21:35.00,0:21:37.00,Default,,0,0,0,,I suggest that we split up Dialogue: 0,0:21:37.00,0:21:39.00,Default,,0,0,0,,the review process into multiple Dialogue: 0,0:21:39.00,0:21:41.00,Default,,0,0,0,,phases. Let's see Dialogue: 0,0:21:41.00,0:21:43.00,Default,,0,0,0,,how. Dialogue: 0,0:21:43.00,0:21:45.00,Default,,0,0,0,,So, Dialogue: 0,0:21:45.00,0:21:47.00,Default,,0,0,0,,Step 1 should be the Dialogue: 0,0:21:47.00,0:21:49.00,Default,,0,0,0,, triaging process. Dialogue: 0,0:21:49.00,0:21:51.00,Default,,0,0,0,,If we prescreen the bugs, the issues Dialogue: 0,0:21:51.00,0:21:53.00,Default,,0,0,0,,that come in, classify Dialogue: 0,0:21:53.00,0:21:55.00,Default,,0,0,0,,them and tag them with our Dialogue: 0,0:21:55.00,0:21:57.00,Default,,0,0,0,,eleven tags, maybe Dialogue: 0,0:21:57.00,0:21:59.00,Default,,0,0,0,,ask for more information from the Dialogue: 0,0:21:59.00,0:22:01.00,Default,,0,0,0,,contributor, if necessary... Dialogue: 0,0:22:01.00,0:22:03.00,Default,,0,0,0,,And that's it. Triaging Dialogue: 0,0:22:03.00,0:22:05.00,Default,,0,0,0,,is done. So, hopefully Dialogue: 0,0:22:05.00,0:22:07.00,Default,,0,0,0,,this can be done in less than Dialogue: 0,0:22:07.00,0:22:09.00,Default,,0,0,0,,a day so that Dialogue: 0,0:22:09.00,0:22:11.00,Default,,0,0,0,,the contributors Dialogue: 0,0:22:11.00,0:22:13.00,Default,,0,0,0,,get some, you know, Dialogue: 0,0:22:13.00,0:22:15.00,Default,,0,0,0,,positive feedback where Dialogue: 0,0:22:15.00,0:22:17.00,Default,,0,0,0,,they can feel good that they got a, you know, Dialogue: 0,0:22:17.00,0:22:19.00,Default,,0,0,0,,an immediate response here. And Dialogue: 0,0:22:19.00,0:22:21.00,Default,,0,0,0,,a promise that their bug Dialogue: 0,0:22:21.00,0:22:23.00,Default,,0,0,0,,will be addressed in some Dialogue: 0,0:22:23.00,0:22:25.00,Default,,0,0,0,,time at least. Dialogue: 0,0:22:25.00,0:22:27.00,Default,,0,0,0,,And we Dialogue: 0,0:22:27.00,0:22:29.00,Default,,0,0,0,,ought to have a Dialogue: 0,0:22:29.00,0:22:31.00,Default,,0,0,0,,a separate team Dialogue: 0,0:22:31.00,0:22:33.00,Default,,0,0,0,,just for triaging. You don't Dialogue: 0,0:22:33.00,0:22:35.00,Default,,0,0,0,,really Dialogue: 0,0:22:35.00,0:22:37.00,Default,,0,0,0,,want them to be Dialogue: 0,0:22:37.00,0:22:39.00,Default,,0,0,0,, getting involved in Dialogue: 0,0:22:39.00,0:22:41.00,Default,,0,0,0,,the review process, unless they want to, of course. Dialogue: 0,0:22:41.00,0:22:43.00,Default,,0,0,0,,So, that... Dialogue: 0,0:22:43.00,0:22:45.00,Default,,0,0,0,,the responsiblity of the Dialogue: 0,0:22:45.00,0:22:47.00,Default,,0,0,0,,triaging team is finished as soon as Dialogue: 0,0:22:47.00,0:22:49.00,Default,,0,0,0,,the triaging process is complete. Dialogue: 0,0:22:49.00,0:22:51.00,Default,,0,0,0,,They should not have to follow up that Dialogue: 0,0:22:51.00,0:22:53.00,Default,,0,0,0,,single issue all the way down to the end, right? Dialogue: 0,0:22:53.00,0:22:55.00,Default,,0,0,0,,So, triaging is Dialogue: 0,0:22:55.00,0:22:57.00,Default,,0,0,0,,really easy, anybody can do it, even Dialogue: 0,0:22:57.00,0:22:59.00,Default,,0,0,0,,really inexperienced Dialogue: 0,0:22:59.00,0:23:01.00,Default,,0,0,0,,folks can do it pretty easily if... Dialogue: 0,0:23:01.00,0:23:03.00,Default,,0,0,0,,system... basic... Dialogue: 0,0:23:03.00,0:23:05.00,Default,,0,0,0,,[assigning tickets???] type of thing, right? Dialogue: 0,0:23:05.00,0:23:07.00,Default,,0,0,0,,And then we want Dialogue: 0,0:23:07.00,0:23:09.00,Default,,0,0,0,,the...if there's a bug Dialogue: 0,0:23:09.00,0:23:11.00,Default,,0,0,0,,and... Dialogue: 0,0:23:11.00,0:23:13.00,Default,,0,0,0,,we want the more experienced people to Dialogue: 0,0:23:13.00,0:23:15.00,Default,,0,0,0,,come out and Dialogue: 0,0:23:15.00,0:23:17.00,Default,,0,0,0,,write instructions on Dialogue: 0,0:23:17.00,0:23:19.00,Default,,0,0,0,,how to address the Dialogue: 0,0:23:19.00,0:23:21.00,Default,,0,0,0,,bug and, you know, maybe Dialogue: 0,0:23:21.00,0:23:23.00,Default,,0,0,0,,which lines of code, which functions are relevant, Dialogue: 0,0:23:23.00,0:23:25.00,Default,,0,0,0,,you know, that kind of thing. So, Dialogue: 0,0:23:25.00,0:23:27.00,Default,,0,0,0,,as far as possible, we want to do Dialogue: 0,0:23:27.00,0:23:29.00,Default,,0,0,0,,the kind of things that Dialogue: 0,0:23:29.00,0:23:31.00,Default,,0,0,0,,nobody else can do. We don't want Dialogue: 0,0:23:31.00,0:23:33.00,Default,,0,0,0,,them to Dialogue: 0,0:23:33.00,0:23:35.00,Default,,0,0,0,,to be Dialogue: 0,0:23:35.00,0:23:37.00,Default,,0,0,0,,doing all the grind work themselves. They should Dialogue: 0,0:23:37.00,0:23:39.00,Default,,0,0,0,,also be teaching others and this is a great way. Dialogue: 0,0:23:39.00,0:23:41.00,Default,,0,0,0,,This is the summary paragraph Dialogue: 0,0:23:41.00,0:23:43.00,Default,,0,0,0,,that I read at the top of the Dialogue: 0,0:23:43.00,0:23:45.00,Default,,0,0,0,,mock-up. Then maybe Dialogue: 0,0:23:45.00,0:23:47.00,Default,,0,0,0,,the first round of review could come from a Dialogue: 0,0:23:47.00,0:23:49.00,Default,,0,0,0,,non-committer? I don't know how Dialogue: 0,0:23:49.00,0:23:51.00,Default,,0,0,0,,we could motivate them to do it. Dialogue: 0,0:23:51.00,0:23:53.00,Default,,0,0,0,,But, if Dialogue: 0,0:23:53.00,0:23:55.00,Default,,0,0,0,,[???] non-committers that Dialogue: 0,0:23:55.00,0:23:57.00,Default,,0,0,0,,would be, that would take off significant Dialogue: 0,0:23:57.00,0:23:59.00,Default,,0,0,0,,work from the reviewers... Dialogue: 0,0:23:59.00,0:24:01.00,Default,,0,0,0,,from the committer reviewers. Dialogue: 0,0:24:01.00,0:24:03.00,Default,,0,0,0,,And it might also be a good way to Dialogue: 0,0:24:03.00,0:24:05.00,Default,,0,0,0,,for us to, you know, find potential new Dialogue: 0,0:24:05.00,0:24:07.00,Default,,0,0,0,,committers... Dialogue: 0,0:24:07.00,0:24:09.00,Default,,0,0,0,,people who we can, Dialogue: 0,0:24:09.00,0:24:11.00,Default,,0,0,0,,you know, give them a more integral Dialogue: 0,0:24:11.00,0:24:13.00,Default,,0,0,0,,part in the committing [???]. Dialogue: 0,0:24:13.00,0:24:15.00,Default,,0,0,0,, Dialogue: 0,0:24:15.00,0:24:17.00,Default,,0,0,0,,And apart Dialogue: 0,0:24:17.00,0:24:19.00,Default,,0,0,0,,from this we also need to Dialogue: 0,0:24:19.00,0:24:21.00,Default,,0,0,0,,broaden our idea of Dialogue: 0,0:24:21.00,0:24:23.00,Default,,0,0,0,,what community means. Dialogue: 0,0:24:23.00,0:24:25.00,Default,,0,0,0,,It's still pretty tempting to Dialogue: 0,0:24:25.00,0:24:27.00,Default,,0,0,0,,think of the community as just a Dialogue: 0,0:24:27.00,0:24:29.00,Default,,0,0,0,,you know, Dialogue: 0,0:24:29.00,0:24:31.00,Default,,0,0,0,,core developers and users. Dialogue: 0,0:24:31.00,0:24:33.00,Default,,0,0,0,,I think that's a pretty bad approach, I mean Dialogue: 0,0:24:33.00,0:24:35.00,Default,,0,0,0,, Dialogue: 0,0:24:35.00,0:24:37.00,Default,,0,0,0,,More and more we realize this but Dialogue: 0,0:24:37.00,0:24:39.00,Default,,0,0,0,,there are still some Dialogue: 0,0:24:39.00,0:24:41.00,Default,,0,0,0,,tragic hangovers from Dialogue: 0,0:24:41.00,0:24:43.00,Default,,0,0,0,, Dialogue: 0,0:24:43.00,0:24:45.00,Default,,0,0,0,,ages past, like the idea of... Dialogue: 0,0:24:45.00,0:24:47.00,Default,,0,0,0,,it's so easy to Dialogue: 0,0:24:47.00,0:24:49.00,Default,,0,0,0,,only credit Dialogue: 0,0:24:49.00,0:24:51.00,Default,,0,0,0,, Dialogue: 0,0:24:51.00,0:24:53.00,Default,,0,0,0,,people commit in core Dialogue: 0,0:24:53.00,0:24:55.00,Default,,0,0,0,,because all they have to do is run a git log and Dialogue: 0,0:24:55.00,0:24:57.00,Default,,0,0,0,,you know, a little shell pipe Dialogue: 0,0:24:57.00,0:24:59.00,Default,,0,0,0,,and you have a list of all contributors, right? Dialogue: 0,0:24:59.00,0:25:01.00,Default,,0,0,0,,And this tends to go into the Dialogue: 0,0:25:01.00,0:25:03.00,Default,,0,0,0,,news reports in the Dialogue: 0,0:25:03.00,0:25:05.00,Default,,0,0,0,, Dialogue: 0,0:25:05.00,0:25:07.00,Default,,0,0,0,,[???] Dialogue: 0,0:25:07.00,0:25:09.00,Default,,0,0,0,,[???] Dialogue: 0,0:25:09.00,0:25:11.00,Default,,0,0,0,,We do it because it's an old habit Dialogue: 0,0:25:11.00,0:25:13.00,Default,,0,0,0,,and it's Dialogue: 0,0:25:13.00,0:25:15.00,Default,,0,0,0,,something so easy to do, you can Dialogue: 0,0:25:15.00,0:25:17.00,Default,,0,0,0,,even prefix it with the number of commits they Dialogue: 0,0:25:17.00,0:25:19.00,Default,,0,0,0,,did and it looks Dialogue: 0,0:25:19.00,0:25:21.00,Default,,0,0,0,,really neat. Dialogue: 0,0:25:21.00,0:25:23.00,Default,,0,0,0,,Probably follows the power law or something, 80-20 and Dialogue: 0,0:25:23.00,0:25:25.00,Default,,0,0,0,,everything. Dialogue: 0,0:25:25.00,0:25:27.00,Default,,0,0,0,,But it's kind of, you know... Dialogue: 0,0:25:27.00,0:25:29.00,Default,,0,0,0,,it reflects an old Dialogue: 0,0:25:29.00,0:25:31.00,Default,,0,0,0,,mindset that only quotas are Dialogue: 0,0:25:31.00,0:25:33.00,Default,,0,0,0,,real contributors, Dialogue: 0,0:25:33.00,0:25:35.00,Default,,0,0,0,,right? And that's not a good Dialogue: 0,0:25:35.00,0:25:37.00,Default,,0,0,0,,thing. We should be also Dialogue: 0,0:25:37.00,0:25:39.00,Default,,0,0,0,,looking at Dialogue: 0,0:25:39.00,0:25:41.00,Default,,0,0,0,,people who manage Dialogue: 0,0:25:41.00,0:25:43.00,Default,,0,0,0,,the community, so to speak. Dialogue: 0,0:25:43.00,0:25:45.00,Default,,0,0,0,,Like people who answer support requests. Dialogue: 0,0:25:45.00,0:25:47.00,Default,,0,0,0,,People who are doing triaging are probably not Dialogue: 0,0:25:47.00,0:25:49.00,Default,,0,0,0,,going to be... Dialogue: 0,0:25:49.00,0:25:51.00,Default,,0,0,0,,involved...at all showing up Dialogue: 0,0:25:51.00,0:25:53.00,Default,,0,0,0,,in the git log. But they are contributors Dialogue: 0,0:25:53.00,0:25:55.00,Default,,0,0,0,,and essential to the community nonetheless. Dialogue: 0,0:25:55.00,0:25:57.00,Default,,0,0,0,,And then we need toolsmiths Dialogue: 0,0:25:57.00,0:25:59.00,Default,,0,0,0,,who work on tooling Dialogue: 0,0:25:59.00,0:26:01.00,Default,,0,0,0,,like Mumi. Dialogue: 0,0:26:01.00,0:26:03.00,Default,,0,0,0,,Again, it's not going to show up in the Guix Dialogue: 0,0:26:03.00,0:26:05.00,Default,,0,0,0,,git log but Dialogue: 0,0:26:05.00,0:26:07.00,Default,,0,0,0,,the associated tooling is essential for Guix to Dialogue: 0,0:26:07.00,0:26:09.00,Default,,0,0,0,,operate well. Dialogue: 0,0:26:09.00,0:26:11.00,Default,,0,0,0,,Software communities are Dialogue: 0,0:26:11.00,0:26:13.00,Default,,0,0,0,,just communities Dialogue: 0,0:26:13.00,0:26:15.00,Default,,0,0,0,,of people, Dialogue: 0,0:26:15.00,0:26:17.00,Default,,0,0,0,,So whenever you put a bunch of people Dialogue: 0,0:26:17.00,0:26:19.00,Default,,0,0,0,,in a room, you're going to have trouble and Dialogue: 0,0:26:19.00,0:26:21.00,Default,,0,0,0,,software is no different. Dialogue: 0,0:26:21.00,0:26:23.00,Default,,0,0,0,,Software Dialogue: 0,0:26:23.00,0:26:25.00,Default,,0,0,0,,is about the people, it's not about the code. Dialogue: 0,0:26:25.00,0:26:27.00,Default,,0,0,0,, Dialogue: 0,0:26:27.00,0:26:29.00,Default,,0,0,0,,When you have the right people Dialogue: 0,0:26:29.00,0:26:31.00,Default,,0,0,0,,and the right kind of Dialogue: 0,0:26:31.00,0:26:33.00,Default,,0,0,0,,organization, code will come on its own. Dialogue: 0,0:26:33.00,0:26:35.00,Default,,0,0,0,, Dialogue: 0,0:26:35.00,0:26:37.00,Default,,0,0,0,,So, Dialogue: 0,0:26:37.00,0:26:39.00,Default,,0,0,0,,Mumi, as you know, is Dialogue: 0,0:26:39.00,0:26:41.00,Default,,0,0,0,,our interface Dialogue: 0,0:26:41.00,0:26:43.00,Default,,0,0,0,,to Debbugs. Dialogue: 0,0:26:43.00,0:26:45.00,Default,,0,0,0,,And Dialogue: 0,0:26:45.00,0:26:47.00,Default,,0,0,0,,hacking on Mumi is kind of the Dialogue: 0,0:26:47.00,0:26:49.00,Default,,0,0,0,,point of all these mock-ups. Dialogue: 0,0:26:49.00,0:26:51.00,Default,,0,0,0,,So, the Debbugs API is Dialogue: 0,0:26:51.00,0:26:53.00,Default,,0,0,0,,terrible. Dialogue: 0,0:26:53.00,0:26:55.00,Default,,0,0,0,,If you never had a chance to look at it, Dialogue: 0,0:26:55.00,0:26:57.00,Default,,0,0,0,,you should be really happy. :) Dialogue: 0,0:26:57.00,0:26:59.00,Default,,0,0,0,,It Dialogue: 0,0:26:59.00,0:27:01.00,Default,,0,0,0,,does not expose... Dialogue: 0,0:27:01.00,0:27:03.00,Default,,0,0,0,,It uses a SOAP... Dialogue: 0,0:27:03.00,0:27:05.00,Default,,0,0,0,,an old XML Dialogue: 0,0:27:05.00,0:27:07.00,Default,,0,0,0,,a remote Dialogue: 0,0:27:07.00,0:27:09.00,Default,,0,0,0,,procedure call standard. Dialogue: 0,0:27:09.00,0:27:11.00,Default,,0,0,0,, Dialogue: 0,0:27:11.00,0:27:13.00,Default,,0,0,0,,I could live with that, but Dialogue: 0,0:27:13.00,0:27:15.00,Default,,0,0,0,,it does not Dialogue: 0,0:27:15.00,0:27:17.00,Default,,0,0,0,,expose really important Dialogue: 0,0:27:17.00,0:27:19.00,Default,,0,0,0,,attributes Dialogue: 0,0:27:19.00,0:27:21.00,Default,,0,0,0,,on debugs, for example. Dialogue: 0,0:27:21.00,0:27:23.00,Default,,0,0,0,,It won't even tell you the number Dialogue: 0,0:27:23.00,0:27:25.00,Default,,0,0,0,,of emails that Dialogue: 0,0:27:25.00,0:27:27.00,Default,,0,0,0,,have been received relevant to a certain issue. Dialogue: 0,0:27:27.00,0:27:29.00,Default,,0,0,0,,Right? So, really basic Dialogue: 0,0:27:29.00,0:27:31.00,Default,,0,0,0,,things it does not expose and Dialogue: 0,0:27:31.00,0:27:33.00,Default,,0,0,0,,it's Dialogue: 0,0:27:33.00,0:27:35.00,Default,,0,0,0,,almost any work done with it. Dialogue: 0,0:27:35.00,0:27:37.00,Default,,0,0,0,,So, Mumi is a great Dialogue: 0,0:27:37.00,0:27:39.00,Default,,0,0,0,,improvement and I'm happy it exists. Dialogue: 0,0:27:39.00,0:27:41.00,Default,,0,0,0,, Dialogue: 0,0:27:41.00,0:27:43.00,Default,,0,0,0,,Mumi is Dialogue: 0,0:27:43.00,0:27:45.00,Default,,0,0,0,,actually on an IP Dialogue: 0,0:27:45.00,0:27:47.00,Default,,0,0,0,,allow-list to sync data from Debbugs Dialogue: 0,0:27:47.00,0:27:49.00,Default,,0,0,0,,It has special permission from Dialogue: 0,0:27:49.00,0:27:51.00,Default,,0,0,0,,the Debbugs admins and Dialogue: 0,0:27:51.00,0:27:53.00,Default,,0,0,0,,it is on an IP allow list. Dialogue: 0,0:27:53.00,0:27:55.00,Default,,0,0,0,,So, this makes it really hard Dialogue: 0,0:27:55.00,0:27:57.00,Default,,0,0,0,,to, you know, run your own instance and... Dialogue: 0,0:27:57.00,0:27:59.00,Default,,0,0,0,,of Mumi and hack on it. Dialogue: 0,0:27:59.00,0:28:01.00,Default,,0,0,0,,So, I'm hoping...I'm thinking Dialogue: 0,0:28:01.00,0:28:03.00,Default,,0,0,0,,that a Mumi API will Dialogue: 0,0:28:03.00,0:28:05.00,Default,,0,0,0,,let us expose the Dialogue: 0,0:28:05.00,0:28:07.00,Default,,0,0,0,,data that Dialogue: 0,0:28:07.00,0:28:09.00,Default,,0,0,0,,Mumi is the custodian of, right? Dialogue: 0,0:28:09.00,0:28:11.00,Default,,0,0,0,,And, recently I've Dialogue: 0,0:28:11.00,0:28:13.00,Default,,0,0,0,,been hacking on a GraphQL API for Dialogue: 0,0:28:13.00,0:28:15.00,Default,,0,0,0,,Mumi. And Dialogue: 0,0:28:15.00,0:28:17.00,Default,,0,0,0,,also a GraphQL library Dialogue: 0,0:28:17.00,0:28:19.00,Default,,0,0,0,,for Guile in general. Dialogue: 0,0:28:19.00,0:28:21.00,Default,,0,0,0,,I hope though Dialogue: 0,0:28:21.00,0:28:23.00,Default,,0,0,0,,this API will... Dialogue: 0,0:28:23.00,0:28:25.00,Default,,0,0,0,,So, this API is already in Mumi, Dialogue: 0,0:28:25.00,0:28:27.00,Default,,0,0,0,,even though I haven't properly published Dialogue: 0,0:28:27.00,0:28:29.00,Default,,0,0,0,,[???] and documented the whole thing. Dialogue: 0,0:28:29.00,0:28:31.00,Default,,0,0,0,,The hope is that Dialogue: 0,0:28:31.00,0:28:33.00,Default,,0,0,0,,it'll motivate the creation of many Dialogue: 0,0:28:33.00,0:28:35.00,Default,,0,0,0,,small, lightweight clients. Dialogue: 0,0:28:35.00,0:28:37.00,Default,,0,0,0,,I say, "lightweight" Dialogue: 0,0:28:37.00,0:28:39.00,Default,,0,0,0,,because Dialogue: 0,0:28:39.00,0:28:41.00,Default,,0,0,0,,Mumi is already doing a great job of maintaining Dialogue: 0,0:28:41.00,0:28:43.00,Default,,0,0,0,,the state of Dialogue: 0,0:28:43.00,0:28:45.00,Default,,0,0,0,,all the issues. Dialogue: 0,0:28:45.00,0:28:47.00,Default,,0,0,0,,The "state" meaning all the email Dialogue: 0,0:28:47.00,0:28:49.00,Default,,0,0,0,,conversations, the Dialogue: 0,0:28:49.00,0:28:51.00,Default,,0,0,0,,current state of the bug, Dialogue: 0,0:28:51.00,0:28:53.00,Default,,0,0,0,,all of the persistent state, the state that's Dialogue: 0,0:28:53.00,0:28:55.00,Default,,0,0,0,,in functional programming. Dialogue: 0,0:28:55.00,0:28:57.00,Default,,0,0,0,,And... Dialogue: 0,0:28:57.00,0:28:59.00,Default,,0,0,0,,More often than not, clients should only Dialogue: 0,0:28:59.00,0:29:01.00,Default,,0,0,0,, Dialogue: 0,0:29:01.00,0:29:03.00,Default,,0,0,0,,download only the specific bits Dialogue: 0,0:29:03.00,0:29:05.00,Default,,0,0,0,,of state that they want... Dialogue: 0,0:29:05.00,0:29:07.00,Default,,0,0,0,, Dialogue: 0,0:29:07.00,0:29:09.00,Default,,0,0,0,,Use it and then, once they're done Dialogue: 0,0:29:09.00,0:29:11.00,Default,,0,0,0,,with it, discard it... Dialogue: 0,0:29:11.00,0:29:13.00,Default,,0,0,0,,because Dialogue: 0,0:29:13.00,0:29:15.00,Default,,0,0,0,,if you're...we already have Dialogue: 0,0:29:15.00,0:29:17.00,Default,,0,0,0,,way to many emails and if you wanted Dialogue: 0,0:29:17.00,0:29:19.00,Default,,0,0,0,,to download all of them into your local machine, it's going Dialogue: 0,0:29:19.00,0:29:21.00,Default,,0,0,0,,to be a few... Dialogue: 0,0:29:21.00,0:29:23.00,Default,,0,0,0,,At least a Gig or few... Dialogue: 0,0:29:23.00,0:29:25.00,Default,,0,0,0,,Gb (gigabytes). Dialogue: 0,0:29:25.00,0:29:27.00,Default,,0,0,0,,So, [I believe the???] Dialogue: 0,0:29:27.00,0:29:29.00,Default,,0,0,0,,Linux kernel mailing lists are Dialogue: 0,0:29:29.00,0:29:31.00,Default,,0,0,0,,200Gb or something and that's Dialogue: 0,0:29:31.00,0:29:33.00,Default,,0,0,0,,way too much state to hold on your Dialogue: 0,0:29:33.00,0:29:35.00,Default,,0,0,0,,local machine. Dialogue: 0,0:29:35.00,0:29:37.00,Default,,0,0,0,,So, we are also heading in that Dialogue: 0,0:29:37.00,0:29:39.00,Default,,0,0,0,,direction, the direction of Dialogue: 0,0:29:39.00,0:29:41.00,Default,,0,0,0,,the Linux mailing list and Dialogue: 0,0:29:41.00,0:29:43.00,Default,,0,0,0,,downloading [our???] entire Dialogue: 0,0:29:43.00,0:29:45.00,Default,,0,0,0,,state Dialogue: 0,0:29:45.00,0:29:47.00,Default,,0,0,0,,kind of like...git does it....this really bad idea... Dialogue: 0,0:29:47.00,0:29:49.00,Default,,0,0,0,,We want something more lightweight. Dialogue: 0,0:29:49.00,0:29:51.00,Default,,0,0,0,,So, hence I thought GraphQL Dialogue: 0,0:29:51.00,0:29:53.00,Default,,0,0,0,,was really nice and it was fun Dialogue: 0,0:29:53.00,0:29:55.00,Default,,0,0,0,,to hack. So, that's kind of the Dialogue: 0,0:29:55.00,0:29:57.00,Default,,0,0,0,,reason. Dialogue: 0,0:29:57.00,0:29:59.00,Default,,0,0,0,,So, thank you! Dialogue: 0,0:29:59.00,0:30:01.00,Default,,0,0,0,,Now you can have Dialogue: 0,0:30:01.00,0:30:03.00,Default,,0,0,0,,(End of recordingabout) ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-05 4:54 ` Matt @ 2022-03-05 5:30 ` Matt [not found] ` <a220ab8276495663266b98ecf2eb9c0b@fripost.org> 0 siblings, 1 reply; 12+ messages in thread From: Matt @ 2022-03-05 5:30 UTC (permalink / raw) To: Matt; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 235 bytes --] I've started on the "Deep Dive into the Guile Docs & Makeover Proposal" talk. I'm only about 4:15 in and it's a long one, like 79 minutes. If any wants to split it up, let me know. Otherwise I'll just chip away at it in between life. [-- Attachment #2: guix-days-2022-documentation.ass --] [-- Type: application/octet-stream, Size: 9562 bytes --] [Script Info] ; Script generated by Aegisub 3.2.2 ; http://www.aegisub.org/ Title: Default Aegisub file ScriptType: v4.00+ WrapStyle: 0 ScaledBorderAndShadow: yes YCbCr Matrix: TV.601 PlayResX: 1280 PlayResY: 720 [Aegisub Project Garbage] Audio File: /home/ahab/Downloads/guix-days-2022-documentation.mp4 Video File: /home/ahab/Downloads/guix-days-2022-documentation.mp4 Video AR Mode: 4 Video AR Value: 1.777778 Scroll Position: 121 Active Line: 126 Video Position: 7650 [V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1 [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,Hi, folks! I'm Blake Shaw. Dialogue: 0,0:00:05.00,0:00:07.00,Default,,0,0,0,,And this talk Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,is about Guile docs. Dialogue: 0,0:00:09.00,0:00:11.00,Default,,0,0,0,,So let's Dialogue: 0,0:00:11.00,0:00:13.00,Default,,0,0,0,,get started. Dialogue: 0,0:00:13.00,0:00:15.00,Default,,0,0,0,,As noted in the emails Dialogue: 0,0:00:15.00,0:00:17.00,Default,,0,0,0,,on the email list, Dialogue: 0,0:00:17.00,0:00:19.00,Default,,0,0,0,,I am Dialogue: 0,0:00:19.00,0:00:21.00,Default,,0,0,0,,doing the whole presentation from Dialogue: 0,0:00:21.00,0:00:23.00,Default,,0,0,0,,the REPL (read-eval-print-loop) Dialogue: 0,0:00:23.00,0:00:25.00,Default,,0,0,0,, Dialogue: 0,0:00:25.00,0:00:27.00,Default,,0,0,0,,So let me just load Dialogue: 0,0:00:27.00,0:00:29.00,Default,,0,0,0,,the module Dialogue: 0,0:00:29.00,0:00:31.00,Default,,0,0,0,, Dialogue: 0,0:00:31.00,0:00:33.00,Default,,0,0,0,, Dialogue: 0,0:00:33.00,0:00:35.00,Default,,0,0,0,, Dialogue: 0,0:00:35.00,0:00:37.00,Default,,0,0,0,,Okay. Dialogue: 0,0:00:37.00,0:00:39.00,Default,,0,0,0,,So, the talk is called "Guix Docs: Dialogue: 0,0:00:39.00,0:00:41.00,Default,,0,0,0,,seven maxims for simplicity" Dialogue: 0,0:00:41.00,0:00:43.00,Default,,0,0,0,,I Dialogue: 0,0:00:43.00,0:00:45.00,Default,,0,0,0,,will be giving a small overview Dialogue: 0,0:00:45.00,0:00:47.00,Default,,0,0,0,,of the Guix docs Dialogue: 0,0:00:47.00,0:00:49.00,Default,,0,0,0,,A lot of the conversation have been happening Dialogue: 0,0:00:49.00,0:00:51.00,Default,,0,0,0,,on the mailing list and a lot Dialogue: 0,0:00:51.00,0:00:53.00,Default,,0,0,0,,the stuff that I will cover Dialogue: 0,0:00:53.00,0:00:55.00,Default,,0,0,0,,have been covered. So, Dialogue: 0,0:00:55.00,0:00:57.00,Default,,0,0,0,,I wanted to focus on Dialogue: 0,0:00:57.00,0:00:59.00,Default,,0,0,0,,seven Dialogue: 0,0:00:59.00,0:01:01.00,Default,,0,0,0,,principals Dialogue: 0,0:01:01.00,0:01:03.00,Default,,0,0,0,,seven declarative Dialogue: 0,0:01:03.00,0:01:05.00,Default,,0,0,0,,principals because maxims are Dialogue: 0,0:01:05.00,0:01:07.00,Default,,0,0,0,,essentially declarative principals Dialogue: 0,0:01:07.00,0:01:09.00,Default,,0,0,0,,that I think integrate Dialogue: 0,0:01:09.00,0:01:11.00,Default,,0,0,0,,a Dialogue: 0,0:01:11.00,0:01:13.00,Default,,0,0,0,,scheme Dialogue: 0,0:01:13.00,0:01:15.00,Default,,0,0,0,,like Dialogue: 0,0:01:15.00,0:01:17.00,Default,,0,0,0,,philosophy Dialogue: 0,0:01:17.00,0:01:19.00,Default,,0,0,0,,into Dialogue: 0,0:01:19.00,0:01:21.00,Default,,0,0,0,,some principals that we can adopt Dialogue: 0,0:01:21.00,0:01:23.00,Default,,0,0,0,,for Dialogue: 0,0:01:23.00,0:01:25.00,Default,,0,0,0,,generally Dialogue: 0,0:01:25.00,0:01:27.00,Default,,0,0,0,,rehabbing the whole Dialogue: 0,0:01:27.00,0:01:29.00,Default,,0,0,0,,reference manual. Dialogue: 0,0:01:29.00,0:01:31.00,Default,,0,0,0,,But before we get started Dialogue: 0,0:01:31.00,0:01:33.00,Default,,0,0,0,, Dialogue: 0,0:01:33.00,0:01:35.00,Default,,0,0,0,,I'll just do some introducing Dialogue: 0,0:01:35.00,0:01:37.00,Default,,0,0,0,,of myself. Dialogue: 0,0:01:37.00,0:01:39.00,Default,,0,0,0,,So, I'm a new Dialogue: 0,0:01:39.00,0:01:41.00,Default,,0,0,0,,media artist by Dialogue: 0,0:01:41.00,0:01:43.00,Default,,0,0,0,,profession. That's how I make Dialogue: 0,0:01:43.00,0:01:45.00,Default,,0,0,0,,living. Since Dialogue: 0,0:01:45.00,0:01:47.00,Default,,0,0,0,,2009 Dialogue: 0,0:01:47.00,0:01:49.00,Default,,0,0,0,,I have run Dialogue: 0,0:01:49.00,0:01:51.00,Default,,0,0,0,,a new media art collective called Dialogue: 0,0:01:51.00,0:01:53.00,Default,,0,0,0,,"sweatshoppe" along with Bruno Levy Dialogue: 0,0:01:53.00,0:01:55.00,Default,,0,0,0,,who is a Dialogue: 0,0:01:55.00,0:01:57.00,Default,,0,0,0,,music video director and Dialogue: 0,0:01:57.00,0:01:59.00,Default,,0,0,0,,and a Dialogue: 0,0:01:59.00,0:02:01.00,Default,,0,0,0,,tattoo artist and a street artist Dialogue: 0,0:02:01.00,0:02:03.00,Default,,0,0,0,,and I'm a digital artist Dialogue: 0,0:02:03.00,0:02:05.00,Default,,0,0,0,,And Dialogue: 0,0:02:05.00,0:02:07.00,Default,,0,0,0,,since... Dialogue: 0,0:02:07.00,0:02:09.00,Default,,0,0,0,,when I was only 19 years old Dialogue: 0,0:02:09.00,0:02:11.00,Default,,0,0,0,,we started this Dialogue: 0,0:02:11.00,0:02:13.00,Default,,0,0,0,,collaboration that originally started Dialogue: 0,0:02:13.00,0:02:15.00,Default,,0,0,0,,to develop as Dialogue: 0,0:02:15.00,0:02:17.00,Default,,0,0,0,,an electronic music group Dialogue: 0,0:02:17.00,0:02:19.00,Default,,0,0,0,,And then I Dialogue: 0,0:02:19.00,0:02:21.00,Default,,0,0,0,,came up with this idea for this thing called Dialogue: 0,0:02:21.00,0:02:23.00,Default,,0,0,0,,video painting which Dialogue: 0,0:02:23.00,0:02:25.00,Default,,0,0,0,,really went viral and exploded Dialogue: 0,0:02:25.00,0:02:27.00,Default,,0,0,0,,on the internet when I was Dialogue: 0,0:02:27.00,0:02:29.00,Default,,0,0,0,,19. I was still an college. Dialogue: 0,0:02:29.00,0:02:31.00,Default,,0,0,0,,We got invited to Art [Basel???] Dialogue: 0,0:02:31.00,0:02:33.00,Default,,0,0,0,,like right after it came out Dialogue: 0,0:02:33.00,0:02:35.00,Default,,0,0,0,,Totally crazy thing... Dialogue: 0,0:02:35.00,0:02:37.00,Default,,0,0,0,,And that's led to Dialogue: 0,0:02:37.00,0:02:39.00,Default,,0,0,0,,me Dialogue: 0,0:02:39.00,0:02:41.00,Default,,0,0,0,,having been able to make Dialogue: 0,0:02:41.00,0:02:43.00,Default,,0,0,0,,a living doing Dialogue: 0,0:02:43.00,0:02:45.00,Default,,0,0,0,,these new media art installations Dialogue: 0,0:02:45.00,0:02:47.00,Default,,0,0,0,,around the world Dialogue: 0,0:02:47.00,0:02:49.00,Default,,0,0,0,,for the past decade. Dialogue: 0,0:02:49.00,0:02:51.00,Default,,0,0,0,,And we have Dialogue: 0,0:02:51.00,0:02:53.00,Default,,0,0,0,,shown in 40 Dialogue: 0,0:02:53.00,0:02:55.00,Default,,0,0,0,,cities around the world Dialogue: 0,0:02:55.00,0:02:57.00,Default,,0,0,0,,actually all Dialogue: 0,0:02:57.00,0:02:59.00,Default,,0,0,0,,show you a little video... Dialogue: 0,0:02:59.00,0:03:01.00,Default,,0,0,0,,Just really Dialogue: 0,0:03:01.00,0:03:03.00,Default,,0,0,0,,quickly... Dialogue: 0,0:03:03.00,0:03:05.00,Default,,0,0,0,, Dialogue: 0,0:03:05.00,0:03:07.00,Default,,0,0,0,,(electronic music) Dialogue: 0,0:03:07.00,0:03:09.00,Default,,0,0,0,,And so Dialogue: 0,0:03:09.00,0:03:11.00,Default,,0,0,0,,video painting Dialogue: 0,0:03:11.00,0:03:13.00,Default,,0,0,0,,the idea behind it Dialogue: 0,0:03:13.00,0:03:15.00,Default,,0,0,0,,is that we are doing Dialogue: 0,0:03:15.00,0:03:17.00,Default,,0,0,0,,a kind of [wheat???] paste style Dialogue: 0,0:03:17.00,0:03:19.00,Default,,0,0,0,, Dialogue: 0,0:03:19.00,0:03:21.00,Default,,0,0,0,,of street art Dialogue: 0,0:03:21.00,0:03:23.00,Default,,0,0,0,, Dialogue: 0,0:03:23.00,0:03:25.00,Default,,0,0,0,, Dialogue: 0,0:03:25.00,0:03:27.00,Default,,0,0,0,,These paint rollers that we built Dialogue: 0,0:03:27.00,0:03:29.00,Default,,0,0,0,,that Dialogue: 0,0:03:29.00,0:03:31.00,Default,,0,0,0,,using open Dialogue: 0,0:03:31.00,0:03:33.00,Default,,0,0,0,,CV, open computer vision, Dialogue: 0,0:03:33.00,0:03:35.00,Default,,0,0,0,,track the position Dialogue: 0,0:03:35.00,0:03:37.00,Default,,0,0,0,,of infrared lights Dialogue: 0,0:03:37.00,0:03:39.00,Default,,0,0,0,,within the paint roller and Dialogue: 0,0:03:39.00,0:03:41.00,Default,,0,0,0,,wherever you roll it on the wall Dialogue: 0,0:03:41.00,0:03:43.00,Default,,0,0,0,,the projector will Dialogue: 0,0:03:43.00,0:03:45.00,Default,,0,0,0,,project video in that place Dialogue: 0,0:03:45.00,0:03:47.00,Default,,0,0,0,,it allows us to Dialogue: 0,0:03:47.00,0:03:49.00,Default,,0,0,0,,paint videos on Dialogue: 0,0:03:49.00,0:03:51.00,Default,,0,0,0,,walls and Dialogue: 0,0:03:51.00,0:03:53.00,Default,,0,0,0,,this thing is huge. Dialogue: 0,0:03:53.00,0:03:55.00,Default,,0,0,0,,I have Dialogue: 0,0:03:55.00,0:03:57.00,Default,,0,0,0,,to admit Dialogue: 0,0:03:57.00,0:03:59.00,Default,,0,0,0,,it's still popular today Dialogue: 0,0:03:59.00,0:04:01.00,Default,,0,0,0,,we are still, you know, Dialogue: 0,0:04:01.00,0:04:03.00,Default,,0,0,0,,[???] hit up about Dialogue: 0,0:04:03.00,0:04:05.00,Default,,0,0,0,,doing it somewhere Dialogue: 0,0:04:05.00,0:04:07.00,Default,,0,0,0,, Dialogue: 0,0:04:07.00,0:04:09.00,Default,,0,0,0,,But for me personally, Dialogue: 0,0:04:09.00,0:04:11.00,Default,,0,0,0,,By Dialogue: 0,0:04:11.00,0:04:13.00,Default,,0,0,0,,doing this kind of work Dialogue: 0,0:04:13.00,0:04:15.00,Default,,0,0,0,, Dialogue: 0,0:04:15.00,0:04:17.00,Default,,0,0,0,,is [???] satsifying. ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <a220ab8276495663266b98ecf2eb9c0b@fripost.org>]
* Re: Creating subtitles for the Guix Days videos! [not found] ` <a220ab8276495663266b98ecf2eb9c0b@fripost.org> @ 2022-03-05 14:44 ` Matt 0 siblings, 0 replies; 12+ messages in thread From: Matt @ 2022-03-05 14:44 UTC (permalink / raw) To: Oliver Propst; +Cc: guix-devel ---- On Sat, 05 Mar 2022 05:01:35 -0500 Oliver Propst <oliver.propst@fripost.org> wrote ---- > On 2022-03-05 06:30, Matt wrote: > > I've started on the "Deep Dive into the Guile Docs & Makeover Proposal" > > talk. > > I might be interested to help with adding > subtitles to some parts of talk at some point in a not to distant > future. Cool. It took me ~30 minutes to get to 4:15 in the video. The video is about 79 minutes long. If my math is right and I work at that rate, it would take about 10 hours to finish. :O Every little bit counts. It looks like the .ass format simply appends each line of dialogue to the file, along with a time stamp. The default time increment for aegisub looks to be 2 seconds: Dialogue: 0,0:03:45.00,0:03:47.00,Default,,0,0,0,,it allows us to Dialogue: 0,0:03:47.00,0:03:49.00,Default,,0,0,0,,paint videos on Dialogue: 0,0:03:49.00,0:03:51.00,Default,,0,0,0,,walls and I think if you were to start at the halfway point or 3/4 (or whatever you have time for) of the video, we could merge it easily. I hope you don't mind me replying to you on list. I figure that's the most visible way to coordinate, in case others also want to help. It'd be a shame if someone duplicated our efforts! ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Creating subtitles for the Guix Days videos! 2022-03-01 23:18 ` Matt 2022-03-02 3:44 ` Matt @ 2022-03-02 8:08 ` Tanguy LE CARROUR 1 sibling, 0 replies; 12+ messages in thread From: Tanguy LE CARROUR @ 2022-03-02 8:08 UTC (permalink / raw) To: Julien Lepiller, Matt; +Cc: guix-devel Hi Matt, Quoting Matt (2022-03-02 00:18:42) > > ---- On Tue, 01 Mar 2022 09:36:19 -0500 Julien Lepiller <julien@lepiller.eu> wrote ---- > > I'm looking for volunteers to create English subtitles for the Guix Days > > talks. It would be great for people who are not very good with spoken > > English but who can still understand text. > > […] > > Aegisub kept crashing when setting hotkeys, but I was able to set some up that make navigation easier. > > In the "subtitle edit box", I added: > Alt-P audio/play/line > Ctrl-N time/next > Ctrl-P time/prev > > This is allows me to navigate by lines, play the audio for that section, and then press Return to "commit" what I wrote for the subtitle. Sorry to hear that it was painful for you! :-( For, what it's worth, here is how it went for me… I started before someone added the instructions on the pad, so I went straight to watching a tuto on YT: « Aegisub tutorial - Timing Subtitles - FAST METHOD » The guy suggested to first do the transcription and then the video sync'. This is what I did using the good old Vim. Took me 1h30 for 17min of video. Once the transcription file was loaded into Aegisub I discovered that the keybings were right under my right hand fingers! I use a French Bépo layout, and I can access D-S-G-F with only 2 fingers! 8-) This allowed me to use my mouse (I use my mouse with my left hand) to move the start (right click) and end (left click) of a section. Muscle memory did the rest! s…d…left click…d…g *ad nauseam* :-) I wouldn't go so far as to say that it was the best evening of my life, but it was not the most painful 3 hours either! … actually, the fact that the talk was super interesting and the speaker's English was really good helped a lot! Thanks Lars-Dominik! :-) -- Tanguy ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2022-03-06 1:31 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-03-05 18:23 Creating subtitles for the Guix Days videos! Blake Shaw 2022-03-06 1:30 ` Matt -- strict thread matches above, loose matches on Subject: below -- 2022-03-01 14:36 Julien Lepiller 2022-03-01 21:15 ` Luis Felipe 2022-03-01 22:08 ` Tanguy LE CARROUR 2022-03-01 22:36 ` Julien Lepiller 2022-03-01 23:18 ` Matt 2022-03-02 3:44 ` Matt 2022-03-05 4:54 ` Matt 2022-03-05 5:30 ` Matt [not found] ` <a220ab8276495663266b98ecf2eb9c0b@fripost.org> 2022-03-05 14:44 ` Matt 2022-03-02 8:08 ` Tanguy LE CARROUR
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.