Your Quarterly Linus Torvalds Linux Rant

Brodie Robertson
1 Sept 202423:00

Summary

TLDRThe video script discusses the development journey of Bcachefs, a file system for Linux that claims to combine the speed of ext4 with the reliability of Btrfs and ZFS. It details the challenges faced during its long development, including feedback from the Linux kernel community and the necessity for wide-scale deployment to validate its claims. The script also touches on the importance of following kernel development procedures and the human aspect of developers, highlighting the project's eventual merge into the Linux kernel after years of refinement.

Takeaways

  • ๐Ÿฎ BcacheFS is a file system for Linux that has been in development for a long time and has recently been integrated into the Linux kernel.
  • ๐Ÿ”„ BcacheFS uses the Copy-on-Write (CoW) model, similar to Btrfs and ZFS, which is efficient in terms of space and performance.
  • ๐Ÿš€ BcacheFS aims to combine the speed of ext4 with the features and reliability of Btrfs and ZFS.
  • ๐Ÿ“… The journey of BcacheFS began in 2015, with the first attempt at integration into the Linux kernel in 2018, and it faced several challenges and delays.
  • ๐Ÿ‘จโ€๐Ÿ’ป The developer of BcacheFS has been working silently and diligently, focusing on coding and improving the file system.
  • ๐Ÿ”ง The process of integrating BcacheFS into the Linux kernel involved addressing feedback, fixing bugs, and adhering to kernel development procedures.
  • ๐Ÿ“ˆ BcacheFS has seen significant development, including the addition of features like snapshots and 'badass' snapshots, which are similar to those in Btrfs.
  • ๐Ÿค The integration of BcacheFS into the Linux kernel required cooperation and adherence to the community's standards and procedures.
  • ๐Ÿ’ป The debate over BcacheFS's integration highlighted the importance of following the kernel's development process and the role of maintainers in ensuring quality.
  • ๐Ÿ”ฎ The future of BcacheFS in the Linux kernel depends on its ability to work within the kernel's release schedule and address the concerns of the community.

Q & A

  • What does the term 'Btrfs' stand for?

    -Btrfs stands for 'ButterFS,' which is a file system that has been in development for a long time and has recently been integrated into the Linux kernel.

  • What is the significance of the term 'COW' in the context of file systems?

    -In the context of file systems, 'COW' stands for 'Copy on Write,' a strategy used to save space and improve performance by only copying the modified data, as seen in file systems like Btrfs and ZFS.

  • What are some claims made by the developers of Btrfs regarding its capabilities?

    -Btrfs claims to offer a balance of features, speed, and reliability, aiming to be as scalable as ext4 and as reliable as file systems like Btrfs and ZFS.

  • Why is wide distribution and deployment important for validating file system claims?

    -Wide distribution and deployment across thousands of users are crucial for validating file system claims because it allows for real-world testing, uncovering potential issues, and ensuring the file system performs well under various conditions.

  • When was Btrfs first announced, and what was the initial reception like?

    -Btrfs was first announced in 2015. The initial reception was cautious, with a small user base of enthusiasts willing to try out this experimental file system.

  • What was the status of Btrfs development in 2016, and were there concerns about its progress?

    -In 2016, Btrfs was still in development with a small user base. There were concerns about its progress due to the developer's silence and lack of updates on the project's status.

  • What were some of the challenges faced during Btrfs's attempts to be upstreamed into the Linux kernel?

    -Btrfs faced challenges such as the complexity of the code base, the need for proper patch submission, and ensuring that the patches were reviewable and did not introduce issues with other parts of the kernel.

  • Why is it important for developers to follow the kernel development procedure when submitting patches?

    -Following the kernel development procedure ensures that the patches are in line with the standards and expectations of the Linux kernel community, making the review process smoother and reducing the likelihood of conflicts or issues.

  • What is the significance of the 'Linux next' tree in the context of kernel development?

    -The 'Linux next' tree serves as a testing ground for future Mainline kernel patches, allowing developers to test and refine their code before it is considered for inclusion in the main kernel.

  • What was the final outcome of Btrfs's inclusion in the Linux kernel, and what were the developer's reactions?

    -Btrfs was eventually merged into the Linux kernel after a long development process and several attempts. However, there were disagreements and concerns raised by kernel maintainers about the size and scope of the patches, as well as the developer's adherence to kernel development procedures.

