all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* 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-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

* 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

* 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-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

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.