# Will Git change the FreeBSD development model?



## fraxamo (Apr 29, 2021)

Interesting interview with Linus Torvalds at this link where he talks about the BSD-style of development (i.e. giving developers 'commit bits') and how he thinks it's the wrong approach. This may not be the best place to ask this (perhaps a development mailing list might be better), but does anyone think the 'commit bit' style of development will disappear now that FreeBSD is using Git instead of a more centralised version control system like SVN or CVS?

Here are Linus' comments (snipped from the rest of the article) which prompted my question:

<snip>
In fact, this is actually somewhat related to the earlier discussion about the licensing, and another example of how one of the design principles of "Git" was that whole "everybody has their own tree, and no tree is technically special".

Because a lot of other projects have used tooling - like CVS or SVN - that fundamentally does make some people special, and that fundamentally does have an "ownership" that goes along with it. In the BSD world, they call it the "commit bit": giving a maintainer the "commit bit" means that he's now allowed to commit to the central repository (or at least parts of it).

I always detested that model, because it inevitably results in politics and the "clique" model of development, where some people are special and implicitly trusted. And the problem isn't even the "implicitly trusted" part - it's really that the other side of the coin is that other people are not trusted, and are by definition outsiders, and have to go through one of the guardians.

Again, in Git that kind of situation doesn't exist. Everybody is equal. Anybody can do a clone, do their own development, and if they do a good job they can get merged back (and if they do an outstanding job, they become maintainers, and they end up being the ones doing the merging into their trees .

So there's no need to give people special privileges - no need for that "commit bit". And that also means that you avoid the politics around it, and you don't need to trust people implicitly. If they end up doing a bad job - or more commonly, just end up fading away and finding another interest - they don't get merged back, and they also don't stand in the way of other people who have fresh new ideas.
</snip>


----------



## acheron (Apr 29, 2021)

ROFL


----------



## msplsh (Apr 29, 2021)

Getting merged back is the commit bit.  Nothing changes.


----------



## Jose (Apr 29, 2021)

Sounds like arrant nonsense to me.

Linux does have a centralized organizational model. There's only one "vanilla" Linux kernel from kernel.org that is the official Linux. Yeah, there are millions of clones. Most don't matter at all, and only a handful matter somewhat.

There are trusted people who control what goes into the official kernel. They're sometimes called Linus' lieutenants. The most important one right now is Greg Kroah-Hartman, who is the gatekeeper of what gets called stable Linux. There are other trusted minions in charge of various subsystems of the Linux kernel.

In fact, if you think about it, the BSD model is more collaborative than the Linux model. Anyone with a commit bit can work in any subsystem, and can probably find help and review from other committers who may be more familiar with the area.

I've come to realize that Linus is actually very political. There's usually an agenda when he makes these controversial pronouncements. I can't discern what it is in this instance.


----------



## msplsh (Apr 29, 2021)

Jose said:


> There's usually an agenda when he makes these controversial pronouncements. I can't discern what it is in this instance.


It's probably deflection from banning the University of Minnesota.


----------



## Jose (Apr 29, 2021)

msplsh said:


> It's probably deflection from banning the University of Minnesota.


That's not a bad guess. "We're so open, we had to accept these bad patches. We're not closed, like the BSDs" makes for a good narrative from the Linux standpoint.


----------



## mtu (Apr 29, 2021)

Jose said:


> I've come to realize that Linus is actually very political. There's usually an agenda when he makes these controversial pronouncements. I can't discern what it is in this instance.


He's definitely got something to show for his politics, because with the adoption of git, FreeBSD is now dependent on GPL'd software


----------



## kpedersen (Apr 29, 2021)

mtu said:


> He's definitely got something to show for his politics, because with the adoption of git, FreeBSD is now dependent on GPL'd software


We are probably just waiting on http://gameoftrees.org/ from the OpenBSD guys.

Then we can rid ourselves of even more of that GPL nonsense. I think we still have a few remaining bits of GPL laying around that need to be modernized.

https://www.phoronix.com/scan.php?page=news_item&px=FreeBSD-Q4-2020-Update
https://wiki.freebsd.org/GPLinBase (outdated)

Plus, I suppose it isn't quite so bad as getting the CDDL license into Linux via OpenZFS. Those are some real politics


----------



## Beastie7 (Apr 29, 2021)

Linus should focus on getting back control of his damn kernel before criticizing other development models from alternative systems.

You see my signature Linus? Yeah.. 

You can't make this s**t up people.


----------



## mtu (Apr 29, 2021)

kpedersen said:


> Plus, I suppose it isn't quite so bad as getting the CDDL license into Linux via OpenZFS. Those are some real politics


