Hacker News new | past | comments | ask | show | jobs | submit login
Gitea – A community-managed fork of Gogs (gitea.io)
158 points by ausjke on Jan 1, 2017 | hide | past | favorite | 93 comments



It was forked because they wanted a different management model that included more people.

https://blog.gitea.io/2016/12/welcome-to-gitea/


As someone who's currently using gogs I'd like to know what are the primary differences between gogs and gitea - right now the website doesn't talk too much of benefits coming from the switch.

Sure, community managed sounds great, but does that automatically guarantee a solid project vision, predictable release cycle and lots of new features?

Don't want to sound negative but I think reasons for the fork needs to be clearly presented and potential switchers (like myself) got to be assured there's a better future with the fork rather than original


The main difference is mainly in who contributes and the speed of development right now, who knows what'll happen in a few months. The main issue is that the sole maintainer of Gogs has a habit of going missing for months at a time, this normally wouldn't be an issue if he gave other contributors write access to the repo, but he doesn't. He actually removed a few the first time he went missing.

Right now, the initial release was pretty much just a cleanup effort to get the codebase ready for the new changes that are coming down the line. If you look at the PRs open for 1.1 there's a lot of goodies coming that I'm looking forward to.


The maintainer seems to be doing a stellar job and giving it away for free. It's a bit childish to talk about someone going missing for a month. If he got paid for it, he's be legally entitled to a vacation that's just about that long.

I can't help but think about the open source maintainer burnout that has been featured so many times. Let off your project for a couple of weeks and you have all sorts of people demanding write access to the repository. That must be up to the mainatiner and his or her vision for the project.

Don't misunderstand me. Fork away. Forks are the social contract open source software stands on. But please, for the sake for the health of everyone around us, think of what language you use. Someone hasn't "disappeared" just because they're offline for a while. Make him or her proud or their community and what they did in the meantime instead. That's also a fork, just much less of the "I took my stuff and left!" vibe.

And I realize I'm overreacting to the choice of a few words on a project I've never been involved with and never seen before, it's just that some forks are just hostile for no apparent reason whatever and it's so unnecessary.


I thoroughly disagree with you on this, it's not childish when a whole lot of people are using your software in production to want the software to be maintained by more than one person. Bus factor and so on. He frequently goes away for not just one month, but several. That's not healthy either, but it's his project and he runs it as he sees fit, which obviously the community at large disagrees with.

And forking is exactly how open source is supposed to work, you disagree with how something is run and you fork it. A lot of contributors weren't happy with how things were and they forked it, it's how open source should and does work.

And yes, I do think you are overreacting. I've been following and using Gogs for over a year now and the maintainer going away for months at a time has been very annoying, so I'm happy to see Gitea work.


Well, say what you want but I see 33 open PRs and 1039 closed ones on the original gogs repo. Doesn't look like an unmaintained repo to me.


Yes, this is what it looks like when he hasn't disappeared for three months straight.


Three whole months? How dare he!

/s


Let me reply as someone who's used Gogs for a year.

The main dev seems to be a good guy and it was always a good experience to communicate with him on bugs/features or pull requests.

He is a single point of failure, though. There were quite some active contributors to Gogs. They work on Gogs quite a lot, fixing bugs and improving it. Even simple fixes like typos don't get merged for weeks. And that's when Unknwon is available. When he's gone, he's just gone and other developers have no idea if the project is dead now, or not.

Most of the recent activity in Gogs development came from the people who now work on Gitea. I hate that this fork happened because I really don't like the Gitea name and logo.. but that's where the development is happening now..


As it is a fork of Gogs and Gogs haven't progressed too much since then, You can have a look at the commit log to have a rough impression about what have been improved. Last time I checked it had about 400~ more commits, which were mostly bug fixes.


I did a quick analysis of the two projects and it looks like the changes between them are quite massive. Here's the overall breakdown.

Graph of commits over the last year:

https://gitsense.com/gogs-gitea/year.png

https://gitsense.com/gogs-gitea/year-cummulative.png

Less noisy graph that only shows master vs master:

https://gitsense.com/gogs-gitea/master-vs-master.png

https://gitsense.com/gogs-gitea/master-vs-master-cummulative...

Total commits:

https://gitsense.com/gogs-gitea/total-commits.png