Outlines

00:00

๐Ÿฎ Introduction to BcacheFS: The COW File System

The paragraph introduces BcacheFS, a file system with a long development history that has recently been integrated into the Linux kernel. It highlights BcacheFS's claim to offer a balance of features, reliability, and speed, comparing it to other file systems like ext4, ZFS, and XFS. The concept of copy-on-write (COW) is explained, which is a key feature allowing for space-efficient snapshots of data. The paragraph also touches on the challenges of proving these claims, emphasizing the need for widespread adoption and testing among many users.

05:01

๐Ÿ•ฐ๏ธ The Long Road to BcacheFS Upstream Integration

This section delves into the timeline and challenges of BcacheFS's development and integration into the Linux kernel. It discusses the initial announcement in 2015, the quiet period of development without much public update, and the first attempt at upstreaming in 2018. The paragraph outlines the iterative process of feedback, refinement, and resubmission for review, highlighting the developer's persistence and the community's involvement in shaping the file system's integration.

10:01

๐Ÿ”ง Refinements and Review Challenges for BcacheFS

The paragraph discusses the technical and procedural hurdles faced during BcacheFS's review process for inclusion in the Linux kernel. It mentions the need for splitting the code into reviewable patches, the importance of providing change log texts, and the broader implications of making changes that affect other parts of the kernel. The narrative illustrates the back-and-forth between the developer and the kernel maintainers, emphasizing the importance of following established procedures and community standards.

15:02

๐Ÿ“š Navigating Technical and Procedural Critiques

This section continues the narrative of BcacheFS's journey towards the mainline kernel, focusing on the technical debates and the necessity of adhering to kernel development protocols. It highlights the importance of having a verifiable chain of trust, such as a PGP key, and the need for the developer to demonstrate a collaborative approach within the kernel community. The paragraph also underscores the significance of proper testing and the developer's responsibility to ensure code็จณๅฎšๆ€ง and compatibility.

20:05

๐Ÿ› ๏ธ Final Push and Ongoing Development of BcacheFS

The final paragraph summarizes the ongoing development and integration efforts for BcacheFS, including the resolution of issues and the eventual merge into the mainline kernel. It discusses the developer's response to critiques, the importance of following the kernel's release schedule, and the necessity of keeping changes minimal and focused during the release candidate phase. The paragraph concludes with a reflection on the human aspect of kernel development, acknowledging the passion and dedication of developers while also recognizing the importance of rules and procedures in maintaining the integrity of the Linux kernel.

Mindmap

Keywords

๐Ÿ’กFile System

A file system is a structured way of storing and organizing computer files and their data. In the context of the video, file systems like ext4, Btrfs, ZFS, and XFS are mentioned as popular choices for Linux distributions. The video discusses the development and integration of a new file system, BcacheFS, which aims to combine the speed of ext4 with the features of Btrfs and ZFS.

๐Ÿ’กBcacheFS (Bcash FS)

BcacheFS, referred to as Bcash FS in the script, is a file system that has been under development for a long time and has recently been integrated into the Linux kernel. It is highlighted for its use of Copy-on-Write (CoW) and its claims of being as feature-rich and reliable as Btrfs and ZFS, while also being as fast as ext4. The video narrates the challenges and process of getting BcacheFS upstreamed into the Linux kernel.

๐Ÿ’กCopy-on-Write (CoW)

Copy-on-Write is a strategy used in computer programming to optimize write operations. It involves creating a copy of the data only when it needs to be modified, thus saving space and improving performance. In the video, CoW is a key feature of BcacheFS, which allows it to offer snapshots like Btrfs and ZFS, and it is a central concept in the discussion of the file system's design and benefits.

๐Ÿ’กUpstreaming

Upstreaming in the context of open-source software development refers to the process of integrating a new code or feature into the main repository or the primary development branch. The video details the long and complex journey of BcacheFS being upstreamed into the Linux kernel, including the various iterations, feedback, and changes required to meet the community's standards.

๐Ÿ’กLinux Kernel