OpenZFS is not part of Linux, because the Linux people object to the CDDL. Some people install it in userland anyway, which works okay.

Similarly, git is not part of FreeBSD, because the FreeBSD people object to the GPL. Some people install it in userland anyway, which works just fine.

Just one major difference: OpenZFS has nothing to do with Linux development. On the other hand, FreeBSD development without git is impossible.


----------



## msplsh (Apr 29, 2021)

Jose said:


> "We're so open, we had to accept these bad patches. We're not closed, like the BSDs" makes for a good narrative from the Linux standpoint.


I was thinking more along the lines of "You're free to integrate them into any other Linux tree, so saying you can't participate is wrong" and then go and boink on FreeBSD because that's the easiest target because he knows about "commit bit."

Just disingenuous talk.  Anybody can clone BSD or GPL code and make commits.  It's trademark law and domain name/server ownership that keeps things "political" and "cliquish."  Who owns the trademark to Linux... oh.


----------



## ralphbsz (Apr 29, 2021)

mtu said:


> Similarly, git is not part of FreeBSD, because the FreeBSD people object to the GPL. Some people install it in userland anyway, which works just fine.


But you don't need git itself (the big git software package, under GPL, originally written by Linus). All you need is a git client (a program that knows how to decode the git file format and protocol). There are many git clients, some of which are not under GPL. For example, there is something called gitup, which is under the BSD license, and last fall there was some chatter that it would be part of the FreeBSD base.



> On the other hand, FreeBSD development without git is impossible.


First, you can still download the source code in SVN format (and I think a CVS copy still exists too). If by "development" you mean directly commit to the official repository: most people can't do that anyway, for good reason (for example, see the recent U. Minnesota amusement). And using gitup, you can do that with BSD-licensed software. Plus, for many years FreeBSD was compiled using gcc, which was under the GPL license.

The real question is this. I can't understand the violent reaction most people have to the GPL. I see it as factionalism and politics. What license a piece of software is under matters to people who write it, who hold the copyright, and who modify it and want to distribute the modifications (and hold the copyright on modifications). For people who use the software, or make only local modifications, the difference between GPL, BSD, MIT, Apache, ... licenses is of no or little effect. And I really don't like this "they are different from us, therefore they must be evil" attitude that is often displayed in discussions about open software.


----------



## kpedersen (Apr 29, 2021)

mtu said:


> On the other hand, FreeBSD development without git is impossible.


Whilst not commonly known, GitHub actually provides svn support.

`$ svn co https://github.com/freebsd/freebsd-ports.git/trunk ports`

Plus I suppose we have to be slightly pragmatic. It wasn't until after 2005 that Linux was developed using a proprietary VCS called BitKeeper. I always think that is pretty mad for a GNU flagship project.


----------



## ShelLuser (Apr 29, 2021)

I'm not a developer (more of a scripter) but yah...



fraxamo said:


> Interesting interview with Linus Torvalds at this link where he talks about the BSD-style of development (i.e. giving developers 'commit bits') and how he thinks it's the wrong approach.


Everyone is entitled to their opinion, but if you look at the facts then yah, this seems quite arrogant.



fraxamo said:


> This may not be the best place to ask this (perhaps a development mailing list might be better), but does anyone think the 'commit bit' style of development will disappear now that FreeBSD is using Git instead of a more centralised version control system like SVN or CVS?


I highly doubt it. There really isn't that much difference between the lot when it comes to handing out permissions; either you can commit (in Git terms this is "push") or you can't. End of story.

And I'm also quite positive that there are many people who are much better suited to criticize FreeBSD's development model than someone who was more or less forced to step back from the project he originally set up himself.



fraxamo said:


> > I always detested that model, because it inevitably results in politics and the "clique" model of development, where some people are special and implicitly trusted. And the problem isn't even the "implicitly trusted" part - it's really that the other side of the coin is that other people are not trusted, and are by definition outsiders, and have to go through one of the guardians.
> >
> > Again, in Git that kind of situation doesn't exist. Everybody is equal. Anybody can do a clone, do their own development, and if they do a good job they can get merged back (and if they do an outstanding job, they become maintainers, and they end up being the ones doing the merging into their trees .


(edit: this is fraxamo quoting the Linus interview; so keep in mind that I'm not critisizing him in my comment below but the actual interview, aka Linus. Figured I'd add a disclaimer because the extra quote section which I added seems easy to overlook)

What a load of nonsense!

There isn't any equallity at all; when I try to push my changes of the Linux kernel back into the main tree then I'm rejected. So how is that equal?

