Live data from Hacker News

Why We Chose Rails to Build Gitlab

about.gitlab.com

161–165 of 165 posts

Re: Why We Chose Rails to Build Gitlab

#161
post #100

Earlier quoted context omitted.

Why would you not test your code with the same RDBMS you will have in production? Especially if it’s something as easy to install as Postgres? It seems like begging for trouble...

If you're using an ORM, it can be an easy way to ensure that no vendor specific stuff sneaks in. Also, until recently it was difficult to run, e.g., SQL Server in Docker, so Postgres might be easier to test with. Agreed SQLite is a weird choice, but not all integration tests are robust enough to test characteristics of the underlying db, i.e. focus on business logic not performance.

I have several dozen tests that run in completely separate DBs. With SQLite, the test suite runs through in 1 second:

  $ time go test github.com/sapcc/limes/... | grep -v 'no test files'
  ok      github.com/sapcc/limes  0.004s
  ok      github.com/sapcc/limes/pkg/api  0.515s
  ok      github.com/sapcc/limes/pkg/collector    0.449s
  ok      github.com/sapcc/limes/pkg/core 0.006s
I doubt that you can setup and tear down several dozen Postgreses in that time.

Re: Why We Chose Rails to Build Gitlab

#162

Earlier quoted context omitted.

Yes. I work for a company that used to build almost everything in Java and people are constantly asking why the hell we used Java for it and we're constantly apologizing and saying how quickly we're moving to a more modern solution. Before this, I worked for a company that build almost everything in Java and we had to constantly explain why things were in Java and what we were doing to move things to a more modern so…

> we're moving to a more modern solution What exactly qualifies as a modern solution that Java(/jvm?) is disqualified? Syntax, library eco-system, paradigm, type system, cruft? Is "modern solution" some function of blog post count? A social blade type score for how many early-20 somethings are using it? Or is it going to be something "simplistic" & "clear" which will eventually inherit the cruft all other large langu…

None of the people complaining are the developers (the developers like Java). They're all (enterprise) end users. The "modern" solution is something where the customers don't know it's Java, don't have to hear the words "tomcat" and don't bring to mind all the baggage associated with those names.

There's nothing wrong with Perl or PHP either, but plenty of end users have seriously negative associations with the technology and will blame every fault on the technology because it's had a rough history. All of those languages/ecosystems scream "dotcom" to enterprise users and they don't want to hear that they're paying $1.5m for a system that's built in what they consider to be legacy languages.

Re: Why We Chose Rails to Build Gitlab

#163

Earlier quoted context omitted.

> we're moving to a more modern solution What exactly qualifies as a modern solution that Java(/jvm?) is disqualified? Syntax, library eco-system, paradigm, type system, cruft? Is "modern solution" some function of blog post count? A social blade type score for how many early-20 somethings are using it? Or is it going to be something "simplistic" & "clear" which will eventually inherit the cruft all other large langu…

None of the people complaining are the developers (the developers like Java). They're all (enterprise) end users. The "modern" solution is something where the customers don't know it's Java, don't have to hear the words "tomcat" and don't bring to mind all the baggage associated with those names. There's nothing wrong with Perl or PHP either, but plenty of end users have seriously negative associations with the techn…

Were the companies you were working for agencies?

> that's built in what they consider to be legacy languages

Who's the software company in this situation - you or them or both?

What's the modern solution which they expect you to be on? Go?

What characteristics does it have?

A solution could just as easily be packaged for them in such a way that they just have to run "java -jar someuberjar.jar"

Re: Why We Chose Rails to Build Gitlab

#164

Earlier quoted context omitted.

None of the people complaining are the developers (the developers like Java). They're all (enterprise) end users. The "modern" solution is something where the customers don't know it's Java, don't have to hear the words "tomcat" and don't bring to mind all the baggage associated with those names. There's nothing wrong with Perl or PHP either, but plenty of end users have seriously negative associations with the techn…

Were the companies you were working for agencies? > that's built in what they consider to be legacy languages Who's the software company in this situation - you or them or both? What's the modern solution which they expect you to be on? Go? What characteristics does it have? A solution could just as easily be packaged for them in such a way that they just have to run "java -jar someuberjar.jar"

[deleted]

Re: Why We Chose Rails to Build Gitlab

#165
post #105

"Ruby was optimized for the developer, not for running it in production," says Sid. "For the things that get hit a lot and have to be very performant or that, for example, have to wait very long on a system IO, we rewrite those in Go … We are still trying to make GitLab use less memory" Honestly, I think that Go is beginning to be where Rails was few years ago, and lots of developer friends want to hop on the Go trai…

I agree that memory requirements are too high, but I think there is a lot of room for improvement without a complete rewrite, which would be very costly. Also keep in mind that a standalone GitLab instance ships with all batteries included: PostgreSQL, Redis, etc., all of which add to the memory requirements. That being said, we are certainly looking at moving performance-critical functions into Go. See the GitLab Wo…

Very interesting, thanks! One idea I had was to push "plugin-ability", for example not everybody want to have the Gitlab Pages function, or some might want to completely replace Gitlab-CI by Drone or Jenkins, and all that could help lower the memory requirements. Or maybe I'm wrong?
Post reply on HN