The Linux kernel is the core of the Linux operating system and serves as an interface between the user space and the hardware. It is the central focus of the video, as the development and integration of BcacheFS into the kernel is the main narrative. The video discusses the rigorous review process and the significance of kernel development procedures.

๐Ÿ’กSnapshots

In the context of file systems, snapshots are a feature that allows users to save the state of a file system at a particular point in time. The video mentions that snapshots in BcacheFS, like those in Btrfs and ZFS, use Copy-on-Write to save only the changes made after the snapshot is taken, which is more space-efficient than full backups.

๐Ÿ’กBenchmarks

Benchmarks are tests used to evaluate the performance of a system or component. The video refers to benchmarks as a way to measure the reliability and speed of file systems. It suggests that while benchmarks can be conducted among small groups, the true test of BcacheFS's claims will come from widespread deployment and real-world usage.

๐Ÿ’กRelease Candidate

A release candidate in software development is a version that is believed to be ready for release, given that no critical bugs are found. The video discusses the release candidate phase in the Linux kernel development cycle, where only bug fixes are supposed to be made, and how BcacheFS's continued development during this phase became a point of contention.

๐Ÿ’กLinus Torvalds

Linus Torvalds is the creator of the Linux kernel and a central figure in its development. The video mentions him in the context of his role in maintaining the integrity of the kernel's development process. It discusses his stance on following procedure and the importance of his role in deciding what gets integrated into the main kernel.

๐Ÿ’กDevelopment Procedure

Development procedure refers to the established rules and processes that developers follow when contributing to a project, especially in the context of the Linux kernel. The video emphasizes the importance of adhering to these procedures, as it ensures that contributions are well-integrated, do not introduce new issues, and maintain the stability of the kernel.

Highlights

Linux distributions typically default to file systems like ext4 or Btrfs, with others like ZFS and XFS also in use.

Bcachefs, recently upstreamed after long development, has a dedicated fan base and the tagline 'the COW file system for Linux that won't eat your data'.

Bcachefs claims to combine the speed of ext4 with the features and reliability of Btrfs and ZFS.

Copy-on-write (COW) is a key feature in Bcachefs, similar to how it's used in Btrfs and ZFS, optimizing performance and space usage.

Bcachefs development began in 2015 and has been a topic of interest for Linux kernel discussions.

In 2016, despite doubts about the project's continuation, the developer silently worked on it without much public update.

The first attempt to upstream Bcachefs into the Linux kernel was in 2018 during the 4.18 release cycle.

By the end of 2018, Bcachefs was close to being ready for upstreaming, with a to-do list that continued to shorten.

In 2020, Bcachefs aimed for Mainline kernel integration but faced issues with code submission and review.

Bcachefs's development has been marked by large patch sets and extensive discussions within the Linux community.

The Linux kernel's maintainers have emphasized the importance of following proper development procedures for new contributions.

Bcachefs's journey to the Linux kernel has been long, with several attempts and setbacks, reflecting the complexity of kernel development.

In 2024, there were disagreements over Bcachefs patches, highlighting the ongoing challenges in its integration.

The developer of Bcachefs has been advocating for its reliability and trustworthiness compared to other file systems.

The Linux kernel community's feedback and review process have been critical in shaping Bcachefs's development.

The story of Bcachefs underscores the human aspects of open-source development, with developers having different opinions and occasional conflicts.

The video concludes with a call for more user testing and real-world deployment to validate Bcachefs's claims and performance.

Transcripts

play00:00

everyone needs a file system or two most

play00:03

Linux dist is default to either ext4 or

play00:05

butterfest with a scattering of others

play00:08

on things like ZFS and xfs but these are

play00:12

not the only file systems out there

play00:14

there is one that has been in

play00:15

development for a very long time that

play00:17

very recently got upstreamed that has a

play00:20

very dedicated fan base that being bash

play00:24

FS using the tagline the cow file system

play00:28

for Linux that won't eat your data

play00:30

as you can tell by the capitals here

play00:32

we're not referring to the animal this

play00:34

means copy on right another example of

play00:37

these is Butters and ZFS you've probably

play00:41

heard that snapshots aren't a full

play00:43

backup of your data the way they work is

play00:46

they only copy the modified data this

play00:49

saves a lot of space it is a lot more

play00:51

performant this is copy on right copy on

