I'm thinking of working on building something new and open sourcing it. I know java really well so my first choice is to build it in java (pure java - no J2EE or other bloat) but Go also looks like a great alternative. Plus I'll have an excuse to learn Go.<p>Since I'm hoping others in the community will want to contribute, I thought I'd ask here before making a decision.<p>What do folks think - should I build it in Java or Go? Would you prefer to contribute to a Java or a Go codebase?
I think you should decide what your single most important goal is:<p>1) launch a project<p>2) learn a language<p>Learning a new language will derail your project completion and launch indefinitely, often permanently.
> What do folks think - should I build it in Java or Go?<p>There is an old quote that when people ask for advice you should carefully figure out what they want to hear and then tell them that.<p>In this case even more so: if you are starting an open source project I'd strongly recommend optimizing for long-term motivation. Whatever that means in this case I'm afraid I cannot tell.<p>> Would you prefer to contribute to a Java or a Go codebase?<p>I personally would have a way simpler time contributing to a Java project than a Golang project.
I was wrestling with the same question a few months ago and ended up choosing Scala! I got to learn something new but could still fall back to things I liked about Java.
The most important thing is to use the right tool for the right job. If the project has networking and doesn't involve building a GUI or graphics, then Go is a great choice. (Not that Go can't do GUIs or graphics, but there aren't very robust and mature libraries for those things yet).
Between Java and Go, definitely Go. I think you'll find it surprisingly easy to learn, although a bit constraining compared to Java.<p>OTOH, if the project will require heavy loads you might want to consider Phoenix/Elixir. That's would be learning something truly different too.
Given the scope of the question, if you are thinking about creating something useful in the OSS space, then I would clearly recommend to start with Java since you would be laying the foundation of the project in a language you know.<p>Otherwise pick Go.
What's the nature of your project? If you want people to use it and maybe create a community around it, the language might play a big role.<p>My impression is that Java is used by enterprise and more established sectors, whereas Go is popular with hobbyists and early adopters.
I tried to start another project in Go instead of Python/Flask. I never really started.<p>If you want to learn, Go is a good choice. If you want to get things done, use what you already know.