Changes in the last 3 months:

https://gitsense.com/gogs-gitea/summaries+trees.png

https://gitsense.com/gogs-gitea/trees.png

Contributors in the last 3 months for Gogs:

https://gitsense.com/gogs-gitea/gogs-contributors.png

Contributors in the last 3 months for Gitea:

https://gitsense.com/gogs-gitea/gitea-contributors.png


What kinds of changes were made that needed number of files to grow by a factor of 22? Or 27 if you just count go files?


The number of files didn't grow by a factor of 22. The screenshot shows how many files were modified in that time frame. In the case of the screenshot, it showed what happened in the last 3 months. This is what was modified in the last 72 hours.

https://gitsense.com/gogs-gitea/summaries+trees-72hours.png

This is the entire history.

https://gitsense.com/gogs-gitea/summaries+trees-history.png

Which shows the number of unique Go files to have ever existed to be 407 in Gogs and 1,753 in Gitea.

I'm guessing some files were moved around. I'll do a bit more digging and update if I find anything interesting.

Edit:

This a diff from the point of divergent to the latest commit for each branch.

Gogs (69 commits with 106 diffs):

https://gitsense.com/gogs-gitea/gogs-diff.png

Gitea (528 commits with 2,062 diffs):

https://gitsense.com/gogs-gitea/gitea-diff.png


The number of files is thus big because Gitea have its dependencies on the vendor/ folder, but Gogs no.

Even this is the case, Gitea has a lot a bug fixes that are still pending on Gogs.


Thanks for the info. So if you look at the vendor diffs, it accounts for 1,479 out of 2,062 diffs.

https://gitsense.com/gogs-gitea/gitea-vendor.png

So the difference isn't as drastic as it appears.


I played with gogs half-year ago and gitea is my first software try-out in 2017, it worked beautifully for pretty much everything I wanted and it requires way less cpu/mem to run(comparing to gitlab,etc), I'm sold.


My major issue with Gogs and Gitea is that they lack a cache to store the git history/log. So if you work with repos that have many commits (example, the git repo itself or the linux kernel repo), you will forever be waiting for the commit message for each file to load because Gogs/Gitea scans the entire git log for each file.

This was an issue when I tested Gogs a few months and I don't see any mention of a cache so I think it's still an issue.

For smaller repos though, Gogs works incredibly well.

Regarding this fork, it makes sense if the owner of gogs is not giving write access to others. At the same time it would be a shame if Gitea becomes popular and overshadows Gogs. I hope they can work out a mutually acceptable solution and merge.


We are aware of that issue, and hopefully we will find a proper solution to improve the load time for bigger repos.


A community is not about how many people have permission to write the main repository. Linux kernel is the example. Linus is only one who has permission to write the mainline tree.


True. But Linus also doesn't disappear for several months at a time. Not to mention that Linus is not the only decision maker in the project. Greg KH maintains the stable kernels (which is ironically where most people get their kernel from).


I wonder how long it's going to take before gogs and gitea get merged, just like it has happened in the past with major forks , nodejs + iojs being one example.


Personally, I tend to consider that to be a wildly successful outcome for an OSS project fork. The project community continues to exist, conflicts get resolved (hopefully amicably), users benefit, developers benefit. Everyone wins!


We will never merge, unless Gogs gets merged into Gitea. We won't merge into Gogs because then only one person will be left as an owner which was the reason for the fork in the first place.


They've split and merged before. This is the second time gitea has forked.


Yep. The first time was until the owner came back, but he refused to merge the changes on Gogs. The community stopped with Gitea when this happened.

This time, the community patience ended, and Gitea will continue on its own way.


What did gitea contribute the last time they merged?


I think it was at a time when the original maintainer kept silent for a while. When he came back online, gitea stepped back.


Exactly, but then he went silent again for over a month in December. We will continue development of Gitea, even now that he's back.


Question to any gitea devs/users: How can I get rid of the (terrible) i18n?? I'm trying out the app but it's complete gibberish! It appears to do some kind of User Agent detected i18n - (which by the way an app should never do imho).

I just want english so I can have some kind of understanding of what I'm doing but I can't find the setting either in my user profile nor in the app configuration.


It is infact using `Accept-Language`-header and `lang`-cookie as seen in this[1] file on line 168, 184 and 196. This is according to W3C[2] a good starting point :)

