30 karma · joined September 15, 2016
In a CV, the impact you made is a story to tell, not a number to calculate.
(To be fair, I don't know if gnarliness is measurable at all.)
1. There seem to be a consent among Gophers to avoid frameworks where possible and use libraries instead. Frameworks are good for a quick start but when you hit their limits it is very difficult to break out of these limits. Libraries allow to compose an application out of independent building blocks. Your main package is always the one in control.
2. "backend/server" can have different meanings. If you can get more specific about the kind of backend or server you want to build, it will be easier for you to find the appropriate libraries (or maybe even one or another framework). Two good places to start are (a) a GitHub search with the search terms "language:go sort:stars <your search term>", and (b) if you prefer curated lists, awesomego.com. You might even try searching GitHub for "language:go sort:stars django" to see some Go projects based on Django's patterns and ideas.
Happy to answer any questions. (But expect delays, it is end of day over here)
No, unless you have some solid studies at hand that would clearly support your „hypothesis“, it is nothing more than a highly biased imputation.
Here is my antithesis: Elixir/Erlang doesn‘t sustain for a small mid-sized org in terms of building maintainable software. Elixir/Erlang requires more maintenance (higher learning curve -> much less clear code -> more bugs -> more developers needed).
Now does this sound like a valid hypothesis to you? Probably not, until I would be able to back my claim by solid numbers.
Having said that, I would not complain if the concept of Ply (https://github.com/lukechampine/ply) becomes part of standard Go.
Trying to ignore GOPATH, or trying to work around the requirements of GOPATH, often calls for trouble.
However, there is a problem with your question: Define "not great".
Every programming language has - and lacks - specific features, and this can be either great or not great, depending on who you ask.
For example, Go has no OOP type hierarchies and hence no inheritance and no polymorphism in the OOP sense.
Ask two persons about their opinions on this, and one will answer, "What, no inheritence? Total crap!", and the other one says, "Wow, that's great! No more projects that have gone unreadable and unmaintainable due to blown type hierarchy trees." Both of them may be right - from their perspective.
It also depends greatly on what you plan to use the language for. Take generics as an example. If you work in the data sciences realm, you would want generic programming for your numeric libraries, or for generic data containers. So Go would not be the language for you. On the other hand, many would never need generics at all in the area they work, and many even love the absence of generics and other complicated language constructs because it's precisely this what keeps the language definition small and the compiler blazingly fast.
Bottom line - take a closer look at the language features - both the ones that exist and the ones that were left out - and decide for yourself if this this is what you need for your project.
I chose Go in 2011 as my favourite "personal" programming language, and I don't regret it. Finally, I have a language that is clear and easy to read, that has no "magic" features that you never really can completely explain how they work, that compiles insanely fast, that cross-compiles to other architectures, that needs no pre-installed VM (ever struggled with Java VM version incompatibilities?), that has first-class language support for concurrency, and so on and so forth. I know about the downsides but they never have been an issue for me.
Important here: Empty your teacup if you want to fill in new (different) tea. Try to understand the Go language without falling back to the idioms of other languages. Drop inheritance, generics, exceptions, dot-chaining of statements, and embrace interfaces, explicit error handling, and clear, readable, and maintainable code.
As one of the go proverbs says, "Clear is better than clever."
(All probverbs here: https://go-proverbs.github.io/)
For all other Go projects, check the project documentation or ask the maintainer(s) if and how you can contribute. This should not be different from any other (i.e., non-Go) open source project.
|-- projects
|-- project_0
|-- project_1
|-- project_2
|-- go
|-- src
|-- pkg
|-- bin
|-- project_4
|-- project_5
Your other projects would then not be affected at all.Or consider using a tool like `gb` (https://github.com/constabulary/gb) that does not depend on $GOPATH. (But ensure to understand the caveats of this tool before switching to it.)