GitBucket: A Github/BitBucket clone in Scala
github.com
github.com
It's quite possible that gitbucket is better than github or gitlab for some reason, and if so I'd like to know that reason; "It's identical on the surface and different under the hood (not necessarily better, just different)" doesn't seem like a particularly great way to generate interest...
I was actually evaluating different Scala frameworks and stumbled upon this project as well as another neat one: https://github.com/ornicar/lila
In the case of GitBucket the most important advantage is its easy installation, especially when compared to the more well known GitLab (that I never dared install after reading through the installation instructions).
For me it is :). I started to learn Scala after finding this nice project. Since it was so easy to install it (just copied the WAR file in a running Tomcat) it made me curious enough to give Scala a try and also to buy the Scalatra book too :).
But yeah, anytime we have ease of install, we all win.
The story's title might indeed be more informative by stating that instead of focusing on the implementation language.
I get that, and I find things like the demoscene interesting where the medium is a large part of the value -- but in this case (and most cases when stories like this are posted) it seems like a serious business product, where the medium is an implementation detail - the value is in other things like "open source" and "easy to install"
As mentioned, when I see "written in Scala", the implication is you ./sbt package it into a WAR, then stick it in a standard servlet container, and voila, up and running. In Gitbucket's case you don't even have to package it, just download the war.
So for a bunch of coders who may want to run a repo service on their internal network, employer or client's network, this is an interesting option.
Also it's FOSS, which I upvote by default here, be it from Mozilla or a random hobbyist.
PS - Not to bag on Gitorious, great FOSS project and much improved install as of late.
as a prospective user, having this web application up and running somewhere and showing it would be much more compelling to me.
http://takezoe.blogspot.jp/2013/09/gitbucket-15-released.htm...
It's a near clone of GH.
And BitBucket was an attempt to steal GitHub's business primarily with Mercurial at the time, that Atlassian bought up, and since then GitHub has still been their #1 competitor, (not counting Sourceforge).
I know there are other solutions like Gitlab, but from what people are saying here, it is harder to setup & maintain, so I do not feel that this particular product does not bring something new.
Maybe create an open source GitHub/Bitbucket UI that people can use in their projects?
Eventually I installed myself. Everything works great now, although I had a couple of hiccups when trying to upgrade to a beta (that'll teach me).
The drop-in-and-run WAR stuff is the greatest thing ever (I'm using Gitblit).
It is great but due to the update situation and the resources it needs (amount of RAM), I think it targets mainly groups and not individuals.
Give me a lightweight, one command, free software alternative with 60% of GitLab's feature set and I will be a happy man.
I agree that it is absolutely meant for groups more than individuals. We use GitLab like crazy in the office, but we also have GitHub accounts for community contributions and BitBucket accounts for private/personal stuff.
Edit: see their 6.0 to 6.1 release notes for more: https://github.com/gitlabhq/gitlabhq/blob/master/doc/update/...
For example at first we had to install gitolite as well and update it. Then we switched to gitlab-shell, so we had to make the switch and now update this as well. There was resque and then there was sidekiq. There was unicorn and then it was replaced by puma and now it is replaced once again by unicorn. At some point those of us who used sqlite could not migrate to mysql when sqlite was dropped. Also more than once, when I was quick to update I ran into problems and had to spend hours in search of a solution. Nowadays I update near the end of the release cycle to avoid such issues. I am on gentoo, so I have to create and adjust my own init scripts. I use apache, so I have to figure that out as well.
All these I guess can take anywhere from 10-24 hours per year, which can't be justified for one person. For a team it is ok.
As for gitbucket, I gave it a try and it only supports git access through http and even there it can't give read only acces to private repos. Any account that has read access, has also write access to a private repo, which makes it useless for deployment.
GitLab co-founder here. Thanks for commenting and informing people.
For those interested a bit of background. Replacing gitolite with gitlab-shell in GitLab 5.0 was a painful step that we did not take lightly. It enabled GitLab to perform much better (100x faster on some operations) in larger installations (1000+ repo's). It also greatly reduced the moving parts and installation problems people experienced.
We tested Puma on GitLab cloud for weeks to see if there where issues but after the switch we ran into big problems so we had to go back to unicorn. The other transitions have similar stories. We try to be careful but we want to end up with a great solution so sometimes we have to make hard choices.
I'm sorry we don't have the resourced to provide official support for Gentoo, everything we have is in the user contributed gitlab-recipes https://github.com/gitlabhq/gitlab-recipes/tree/master/insta...
I use Bitbucket for my repo's (with mirrors on my servers) as I actually prefer it (and you can have unlimited repo's < 5 users) so it was a pain to have a dependency on github as well.
Single points of failure suck.
It is, but it costs more than many small teams can afford.
I especially like its Pull Request interface. It separates out the changes into a file tree, which appears as a pane on the left. Makes it much easier to review large PRs.
The only hitch is, Atlassian has very opinionated product managers. I (and a bunch of other users) had to convince them to support "forks" over a long JIRA thread!
?? Their source code is downloadable to us since we have a license, but I've not checked. Everything else Atlassian purchased has been Java, afaik.
And Atlassian's only opinionated project manager I know about is Jens who does Stash, so I think you are generalizing to apply that to all of Atlassian. I've been using their products a long time now and he is the first that has been like that, but I know what you mean. He doesn't really meet up with Atlassian's typical level of customer service because of his attitude, but maybe he's a "rockstar" that deserves respect.
I'd say that's a good thing. A product can't be all things to all people and when it tries it ends up as a big hogde-podge of compromises that make no-one happy (either that, or being a beast to configure, thus making support painful).
Now, I don't know what the particular issue over forks are (related to branches?) and whether it's reasonable, but the fact that they were eventually convincible only makes it seem better.
Another example of a crazy bug/feature in JIRA: https://answers.atlassian.com/questions/84349/rapid-board-ti...
Nope, it's all Java. It uses the same stack as our other products.
It shares the standard Atlassian plugin framework, which allows users to write plugins in Scala, but the product itself is all Java.
The core of Stash is actually written in JAVA, with only few plugins being implemented in Scala. But that number will likely grow going forward.
You are probably right that some of us are slightly opinionated. But as was pointed out before, I believe product managers should be opinionated as long as the opinions are formed by knowing your customers and market extremely well.
(edited link)
Can't you just add a new remote, push and bang, your code is now there? You should always have a full (hopefully up to date) source somewhere so incase github/bitbucket/remote provider - even your server if you host locally on gitlab etc - catches on fire you always have a spare.
I understand that the server-side implementation is based on GitHub as a black box but I'm wondering about the blatant clone of the UI.
This is not a "full clone" but "something like GitHub" but for your own private server.
> I understand that the server-side implementation is based on GitHub as a black box
No, it's not. The serverside is implemented in Scala using a JGit as a GIT library for the files and H2 database for saving the metadata.
From a quick scan of the sources, H2 seems to be an hard-coded dependency. Do you have any plan on abstracting the Slick driver to allow others DB providers ?
I'm not the developer of the project, but database independence was not requested so far :). I suppose if users will ask it, it will be added. H2 suits however very well all the needs, it has a web based Admin UI that can be simply reused, and it's performance is fantastic: http://h2database.com/html/performance.html
I was just wondering about theoretical consequences of cloning UI/tool of a successful company software with the reason of the tool/interface being too expensive.
If it's done for learning the technologies then it's "for educational purposes" and probably falls into another copyright use category that is more permissive.
The UI was not cloned either :). The UI is a Scalatra template (Twirl) and a Twitter Bootstrap style. It could be customized in any possible way and look the user would wish, but so far the developers are concentrating on the basic features.
(someone posted a comment here about this scrolling patent but then removed, not sure why)
We have an internal instance of GitLab set up here at work and I'd love to see something that was easier to upgrade take its place.
Edit: I just tried to import a large code base with a pretty lengthy history and managed to bring the entire service down.
Problem accessing [snip]. Reason:
Timeout trying to lock table "ACCOUNT"; SQL statement:
select x2."USER_NAME", x2."MAIL_ADDRESS", x2."PASSWORD", x2."ADMINISTRATOR", x2."URL", x2."REGISTERED_DATE", x2."UPDATED_DATE", x2."LAST_LOGIN_DATE", x2."IMAGE", x2."GROUP_ACCOUNT" from "ACCOUNT" x2 where x2."USER_NAME" = ?Edit2: Seems someone already reported it https://github.com/takezoe/gitbucket/issues/112
Edit3: Repository is corrupt. :(
Edit4: No it isn't - hurray git :)
what i really want is a source control client that doesn't suck. that is a problem which actually needs solving and where there is a potential market to steal from perforce...
(why do i not just make this?!?)
Edit: Someone pointed out that they may be looking for developers to hack on the project which makes sense.
[1] - http://takezoe.blogspot.jp/2013/09/gitbucket-15-released.htm...
What about self-hosting for public and private repos? (Internet or intranet)?
It's main usage is for small teams and projects that don't want to put theirs source on external servers, nor do have the money for GitHub Enterprise.
Edit: You know what would make this awesome. If this project could some how extend GitHub via the API and somehow replace GitHub when it goes down. Sort of like a private HA solution to GitHub incase of an emergency. Now THAT is something that I'd look at and say "okay this solves a new challenge with the current state of hosted Git platforms."
Of course there are, but everything I've tried was a paint to setup. GitBucket was the first project that was very easy to setup: in an existing Tomcat (or other container), just drop the WAR file, and everything works. Also no dedicated machine is required for this (I host it along with other applications)
But it's hugely appealing that 1. It's written in Scala. (A language I am familiar with) 2. It's packaged as a single file; download and run. I like single file installs. YouTrack by JetBrains is another example.
MTS is a topic unto itself. Check out this for example: http://mbeddr.wordpress.com/blog/ An Embedded C DSL, built using MTS.
From my tests, is usable. I'm using in the intranet, and have an installation with 20 users and 15 repos so far, with ~100MB each at the moment.
However, this project is not targeted as a GitHub replacement (massive hosting with many huge repositories), but toward small teams that need a UI and simple admin for their Git repos and aren't allowed (or don't want) to use an existing cloud service, or don't have the budget for the GitHub Enterprise.