[1] https://github.com/go-macaron/i18n/blob/ef57533c3b0fc2d8581d... [2] https://www.w3.org/International/questions/qa-accept-lang-lo...


I haven't tried but I think you might be able to add this to your config to fix that:

  [i18n]
  LANGS = en-US
  NAMES = English
https://gogs.io/docs/features/i18n

Edit: tried and indeed it seems to work.


Thanks, that worked perfectly.

Odd to implement i18n and then automatically choose based on UA, but not have a user option?


I can select the language on the bottom right of every page of my Gogs instance.


Lol: it's the same in Gitea. I spent a lot of time carefully going through every settings page I could find, did not look in the footer.


Right. But I would you change `custom/conf/app.ini`


His reply is very reasonable and some of Gitea dev is a bit of harsh in tone IMHO. Or maybe that's because of my English level.

Anyway, I think this is how OSS should be. We shouldn't have to force people to merge the code that we want. At the end of the day, it's his project anyway.

Good luck to both of projects.


Where can I see his reply?


>In my point of view, it's a sign of success of Gogs that Gitea forked it. Gogs is under MIT license and there is no problem with me totally that Gitea is developing its own version. It happens often in open source community(when you are not satisfied with upstream version, I fork a lot actually).

Seen here:

https://github.com/gogits/gogs/issues/1304#issuecomment-1246...


Who of the gitea developers is harsh?


Participate in Atlassian Research

My name is Angela and I do research for Atlassian. I’m kicking off a round of discussions with people who use Git tools. Ideally, I’d like to talk to people that sit on a team of 3 or more. If this is you, I would love to talk to you about your experience with <using> Git tools, or just some of the pain points that are keeping you up at night when doing your jobs. 



We’ll just need 30 mins of your time, and as a token of my thanks to those that participate, I’d like to offer a US$50 Amazon gift voucher.



If you’re interested, just shoot me an email with your availability over the next few weeks and we can set up a time to chat for 30 minutes. Please also include your timezone so we can schedule a suitable time (as I’m located in San Francisco). Hope to talk to you soon!

Cheers, 
 Angela Guo aguo@atlassian.com


I think a fork should not be a casual decision as the main developer would have put in hundreds or thousands of hours on the project and was motivated to get it to this state. A project by a small team or even a single person will obviously be constrained in many ways.

Now if the project has potential or takes off a 'community' should fork it only if all other avenues have been exhausted and with good reasons.

Its important for a 'community fork' to let the community know the exact rationale or 'community' can easily becomes a excuse for some to seek to control or capitalise on others work. This does not help open source especially if the main developers are too busy developing while those who fork have time to market the fork to a community.


If the main developer doesn't want forks then don't use an free/open source license. It is very simple. "Capitalise on others work"? That's insane, that license is very explicit that this work was donated to the public under well specified terms. It welcomes all of us to capitalise on it, that's the whole damn point.

There is a single sufficient "good reason" to fork a project. You want to. People are free to use your fork or ignore it.


The point was not against forks but transparency and good faith. Open source is not just about forking but also contributing, no?

What have the forkers contributed to the product so far? Where are the technical reasons for the fork? Where is the community discussion and consensus? Has there been any kind of democratic action? So on what basis is the word 'community' used?

A fork shoud not simply be about people misusing the word 'community' for seeking control and ownership because that's not what open source is about, is it?


As already said, nearly all people in the org are former Gogs contributors, the owners have been elected by the other people who joined the effort, everybody who has contributed 4 pull requests can join the maintainers team of gitea, the owners will be elected every year by the community, EVERY scripting for the infrastructure and the website and so on its entirely published. The only thing that is a secret shared between the current owners are the secrets for the services like github tokens, github oauth or email credentials. Everything else is open, accessible by everybody.


> What have the forkers contributed to the product so far?

A lot of the forkers and go-gitea group members wrote essential features for Gogs and contributed thousands of lines of code. They simply got impatient waiting sometimes 3 months for their PRs to get merged. Especially bkcsoft did tremendous work on Gogs. As a contributor to Gogs that stopped contributing because whose last PR wasn't merged for a very long time, I welcome Gitea's idea of a faster development schedule.