play00:54

right can mean different things in

play00:55

different context but in the case of a

play00:57

file system this is how it's being used

play01:00

now bcash FS has some pretty big claims

play01:03

it claims to be as feat F and have the

play01:04

reliability of things like butter fs and

play01:07

ZFS whilst also having the speed of

play01:10

things like ext4 Now features are

play01:12

something you can easily go and list out

play01:14

when it comes to reliability and speed

play01:17

yes you can do benchmarks and you can do

play01:20

tests amongst like small groups of users

play01:23

but to really give those claims any

play01:25

weight you need wide District deployment

play01:27

across thousands and thousands of users

play01:30

and a few updates back it finally got

play01:33

upstreamed into the Linux Kel after a

play01:36

very very long time of development and

play01:39

then during the 61- rc5 cycle as lus 12

play01:45

olds tends to do every so often he went

play01:49

off on a bit of a rant a bit of a rant

play01:53

that usually when things like this

play01:55

happen it's not like a one-off event

play01:59

that cuses it it is something that

play02:01

builds up over time it is little things

play02:04

here and there and then eventually

play02:07

enough is enough and this is only the

play02:09

first of the emails so let's talk about

play02:12

how we got here and to do that we need

play02:15

to go all the way back to the start to

play02:17

when bcash FS was first announced in

play02:21

2015 now judging by just how many

play02:24

articles fonics has made about bash FS I

play02:28

think it's fair to say that Michael

play02:30

arabel is at least a little bit of a fan

play02:33

or is at least somewhat interested in

play02:36

seeing where this project goes because I

play02:39

don't think there is a topic on fonics

play02:41

that he has talked about this much

play02:43

besides just general Linux kernel stuff

play02:46

now way back in 2016 there were

play02:49

questions about whether the project was

play02:51

still going because the developer was

play02:54

just silently working on it he wasn't

play02:57

posting about it he wasn't like o here

play02:59

here's what's happening on Twitter

play03:01

here's this and that he was just writing

play03:03

code making a file system and doing his

play03:06

job which honestly I kind of wish that

play03:09

more people did I feel like a lot more

play03:11

stuff would get done I'm talking about

play03:12

myself as well I shouldn't be on social

play03:14

media as much as I am and whilst it was

play03:17

certainly coming along in 2016 it had a

play03:20

very small user base of very crazy

play03:23

people that wanted to use a very

play03:24

experimental file system that was only

play03:27

at that point a couple of months into

play03:28

development it wouldn't be for a little

play03:30

bit longer that the first attempt at

play03:33

upstreaming the code base came that was

play03:35

in 4.18 in

play03:38

2018 and like many early attempts at

play03:41

trying to Upstream code like this it had

play03:43

some discussion it had some feedback

play03:46

there were people that were saying hey

play03:47

maybe do this maybe do this or try out

play03:50

this instead for the most part it was

play03:53

still quite a while away from being

play03:55

ready but he just wanted some feedback

play03:57

on whether he was going in the right

play03:59

ction and from what I can see he

play04:02

basically was and towards the end of

play04:04

2018 he gave a status update in the

play04:07

project what was done what was close to

play04:09

being done what was still very much a

play04:12

work in progress it was a fairly

play04:14

extensive status update the to-do list

play04:16

continues to get shorter and bugs

play04:18

continue to get fixed it was getting

play04:20

very close to the point where

play04:22

upstreaming was legitimately possible at

play04:25

least from the developers perspective

play04:28

with hopes to possibly Upstream the code

play04:30

base sometime in mid 2019 from his

play04:35

perspective it seemed like things were

play04:37

in a really good state it seemed like

play04:39

the US he had were fairly happy with it

play04:42

and it seemed like it was becoming at

play04:45

least good enough to be an experimental

play04:48

file system upstreamed into the kernel

play04:50

there is a lot of code in the kernel

play04:52

that is still a work in progress but

play04:56

it's good enough to the point where it's

play04:58

not going to cause issues for other

play05:00

things in the konel but here is the

play05:03

problem it doesn't matter how long

play05:05

you've been a developer for how much

play05:06

experience you have with a code base how

play05:08

much experience you have with a specific

play05:10

kind of work most people are really bad

play05:15

at estimating timelines especially when