When I clone the Linux kernel, make my changes and put them on Github then I'm pretty sure my project won't get the same attention span. How is that equal?

Either you can commit to a project (in Git terms this means 'pushing' your changes into the main repository) or you can't. Git doesn't change this hierarchy at all.

The main difference (and IMO also a _*huge*_ advantage) is that when I clone a project using Git I have the full project as-is under my control; allowing me to do anything I like with it. I can change stuff, secure my changes, and all of this without interfering with the official repository. That is a lot more difficult with centralized setups.

Has Linus started drinking ever since he got demoted?


----------



## mtu (Apr 29, 2021)

ralphbsz said:


> If by "development" you mean directly commit to the official repository: most people can't do that anyway, for good reason (for example, see the recent U. Minnesota amusement). And using gitup, you can do that with BSD-licensed software.


gitup is unable to make commits, it's a pull/clone-only client expressly "intended for non-developers".


ralphbsz said:


> The real question is this. I can't understand the violent reaction most people have to the GPL. I see it as factionalism and politics. What license a piece of software is under matters to people who write it, who hold the copyright, and who modify it and want to distribute the modifications (and hold the copyright on modifications). For people who use the software, or make only local modifications, the difference between GPL, BSD, MIT, Apache, ... licenses is of no or little effect. And I really don't like this "they are different from us, therefore they must be evil" attitude that is often displayed in discussions about open software.


I agree


----------



## Beastie7 (Apr 29, 2021)

ralphbsz said:


> But you don't need git itself (the big git software package, under GPL, originally written by Linus). All you need is a git client (a program that knows how to decode the git file format and protocol). There are many git clients, some of which are not under GPL. For example, there is something called gitup, which is under the BSD license, and last fall there was some chatter that it would be part of the FreeBSD base.
> 
> 
> First, you can still download the source code in SVN format (and I think a CVS copy still exists too). If by "development" you mean directly commit to the official repository: most people can't do that anyway, for good reason (for example, see the recent U. Minnesota amusement). And using gitup, you can do that with BSD-licensed software. Plus, for many years FreeBSD was compiled using gcc, which was under the GPL license.
> ...



Coercion is immoral. It’s really not that complicated. In fact, I despise the CDDL, MPL as well, but the System V folks come from the same family of like minded researchers and engineers. So ZFS, DTrace, etc, are practical exceptions.

However, I don’t think the GPL ever held its own in court so.. meh, do you.


----------



## ShelLuser (Apr 29, 2021)

ralphbsz said:


> The real question is this. I can't understand the violent reaction most people have to the GPL.


I do; the GPL forces you to using it if you want to use the "open" source and doesn't provide any freedom of choice.


----------



## msplsh (Apr 29, 2021)

ShelLuser said:


> the GPL forces you to using it if you want to use the "open" source and doesn't provide any freedom of choice



This is a bit over the top.  Without the GPL applied to the software that it's on, standard copyright applies and you have zero rights to do anything with it.


----------



## ShelLuser (Apr 29, 2021)

msplsh said:


> This is a bit over the top.  Without the GPL on the software that it's on, standard copyright applies and you have zero rights to do anything with it.


Unless you license it under CDDL or a BSD license which then gives the other party all the freedom they need. Then they get to choose if they want to use your work and release something under the GPL , CDDL, or BSD or.. any other license _they_ fancy.

They're not restricted to the choices made (and enforced) by the original "open" source developer.


----------



## ralphbsz (Apr 29, 2021)

ShelLuser said:


> Has Linus started drinking ever since he got demoted?


I met Linus a few times in the mid 90s. He started drinking decades ago. Heavily. One of the pubs we went to was called "99 bottles of beer", and after we were done with it, there were fewer than 99 left 



mtu said:


> gitup is unable to make commits, it's a pull/clone-only client expressly "intended for non-developers".


Thank you for that correction, I didn't know that gitup is "read-only". On the other hand, there are ways to contribute to the kernel without directly pushing using git. For example, the one line of code that I submitted to the Linux kernel as a private individual (and which is still in there) was sent by e-mail to the person who at the time managed all of the SCSI code in Linux, after a week or so of e-mail discussions. Even today, you can submit BSD patches by copying them into the bug tracking system or e-mailing them to committers, and they will (if approved) find their way into the kernel. And very few people (only committers) can actually use "git commit; git push" to modify the kernel.



ShelLuser said:


> I do; the GPL forces you to using it if you want to use the "open" source and doesn't provide any freedom of choice.