This seems positive. It means that the big weakness of Gogs (bus factor) goes away. I'll be interested to know if they opt for anything more sophisticated than "more than one person has admin on the repo" as a governance model.


Hosted on github...


Gogs is a great way to have Github-like private repositories for free on your own infrastructure. Github is still Github for open source projects.


This is my biggest complaint about gogs. I use it for personal projects but it is harder to collaborate with and get pull requests from other developers using gogs than it is with github. It is a pain if you have to register with every gogs instance that you want to prepare a pull request for.

I think if gogs/gitea was self-hosting it would encourage the developers to find easier ways of collaborating.

This is my only complaint about gogs. It is amazing otherwise, suits my needs, is low maintenance and is an impressive piece of work. I would encourage anyone to try it that wants to have private repositories for personal projects.


Github has OAuth2 - couldn't gogs have a "log in with Github" option that pulls all the data it needs from there automatically?


When Gitea gets support for consuming OAuth2 this will be make possible

Tracking Issue is https://github.com/go-gitea/gitea/issues/26


You may want to take a look at this issue:

https://github.com/go-gitea/gitea/issues/184


We will integrate OAuth2 and after that we also want to integrate federated pull requests so that you can create pull requests from other gitea instances as well.


It will be hosted on a Gitea instance soon. It wasn't done yet because of few missing features, etc.


After the integration of the missing features like OAuth2, protected branches, ci status and some others we will start dog-fooding, than Github will just stay as a mirror for contributors that don't want to login to our gitea instance.


The gogs and gitea websites feature the same basic content on the front page. Is it also open source? Im curious and dont mean to stir up shit.


The front page states that it's under the MIT license, so I'm guessing yes.


Missed that. :) Thx.


This is a pretty immature community IMO. The gogs maintainer just has life sometimes and they want to fork because he leaves some PRs open for a while. Learn some patience, the project will be better off for it.


We can for sure understand that one is not available all time. Everyone has a life, and sometimes need many weeks away, etc.

This is not the reason of the fork. The reason is that he refuses to give more people write access to the project to keep it going.

Before the first time he went AFK, he even removed write access from the 2 or 3 other people that had it.


> This is not the reason of the fork. The reason is that he refuses to give more people write access to the project to keep it going

Others don't need write access "to keep the project going" unless they intend to ship releases without him/her- they can make PRs and the maintainer will merge them when they are back. Perhaps the Gitea committers want a more predictable release cadence?

I agree that a fork is probably the best solution here, due to the impedance mismatch, the forkers don't seem to be fans of the BDFL model. Additionally, "community" is a much wider term than how you used it, it's not just other contributors but also includes users and bug reporters. I wish Gitea the best of luck, but I'll remain a Gogs user.


[flagged]


Forking when you're unhappy about something and can't come to an agreement is EXACTLY what OSS is about. Saying this as another OSS maintainer.


I would completely understand and agree if they had a rational reason for forking, but they don't. I have a very low opinion of unwarranted forks.


Why does somebody forking need to justify that their fork is warranted based on your standards?


They don't, but I'm free to express my distate for them if they do. That goes for much in life.

Forking is not a decision to be taken lightly. Even the most just fork will fracture the community and weaken the software's development. Contributors are now being asked to take sides and both sides are getting fewer contributions. The stress this puts on the original maintainers is also non-trivial.

Look at ffmpeg/libav. It forked for similar reasons on the surface, but in reality it was to forcibly take control of the vernerable project over petty disagreements. For years the users and developers suffered alike as libav was shipped by default in Debian due to politics and received subpar workmanship and more security vulnerabilities that were fixed on slower schedules, all while taking contributors and users away from ffmpeg. After nearly a decade libav is finally dead in the water and ffmpeg is becoming the default on Debian again, but not after lots and lots of damage to the project.

On the other hand, you have examples like nodejs/iojs, where there were much more tangible reasons and alternative solutions were explored longer and more earnestly, and they regretfully were forced to fork for the good of the ecosystem. And they were right, eventually the two projects merged together under better oversight.

But the gitea folks do not have nearly as much clout behind their efforts IMO, and as a result their move to fork is extremely harmful to gogs development.


> Not all PRs have to be merged on your schedule