play05:18

they are completely in control of what

play05:22

goes into that timeline so whilst maybe

play05:26

if he'd stuck to the absolute minimum

play05:28

set of what he wanted to do mid 2019 was

play05:32

possible the next time that started

play05:35

being talked about was the end of 2020

play05:39

this was being submitted for review in

play05:40

the 5.11 release window but again every

play05:44

time you try to do something in a really

play05:46

complex code base there's always

play05:49

something that you do that isn't done

play05:53

entirely the correct way and this person

play05:56

here points it out please excuse my

play05:58

ignorance if I miss things things in

play05:59

other discussions but if this is what's

play06:02

expected to be reviewed why the

play06:04

submission is not splitted into

play06:06

reviewable patches usually what you

play06:08

would see is instead of one giant block

play06:11

of here's all the code it would be patch

play06:13

one patch two patch three so on and so

play06:17

forth as an example the first time he

play06:19

went up for review here we have patch

play06:21

one of two and then the other one is two

play06:23

of two this makes it a lot easier to

play06:25

review a specific commit and say okay

play06:29

this is what you should change about

play06:30

this one here's something here okay

play06:32

here's something about the other commit

play06:33

instead of just replying to one Mega

play06:35

thread and then trying to work out

play06:37

exactly what things people are trying to

play06:40

refer to even with that being the case

play06:42

though like all the times before it he

play06:44

got some feedback and then went back to

play06:47

working on things this time working on

play06:49

faster boot times doing a core feature

play06:51

rework and hopefully maybe if the review

play06:55

goes well it could be merged soon and

play06:58

this time when he submit it for review

play07:00

this time he made sure it was split out

play07:03

into separate individual patches B

play07:06

cashif Fest status update it's done

play07:08

cooking let's get this sucker merged

play07:11

this time being a set of 12 separate

play07:15

patches but this time having a bit of a

play07:17

different problem this should say I know

play07:19

not you know here is a post from Greg

play07:21

cower Hartman you know I reject patches

play07:24

with no change log text at all you

play07:26

shouldn't rely on other maintainers

play07:28

being more laxed you need to describe

play07:31

why you're doing this at the very least

play07:33

as I sure do not know and this is making

play07:35

a change outside of just the bcash fs

play07:39

stuff if he was just changing his stuff

play07:41

it wouldn't be as big of a deal but when

play07:44

you're touching things outside of your

play07:47

own work you need to explain why you're

play07:50

doing that because that's going to

play07:52

affect other people who now don't know

play07:54

why you're changing it either so again

play07:57

got some feedback went back to work on

play07:59

things by 2021 it had butterfest like

play08:02

snapshots it also had something being

play08:05

called badass snapshots and again was

play08:09

time to aim for Mainline Kel integration

play08:13

surely 2022 was going to be the

play08:18

year 2022 was not the year surely 20123

play08:24

was going to be the year bcash FS a new

play08:28

cow f system features too many to list

play08:32

known bugs too many to list this time it

play08:36

has ballooned even further now turning

play08:41

into a patch set of 32 patches and

play08:45

turning into the biggest discussion for

play08:46

bcash FS up to this point some of the

play08:49

patches don't have any comments but some

play08:52

of them have giant threads under them

play08:55

with tons of different people all

play08:58

getting involved to talk about what is

play09:00

being done here being such a big patch

play09:03

set and a patch set that a lot of people

play09:04

just hadn't actually reviewed yet before

play09:07

it was a fairly small subset of people

play09:10

there were a lot of issues that were

play09:11

discovered some old kernel bugs that

play09:13

were being returned some weird usage of

play09:17

types that don't really make sense in a

play09:19

kernel context the Kel does things in a

play09:21

very specific way and just other bugs

play09:24

that maybe didn't get spotted earlier

play09:27

this is not a problem

play09:29

with bcash FS this happens with every

play09:33

single big patch set there is a lot of

play09:36

things that need to be ironed out to

play09:37

make it Linux kernel ready need I say it

play09:40

again he took the feedback went back to

play09:42

working and resubmitted the work for the

play09:45

6.5 cycle and that discussion didn't

play09:48

last 6.5 it stretched out into 6.6 and

play09:52

there was a couple of reasons for that