If you want to modify the code and publish or distribute your changes, then I agree: the GPL forces you to put your changes under GPL (although it doesn't prevent you from dual licensing your changes). Personally, I actually find that reasonable. The people who wrote the original code (which one is modifying) have every right to determine how their code is to be used. They choose to allow you (or me) to use it usable for free (without paying them), which is generous. They even allow you and me to read their source code, and to modify it. The only significant restriction is that if we publish/distribute any of these changes, then the GPL is viral. Consider one alternative: they could just not publish the source code. Or they could publish it under a less restrictive license (BSD, Apache, MIT, ...), but then they risk that their software is used outside their knowledge and control (how many dishwashers internally use BSD? we'll never find out). I think the original authors should have the liberty of choosing their favorite license and distribution model, even the GPL (which I agree is not optimal).

And: Most people never modify open source software (and even less publish and distribute their changes), but only use it (run it). For users, the GPL is de-facto indistinguishable from other OSS license.


----------



## ShelLuser (Apr 29, 2021)

ralphbsz said:


> I met Linus a few times in the mid 90s. He started drinking decades ago. Heavily. One of the pubs we went to was called "99 bottles of beer", and after we were done with it, there were fewer than 99 left


Well, that can explain a thing or two   



ralphbsz said:


> The only significant restriction is that if we publish/distribute any of these changes, then the GPL is viral.


Yah, if you want to _change_ the original then I fully agree. Unfortunately that's not the only restriction, if you want to use the original and have it become part (unchanged!) of your own project you're still forced to release all your stuff under the GPL license.

That's the part which irks me and which I simply cannot (and do not) respect.


----------



## Hakaba (Apr 29, 2021)

fraxamo said:


> Again, in Git that kind of situation doesn't exist. Everybody is equal.


What ?
I always see lead Dev, repo maintener or release manager... I never see a project where a unknown body has all rights.

And honestly, mercurial is the tool developed for Linux kernel. Why Linus release git instead participating to mercurial ?
In gitlab, there is manager/developer/reporter roles. Rights management sound more like a lack in git than a feature for me.


----------



## msplsh (Apr 29, 2021)

ShelLuser said:


> Unless you license it under CDDL or a BSD license which then gives the other party all the freedom they need. Then they get to choose



The original author has no obligation to other party's "needs."  If the license is unsuitable for purpose, use something else or go write your own software.  That's your freedom of choice.


----------



## msplsh (Apr 29, 2021)

Hakaba said:


> And honestly, mercurial is the tool developed for Linux kernel. Why Linus release git instead participating to mercurial ?



Git's announcement predates Mercurial's by a timeframe measured in days.  Git was chosen because Linus made it and it was first.  Being written in Python probably didn't help acceptance amongst the C users of the Linux kernel.  Taking a decade to work with Python3 also was not good.


----------



## ShelLuser (Apr 29, 2021)

msplsh said:


> The original author has no obligation to other party's "needs."  If the license is unsuitable for purpose, use something else or go write your own software.  That's your freedom of choice.


So it's "_their way or the highway_". Some freedom indeed. Yah, I prefer to cater to the people who have an interest in my stuff and let things not evolve around me but around them, as long as they acknowledge me as a helping factor of course.

GPL doesn't provide any freedom of choice other than "use or don't use" which begs the question: where is the "open" in "open source"?  Isn't one of the founding principles that anyone can use it?

I quote:


> The term open source refers to something people can modify and share because its design is publicly accessible.


"modify _and_ share": source. This is what the article starts with, this is the basic principle of open source, yet the GPL insists you back down to limitations. Go beyond what should be common sense (= credit where credit's due) and adapt to what they deem the "true" open source setup. Gimme a break. I like the borg in Star Trek as villains, not in real life.

With this I realize 2 things...  1) I'm close to over-reacting. 2) We're getting mighty offtopic.

That's my cue to bail.


----------



## bobmc (Apr 29, 2021)

Hakaba said:


> Why Linus release git instead participating to mercurial ?


Mecurial is written in Python. lt is probably slower than git and may have limits for large projects.

But Mecurial has a sophisticated model similiar to git.


----------



## ralphbsz (Apr 29, 2021)

ShelLuser said:


> Yah, if you want to _change_ the original then I fully agree. Unfortunately that's not the only restriction, if you want to use the original and have it become part (unchanged!) of your own project you're still forced to release all your stuff under the GPL license.
> 
> That's the part which irks me and which I simply cannot (and do not) respect.



That depends on what you mean by "use". If I write some code that runs in userspace on Linux, and is compiled with GCC, and uses glibc, it does not get infected with the GPL. I can release it commercially without releasing its source, I can release it under BSD/MIT/Apache/... license, or whatever I want. Similarly, if all the code does is link against libraries and call functions from libraries that are distributed under the LGPL, then my code does not get the viral infection.