Considering how fast GitLab is moving, if Gogs/Gitea wants to remain relevant, they really have to move at a much faster pace than they use to. Judging by Unknwon's comment in this issue

https://github.com/gogits/gogs/issues/1304

it seems like Gogs is driven by a passion and it doesn't matter at the end if he is the only user. As he puts it

> Gogs isn't a business, making it is what I love to do

I'm not sure if his stance has changed, since this issue was from July. I'm also not sure, if he fully realizes he is sitting on a potential golden goose. The market for Git hosting in Enterprise is still very much up for grabs.


>Considering how fast GitLab is moving, if Gogs/Gitea wants to remain relevant.

Gogs is written in Go, easy to install, light on features and is lightning fast.

Gitlab is mostly Ruby (with some Go), a mess to install, heavy on features, and (at least gitlab.com) extremely slow.

I don't see how they compete at all.


They compete in the mindshare sense. If a company is determined to treat Git hosting as commodity product, they are going to look at gitlab, gogs/gitea, gitbucket, and a bunch of other solutions.

As you point out, you either go with fast vs feature rich.

GitLab is working towards making things faster and easier to install. Is Gogs/Gitea working towards making it more feature rich?

If Gogs market are hobbyist who want to run it on a Raspberry PI, then I don't see GitLab being a threat. If Gogs wants to be solution that larger companies would consider using, then they are going to have to compete with GitLab's, which means introducing more features.

This Gitea fork appears to be a desire to move faster with more features. I've posted this in another response, but this a diff from the point of divergent to the latest commit for each master branch.

Gogs (69 commits with 106 diffs):

https://gitsense.com/gogs-gitea/gogs-diff.png

Gitea (528 commits with 2,062 diffs):

https://gitsense.com/gogs-gitea/gitea-diff.png

I obviously haven't gone through a lot of the diffs, but the changes appear to be formatting/commenting like this:

https://gitsense.com/gogs-gitea/gitea-changes-example1.png

with others adding more functionality like this:

https://gitsense.com/gogs-gitea/gitea-changes-example2.png

No matter what, it looks like there maybe no turning back for both groups. Hopefully this is not the case.


Hey, thanks for the feedback. We're aware of issues people experience with latency on GitLab.com and we're working to make it better. You can see some of the history regarding this issue here: https://gitlab.com/gitlab-com/infrastructure/issues/59

This issue was updated this morning with a plan to speed things up: https://gitlab.com/gitlab-com/infrastructure/issues/947


I will continue to use gogs, forking is not correct.

The maintainer cares about code quality, it seems like gitea does not


Why do you think gitea doesn't care about code quality? To improve the code quality we even include linting and things like vet into the ci process. Beside multiple refactorings to improve the quality. Gogs got more than 1k lint errors, gitea got none ;)


One of the few developers getting paid to work on Gogs is (was?) on payroll at GitLab.


Your mindset is totally whack. Gogs does not have to compete with GitLab, it can fill its own niche. Who are you to tell him how to use his "golden goose"? Why does it need to be a business? Jesus christ.


I am not saying it is a golden goose. I am saying it has potential to be. If he wants to work at his own pace, then all the power to him but this path most likey wont lead to anything but a hobby project.

He can't expect others to not want to push for greater git mindshare. Gogs is licensed under mit and he has absolutely no say in how others want to evovle it. This is how permissive licenses work.


There's nothing wrong with being a hobby project - some of the best software is exactly that.

To expand on the goose metaphor, attempts to extract additional value from a goose that lays golden eggs oftentimes kills the goose: I'm sure a few years ago some VCs looked at CyanogenMod and saw loads of potential, but here we are.

It's perfectly fine for Gitea to evolve or even monetize via Gitea Inc, but it will continue to compete with Gogs if the maintainer wills.


So gogs can be that and gitea can be something else, why are you still thinking that they don't have a good reason for their fork if they have different ideas about which niche they want to serve.


Because gogs will suffer for it and that's a hell of a way to thank the project that you took the first 95% of your work from.

https://news.ycombinator.com/item?id=13297748


"the project that you took the first 95% of your work from"

The project that explicitly donated its code to the public to use and re-purpose as it saw fit you mean?

I got confused by the use of the word "took". And that you seem upset that other contributors get to choose how they want to contribute, even if the originator disagrees. So they are volunteering wrong? Or Hobbying wrong? Glad you can set them straight.