play09:55

one is it was still an absolutely giant

play09:58

patch that this was not going to change

play10:01

it touched a lot of systems it did a lot

play10:04

of things it just took a really long

play10:07

time to review leading to a lot of

play10:10

people wanting to give their feedback on

play10:13

the topic but

play10:15

also uh there were a couple of issues

play10:18

with um getting into fights with people

play10:21

in the thread but people fighting in a

play10:23

Foss project and especially fighting in

play10:26

the lkml that's pretty normal stuff it

play10:29

wouldn't be a normal day in Linux if

play10:31

people were not just fighting over

play10:34

random things sometimes things that

play10:36

don't matter sometimes things that

play10:38

actually do have some relevance to the

play10:40

code base but usually not and eventually

play10:44

lonus horal did comment on the thread

play10:47

because there were some technical issues

play10:49

as well or more like issues with the

play10:52

developer following kernel development

play10:55

procedure and kind of trying to jump

play10:58

ahead of the queue no way am I pulling

play11:00

that without a single sign tag and a pgp

play11:03

key with a chain of trust you've been

play11:05

around for long enough that having such

play11:07

a key shouldn't be a problem for you so

play11:10

make it happen there are a few other

play11:12

issues that I have with this and

play11:13

Kristoff did mention a big one it's not

play11:16

been in Linux next Linux next is

play11:18

basically the testing ground for future

play11:20

Mainline Kel patches you want it to be

play11:23

there so people can go and mess around

play11:25

with things make sure it all works make

play11:27

sure the Kel still compiles but before

play11:29

you bring it anywhere near a Mainline

play11:32

contribution I don't know why I thought

play11:34

it had been it's just such an obvious

play11:36

thing for any new I want this merged

play11:38

Upstream tree these kinds of I'll just

play11:41

ignore all basic rules kinds of issues

play11:43

do annoy me I need to know that you

play11:47

understand that if you actually want

play11:48

this Upstream you need to work with

play11:51

Upstream that very much means not

play11:53

continuing this I'll just do it my way

play11:56

you need to show that you can work with

play11:58

others that you can work within the

play12:00

framework of upstream and that not every

play12:02

single thread you get into becomes an

play12:05

argument this by the way is not

play12:08

negotiable if you feel uncomfortable

play12:10

with that basic notion you'd better just

play12:12

continue doing development outside the

play12:15

main Kel tree for another decade I know

play12:18

it can scare some people away I know

play12:20

some people are intimidated by it but

play12:22

this is why every big project needs a

play12:25

Linus tvols needs someone who is a fair

play12:28

person but is somebody is not following

play12:30

procedure has the power to just say no

play12:33

you are going to do this correctly I

play12:36

don't care how good your code is I don't

play12:38

care why you think it's such a great

play12:40

addition if you don't follow procedure

play12:43

we don't need your code now it'd be very

play12:45

different if he was a new developer that

play12:47

didn't really understand Colonel lingo

play12:49

the way the colonel did things

play12:52

understandable but at this point he's

play12:53

been a kernel developer for a very long

play12:56

time he should understand the procedure

play12:58

by now now it turns out he did try to

play13:01

submit the code to Linux next the issue

play13:04

is it wouldn't build against Linux next

play13:08

so it effectively wasn't in the tree

play13:10

anyway so as you could probably guess it

play13:14

didn't make its way into

play13:16

6.6 however it did move into the Linux

play13:19

next tree it was able to build it did

play13:22

clean up a lot of the external patches

play13:24

so it wasn't touching as many systems

play13:26

outside of bcash FS anything it needed

play13:28

to touch touch those were handled in

play13:30

external patches and it was getting much

play13:33

much closer to actually being merged so

play13:36

once again it was submitted for

play13:40

6.7 and this time it actually got merged

play13:45

but the merger is not the Final

play13:47

Destination this is just the starting

play13:50

line so come March of 2024 there was

play13:54

some disagreement about some patches

play13:57

that bcash FS was trying to admit Kent

play14:00

was approaching this in a very engineer

play14:03

like mindset where he wanted to turn a

play14:04

part of the bcash Fest file system into

play14:07

a generic Library function that other

play14:11

FAL systems were able to make use of now

play14:13

doing this within the context of bcash