On the other hand, if the code bodily includes GPL'ed source code (for example contains a copy of a device driver from the Linux kernel, or copies 100 lines for lock management from the linux kernel), then it is subject to the terms of the GPL. And these examples are not chosen arbitrarily: I've worked with people who thought it would be cool to copy 100 lines of lock management from a (non-open-source) operating system, and another person who wanted to use a device driver from Solaris (!) which they had obtained the source for illegally (we did not have a source license). The first person was forced to rewrite the locking code in their own way; the second one was fired (stealing source code while at work is not funny).

So I can understand that the authors of GPL'ed software put on restrictions. Now, do I like the specific restrictions of the GPL? No. They are not sensible or reasonable, they are an embodiment of RMS's crazy political ideas about all bits wanting to be free. He also has other political ideas, about sex with teenagers, which caused him to lose his affiliation with MIT. I personally think that RMS is nothing but a washed-up hacker (*) from the 70s, who took some not-thought-through ideas from the 60s and popularized them. Fortunately for him and unfortunately for the software world, he was at the right place at the right time for these ideas to get lots of traction. And given the permanent viral nature of the GPL, that's really hard to undo, once the software is in widespread use (which Linux is, in particular through being in a large fraction of all cellphones in the world, by virtue of Android). But freedom also means freedom for others, and the people who wrote Linux (and gcc and glibc and the Gnu utilities) made a choice.

(Footnote *: The word hacker here used in the positive sense.)


----------



## fraxamo (Apr 30, 2021)

Came across this quote today by Warner Losh (a member of the FreeBSD Git Working Group) in an article on the FreeBSD Foundation blog:

<snip>
"Release 13 marks the first major release since the transition to Git. Not only does Git accelerate the onboarding of new contributors, says Losh, as a distributed version control system, it also facilitates collaboration with FreeBSD committers and non-committers alike."
</snip>

Here's hoping that the move to Git does indeed increase contributions.


----------



## zirias@ (Apr 30, 2021)

Sure, cause it should make things easier. Even as a non-committer, you can profit a lot from local branches and being able to rebase your stuff to form a submission for review that is a set of logical, self-contained commits.

Still, it won't change _anything_ about the development model. For good reasons.


----------



## Jose (Apr 30, 2021)

Zirias said:


> ...Even as a non-committer, you can profit a lot from local branches and being able to rebase your stuff to form a submission for review that is a set of logical, self-contained commits...


Rebase-squash is so great for reviews.


----------



## zirias@ (Apr 30, 2021)

Jose said:


> Rebase-squash is so great for reviews.


Hmmm. Squash "depends". For a complex change, a series of commits makes sense, but it should follow some logical path. I think git is a great tool for creating such things


----------



## kpedersen (Apr 30, 2021)

I am quite a fan of Git. I think it is a little overkill for some projects but at the same time I use it for many personal projects (even tiny ones).

What surprises me more (this might sound perhaps a little unfair) is that it managed to come out of the Linux project! 

Linux does like heavy things (and unless you use Git/SSH, the common approach is to use very heavy web technologies (like gitea, gitlab, github Enterprise) to host little repos) but the more agile distributed (non-centralized) approach is something that Linux (and GNU) is not great at.

So I don't think Git will really change FreeBSD's development because in some ways it is not very Linux-centric in the first place.


----------



## bobmc (Apr 30, 2021)

Will Git change the FreeBSD development model?​The development model is determined by policy (rules for developers), not mechanism (the VCS commands). Git (or Mecurial-scm, for example) can be used by a team with no central server but it is not.  So it seems the same as using SVN and CVS.  Some code changes are accepted with patches via email, instead of merging branches in the VCS.  This is policy and I don't expect it to change.


----------



## zirias@ (Apr 30, 2021)

kpedersen said:


> I am quite a fan of Git. I think it is a little overkill for some projects but at the same time I use it for many personal projects (even tiny ones).


Git has its pecularities, and there's a learning curve using it that _could_ be more gentle. BUT: It's a distributed VCS that works well, and distributed gives you a lot of advantages (one of them being that you can start a project and track changes locally and postpone publishing the whole mess to whenever you think it's a good time). Among all the distributed VCS systems, git is by far the most popular. Maybe others are "better" depending on what you focus on. But git gets the job done and is "quasi-standard". Most developers will, by now, be familiar with git, so, it's the first candidate to consider when moving to a distributed VCS.


kpedersen said:


> What surprises me more (this might sound perhaps a little unfair) is that it managed to come out of the Linux project!


No comment on THAT. (which kind of is a comment as well )


----------