There are plenty of systems of generating code where the creator retains these rights and things are organized in a top down hierarchical manner. These are what FOSS license are explicitly fighting against.


You misunderstand my point. Yes, they have a right to and yes, that is a good and explicitly desirable thing, but there is a courtesy and tact to such things that this project lacks. They are disrespectful of their roots.


As a complete bystander there may be history I'm completely ignorant of, but in Gogs issue 1304 Unknwon themselves wrote:

"In my point of view, it's a sign of success of Gogs that Gitea forked it. Gogs is under MIT license and there is no problem with me totally that Gitea is developing its own version. It happens often in open source community(when you are not satisfied with upstream version, I fork a lot actually)."

In the same issue comment Unknwon also states that they believe Gogs and Gitea to have fundamental philosophical differences, and finishes off with thanking everyone and wishing happy coding.

I don't know all the facts and Unknwon's personal view may have changed in last 18 months, but just judging by the philosophy of the original author and maintainer of Gogs the lack of courtesy, tact and respect of their roots that you refer to might be an opinion of yours that Unknwon doesn't share. If that is so, then what do you mean they lack courtesy, tact and respect towards?

Of course, if I'm mistaken or there are more recent opinions of Unknwon's that contradict this, then please disregard this comment.


Maybe I do, but I don't think so. It sounds like we just disagree on what respect/courtesy/tact is due to the original contributor to a project. I don't see the implicit hierarchy that you do. Roots are important to history and worth some kudos, but don't and shouldn't carry any power at all.

One faction of developers parted ways with another faction because they disagree on direction, in this case the minority faction has the rights to the name. We get a choice, they all get to donate their work to the public as they wish to.

This is unintuitive to our ape brains, but it is objectively better to remove ego and status concerns from collaborative projects.


yes, but it can, and if people want it to, it should. besides, why wouldn't you want it to be a business? businesses make money, which can pay for development of new features and better support for users. sounds like a win to me.


> That's his prerogative

Sure. 100%. It's up to him for how he wants to run an OSS project.

In the same way, if people in the community have different ideas they're more than welcome to fork. If you don't want that to happen, either listen more to the community or don't open source a project.


It's his prerogative to do that, it's theirs to fork the project.


> This is a pretty immature community IMO. The gogs maintainer just has life sometimes and they want to fork because he leaves some PRs open for a while. Learn some patience, the project will be better off for it.

what a stupid excuse, reminds me of people excusing the creator of Coffee Script because "Jeremy he was busy". if your work depends on an open-source project and the author "has life" so that critical bugs aren't resolved or important PR aren't merged then the only mature thing is to fork and let the maintainer get "life" as much as he wants. Because he is not irreplaceable


Ahhh gogs. This project has always rubbed me the wrong way with how much of a blatant steal of Github it is.

Sure, 'copy' the features, and take inspiration from the UI and layout, but so much of gogs looks identical to GitHub that it's nothing but stealing.


The issue of calling IP property.

I mean it's not like someone's breaking into GutHub's server room and stealing equipment.

You want to say it's a breech of copyright, patent or trademark? Maybe.

But then FreeBSD "stole" Unix, Windows stole Mac, Mac stole Xerox, Microsoft stole WordPerfect, and so on.


Isn't that semantics? I'm obviously quite aware there wasn't any physical theft.

My point was around the developers being seemingly okay with ripping off Github's UI.


The thing you're missing is that in this case UI is not something you can usefully make different without harming yourself in the process, due to it being a huge contributor to function beyond form, and "ripping it off" doesn't hurt anyone else as long as you don't actually impersonate them by copying their logos.


Stash, Bitbucket and Gitlab all tend to disagree that theres only one way to build a UI for git websites.

I agree that no one is being harmed, but personally I just thing it's shameful.


Stash and Bitbucket are horrible to use imo, and last time i looked Gitlab looked almost the same as Github.


Gitlab's UI has evolved considerably in the last couple of years. If it looked just like Github when you last saw it, I would suggest checking it out again because it's quite different compared to the gitlab of 2013ish.

also I agree with you that stash and bitbucket are Really Not That Great.


Cheers, gonna give it a look again. I retain the memories of it because the only instance of it i ever used hasn't been updated in years.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: