Hi Marius,

First, I would like you to congratulate you and Johan for the good work and efforts you both put on this feature.

Then, I would like to say that I would be really really sad if SSH support was deprecated. I think that providing your public key from a user's point of view is really simple and I would to keep that behavior. This would also easy the adoption for most people that are already used to Github.

Also, we don't use git over HTTP at all in our company: just git:// and SSH.

Regarding simplifying installation, I would go with an official automated installation recipe using either Opscode Chef or Puppet. As I already created a Chef's recipe for installing Gitorious in Debian in about 15 minutes if internet speed is good enough, it would be a matter of making it official so that others can include support for non Debian/Ubuntu systems too.

Then, comes my main concern. Until about an year ago, when I tried the git plugin for Netbeans, which used JGit if I remember correctly, I had several problems with corrupted git repository when using submodules. Even if they corrected this, I don't trust the idea of re-writing the git tools for Java. I would feel much more comfortable if they had written a Cgit front-end instead, just like Grit does. And even that happens, Grit is used in Gitorious just to read the file system, not to write to it.

As long as SSH support is kept, I don't mind adding HTTPS push support because I won't enable it anyway in our local installation. But I wouldn't like to use gitorious.org for hosting my projects if I share them with someone else and I can't make sure if he/she will use HTTPS for pushing. Probably I wouldn't provide write access to anyone else just to make sure only SSH will be used for pushing...

I really don't trust JGit and I don't trust current Java developers either after lots of Java code I've been reading lately in largely used Java libraries... It is like almost every good Java developers that existed have now migrated to some better language, many of them still running on JVM with languages like Scala, Closure, Groovy, JRuby, etc...

Well, that is my opinion. If the difficult of installing Gitorious is the reason for dropping SSH support, I would reply that just writing an official Chef's recipe would solve this problem.

Thanks for asking this on this list!

Best regards!

Rodrigo.

Em 24-06-2011 02:40, Marius Mårnes Mathiesen escreveu:
Anyone subscribed to this list will know that installing Gitorious is not for the faint of heart. There are a lot of moving parts, a lot of dependencies, and getting everything right is difficult. I really want to change this.

One of the things that complicates the setup is that Gitorious is not just a web app. It's also: - a service running on top of SSH, using key infrastructure for authentication and authorization
- a daemon that serves Git repositories over a dedicated protocol (git://)
- a service that provides Git access over HTTP

Historically, the only protocol that offered write access in Git was SSH. The git protocol was mainly used because it's faster than HTTP and doesn't require authentcation over SSH. These two things are the main reasons why you want to run all these daemons on your server:
- SSH for push
- Git for fast, anonymous pull

Git's HTTP support changed a lot in version 1.6.6, introducing "smart" HTTP. It's a fairly simple concept; a modern Git client will (if supported by the server) open a series of HTTP POST requests to the server, basically running regular git traffic (upload-pack and receive-pack) over this connection. This means HTTP got a lot faster, the performance is comparable to Git over SSH. And since HTTP supports authentication (unlike the Git protocol) and encryption (SSL), this means you can support all Git usage scenarios over a single protocol, and stil be safe. Oh, and as a bonus, people stuck behind a firewall can finally join the party too.

Gitorious' current HTTP support is based on the old (aka. dumb) HTTP method (Scott Chacon has a really good write-up on the difference between "smart" and "dumb" HTTP at http://progit.org/2010/03/04/smart-http.html), which is slow, error-prone, read-only and locks up your Apache/nginx workers serving static files. Git itself has a cgi that provides smart HTTP, but making it work in a scenario where the incoming URL is different from the path on the file system involves hacking Git itself.

Christian and I have made a few experiments on implementing smart HTTP for Gitorious, and this week we've been focusing on one of them: Mutt [1]. Mutt is a cross breed (and also a git):
- It's written in Ruby
- It runs under JRuby
- It uses the awesome JGit library, which is an implementation of Git in Java. JGit is used in EGit, the Git support in Eclipse, and in Gerrit, the code review system used by the Android project

Mutt will provide anonymous/authenticated fetch/pull and authenticated push to your Gitorious server. It will be awesome, and it will be installed by a single command.

The question is: once we have an easily installed, anonymous/authenticated, pull/push solution for Git traffic: is it time to deprecate the other protocol handlers in Gitorious:
- The SSH handler
- The Git handler (git-daemon or git-proxy)

Would anybody miss them?

Discuss.

Cheers,
- Marius

[1]: https://gitorious.org/gitorious/mutt Yes, I know there's already a program called Mutt, the name just fits really well. I promise we won't name the binary mutt, and we won't read your .muttrc.
--
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]

--
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]

Reply via email to