play14:16

FS totally fine no one would really care

play14:20

about it but when you're trying to do

play14:22

something that is going to interact with

play14:24

other file

play14:25

systems now it becomes more of an issue

play14:28

the make random BFS code as a library

play14:31

function stuff I looked at decidedly is

play14:33

senseless and ended up meaning that I'm

play14:35

not pulling this without a lot more

play14:37

explanation and honestly I don't think

play14:40

the explanations would hold water keep

play14:42

it your own code where it belongs don't

play14:45

try to make it some generic Library

play14:47

thing and if you do make a library thing

play14:49

it needs to be much more explained have

play14:52

much Seer naming and fewer disgusting

play14:54

and completely nonsensical interfaces

play14:57

and no find finding the other file

play14:59

system to share this kind of code is not

play15:01

sufficient to try to claim it's a sane

play15:04

interface and sane naming but the main

play15:07

deal breaker is the insane math this was

play15:10

a system that was being very over

play15:13

engineered it wasn't being engineered

play15:14

wrong right totally fair how it's being

play15:17

engineered the problem

play15:19

is if anyone else need to touch it in

play15:22

the future it's

play15:23

like why did you write it like this like

play15:26

trying to make any modifications to it

play15:29

would be an absolute Nightmare and with

play15:31

that it brings us to the present the

play15:34

August patch set bcash FS fixes for

play15:38

6.11

play15:39

rc5 now when we're in the RC period This

play15:44

is a release candidate by this point we

play15:46

are well into the development window and

play15:49

the general rule for the colonel is

play15:52

development is done before the

play15:54

development window after the window

play15:57

opens save it for next time the only

play16:00

things that are being done are fixing

play16:02

bugs that are showing up for this

play16:05

development period not fixing old bugs

play16:07

that you happen to discover in some

play16:09

random bit of code fixing things that

play16:11

are relevant to new code being submitted

play16:15

also by rc5 things should be pretty much

play16:19

mostly cleaned up and um nobody wants to

play16:23

deal with 1,300 insertions

play16:27

671 delici at this point yeah know

play16:31

enough is enough the last pool was

play16:33

already big this is too big it touches

play16:37

non bcash ofs stuff it's not even

play16:39

remotely some kind of regression at some

play16:42

point fix something just turns into

play16:45

development and this is that point

play16:47

nobody sayane uses bcash fs and expects

play16:51

it to be stable so every single user is

play16:55

an experimental site the bcash fs

play16:57

patches have become these kinds of lots

play17:00

of development during the release Cycles

play17:02

rather than before it to the point where

play17:04

I'm starting to regret merging bcash FS

play17:07

if bcash FS can't work sanely within the

play17:10

normal Upstream kernel release schedule

play17:12

maybe it shouldn't be in the normal

play17:15

Upstream konel this is getting Beyond

play17:18

ridiculous and Kent disagreed with the

play17:21

framing eh Universal consensus has been

play17:24

that bcash Fest is definitely more

play17:27

trustworthy than butterfest in terms of

play17:30

will this file system ever go

play17:31

unrecoverable or lose my data I've seen

play17:34

many reports of people who've put it

play17:36

through the same situations where

play17:37

butterfest Falls this is the fal system

play17:40

you're all going to want to be running

play17:42

knock on wood in just a year or two and

play17:45

lest times back in I'll believe that

play17:47

when there are major distes that use it

play17:49

and have lots of varied use but it

play17:52

doesn't even change the issue that you

play17:54

aren't fixing a regression you are doing

play17:56

new development to fix some old problem

play17:59

and now you are literally editing non

play18:01

bcfs files 2 enough is enough with Kent

play18:06

saying what is to be gained by holding

play18:08

back fixers if we've got every reason to

play18:11

believe that the fixers are solid again

play18:14

from lus what is to be gained by having

play18:16

release rules in a stable development

play18:18

environment I wonder but seriously

play18:21

thinking that I changed a thousand lines

play18:24

there's no way they introduce new bugs

play18:26

is the kind of thinking that I do not

play18:28

want to he from a maintainer what planet

play18:31

are you from stop being obtuse now like

play18:35

most developers on big projects Kent has

play18:37

a bunch of automated testing now the

play18:40

problem is when you have automated

play18:41

testing somebody has to write the

play18:43

testing and sometimes the testing has

play18:45

bugs and sometimes the testing misses

play18:48

things that's just every code base not

play18:50

like again not just specific to this

play18:52

code base every single code base has

play18:55

this problem and the bigger the code

play18:56

base the bigger the problem K bugs

play19:00

happen the number of bugs that happen in

play19:02

bug fixes is in fact quite High you

play19:05

should see the stable tree discussions

play19:07

when people get heeded about the

play19:08

regressions introduced by fixers this is

play19:11

for example why stable has the rule of

play19:14

fixers being small which does get

play19:16

violated but it is at least a goal it

play19:19

cannot be bigger than 100 lines with

play19:22

context because small fixes are easier

play19:25

to think about and hopefully they have

play19:28

fewer problems on their own it is also

play19:30

why my development happens before the

play19:32

merge window rule exists if you have to

play19:34

do development to fix an old problem

play19:37

it's for the next merge window exactly

play19:39

because new bugs happen we want

play19:43

stability but your poor requests haven't

play19:45

been small fixes and I admit I've let it

play19:48

slide you never saw the last po request

play19:51

when I side did a get fetch and went

play19:53

through every commit just to see and

play19:56

then did the pull for real this time I

play19:59

did the same and came to the conclusion

play20:01

that no this was not a series of small

play20:05

fixes anymore and to be fair to Kent he

play20:08

does have a solid reply I know look file

play20:12

system development is as high stakes as

play20:14

it gets normal colal development you

play20:16

screw up you crash the system you lose

play20:18

some work you reboot people are annoyed

play20:21

but generally it's okay in F system land

play20:24

you can corrupt data and not find out

play20:26

about it until weeks later or worse I've

play20:29

got stories to give people literal

play20:31

nightmares hell that stuff has fueled my

play20:33

own nightmares for years you know how

play20:35

much gray my beard has now which is why

play20:38

I spent many years of my life building a

play20:40

code base and development process where

play20:43

I can work productively where I can not

play20:45

just catch but recover from pretty much

play20:47

any mistake imaginable because peace of

play20:49

mind is priceless now toold did not end

play20:53

up replying to this

play20:55

and I it's fair like it's a fair point

play20:59

right but at the end of the day Kent is

play21:02

not the only developer in the colel

play21:03

there is thousands of other lines of

play21:06

code tens of thousands of other lines of

play21:08

code that could dealt with every single

play21:11

patch cycle

play21:13

and unless there is a good justification

play21:16

for it as I said earlier every big

play21:20

project needs a lonus tvol need someone

play21:24

who can put their foot down and say this

play21:26

is the way we're doing it get over it

play21:29

honestly I love these Kel development

play21:31

stories because it just makes you

play21:33

remember that the people developing

play21:35

Linux are people they're not development

play21:38

machines they are people that have their

play21:40

own priorities some of them maybe don't

play21:43

follow all the rules some of them get a

play21:45

little bit heated sometimes people just

play21:47

break character and like you know what

play21:49

I'm done I'm not going to play the nice

play21:51

guy today I need to say enough is enough

play21:55

and honestly I think it's important for

play21:56

everybody to remember this because it

play21:58

doesn't just app to Linux it applies to

play22:00

every other project out there the people

play22:02

involved in this are people but let me

play22:05

know your thoughts down below if you

play22:08

happen to be a konel developer and

play22:09

happen to have some fun konel

play22:11

development story I would love to know

play22:14

let me know about it and if you like the

play22:15

video go like the video and if you

play22:18

really like the video and you want to

play22:20

become one of these amazing people over

play22:22

here check out the patreon scribes liay

play22:24

Linked In the description down below

play22:27

that's going to be it for me and

play22:29

honestly I kind of want to try out B Cas

play22:31

FS to see if it's as good as he says it

play22:33

is

play22:37

[Music]

play22:44

[Music]

play22:59

w

Rate This
โ˜…
โ˜…
โ˜…
โ˜…
โ˜…

5.0 / 5 (0 votes)

Related Tags
BcachefsLinux KernelFile SystemDevelopmentUpstreamCode ReviewKernel DevelopmentOpen SourceTechnologySoftware Engineering