I think this is a great idea. The ruby community is a wonderful thing, and part of that is reflected in the technology.<p>However, the original Agile Manifesto was powerful because it made tradeoffs. "We value X over Y", even when Y is a valuable thing. For this HDD thing to take off, it has to make the similar tradeoffs explicit.<p>For example:<p><pre><code> We value readable code over runtime performance.
We value open-source frameworks and libraries over developing for popular ecosystems.
We value inclusiveness, diversity, and respect over pure meritocracy.
We value teaching, learning, and improving our craft over short-term productivity.
We value creating wealth over capturing wealth.</code></pre>
If you're writing a manifesto, you should be able to test future decisions by running them past the criteria in the manifesto. The first four statements are great in that regard, but the next six are a little fuzzy.<p>It might help if the manifesto is clearer on what you don't value. Mission and vision statements are often meaningless because you can stretch a positive statement to include almost anything. The Agile Manifesto is great because it uses contrast to clarify what it values most.<p>In some of the statements, the contrast seems to be implicit and that's fine. ("I value an environment conducive to all levels of experience." I assume that means we don't want an environment for only beginners or only experts.)<p>Other statements, though, are harder to figure out. ("I value software development as a craft." Does HDD cater to "craftsmen" as opposed to hobbyists? Or is this in opposition to "professionals"? Or are we talking about relationships and apprenticeship?)<p>I think this concept has a ton of potential. Can't wait to see where it goes next.<p>EDIT: It appears tmorton was thinking the same things and used far fewer words to say it.
I don't want to leave ruby, but at the end of the day, it's slow. Jruby is pretty decent, but the clunkiness of the JVM takes the fun out of it.<p>Maybe it's just the lack of a corporation pouring billions into it like google did with V8, but I suspect that ruby can never be fast, due to ObjectSpace and the like. That awesome/insane object model we all like so much is just impossible to optimise. All the other weird shit ruby can do doesn't help.<p><a href="http://blog.headius.com/2012/10/so-you-want-to-optimize-ruby.html" rel="nofollow">http://blog.headius.com/2012/10/so-you-want-to-optimize-ruby...</a><p>Still, for stuff that doesn't need to be fast, ruby is still a joy to use, and always will be. The enumerable API feels so fluid, it's only really surpassed by languages like clojure in my experience.<p>As you might be able to guess, I'm looking forward very much to swift becoming a general purpose language. If apple are all funny about it and try and neuter the ecosystem for some reason, I will be a sad panda.
I wish "I value performance and user experience" was on there.<p>I'm not sure how happy you should be as a self centered developer with no empathy for the people using your software.<p>Sometimes software can and should be ugly if it makes for a better end product.
>- I value respect and tolerance to all in my community<p>What does that even mean? If a Time Cube guy shows up, does it mean I'm just supposed to politely ignore/shadowban him?<p>Does it mean I can't use "master-slave" replication?<p>I <i>think</i> what that line is supposed to mean is "I value not being needlessly abrasive to people" and "I value ignoring unrelated-to-my-project aspects of people".<p>That is, even if you have some belief or participate in an activity that I find abhorrent, if it's not relevant to the project we're working on, I value avoiding talking about such things so we can focus on the project.
No doubt promoting happiness in the development community is a worthy goal, but there is a lot of variety in what makes different software developers happy, and inevitably their priorities will sometimes conflict.<p>For example, the principle that a programming language should be optimised for the programmer and not the computer seems reasonable. However, what if a programmer works on projects where performance matters, and we haven’t figured out how to implement certain language features in an efficient way yet? It may be true that under some conditions saving a programmer time is more valuable than shaving a few seconds off at run-time, but there are many situations where this is not the case.<p>More subtly, programming languages that are easy to parse, that represent their source code in a well-structured way, and that have clean semantics are friendly to tool developers. I imagine many programmers are happier with a language that has good refactoring, debugging, profiling and testing tools available, and which plays nicely with their favourite editor, diff and version control systems, and code review tools. Again, there might be a trade-off between adding a new language feature, which in itself might be useful for the programmer, and keeping the language simpler or more cleanly structured, which might encourage effective automation and tooling.
I think the single best thing that Ruby can do in terms of making me even happier is to make concurrent programming easier.<p>I love Ruby and the Parallel gem (<a href="https://github.com/grosser/parallel" rel="nofollow">https://github.com/grosser/parallel</a>) makes certain stuff easier, but I feel like every month or so I spend hours just trying to figure out the proper way on how to parallelize
I would love Ruby to become the goto "glue" language between different platforms and applications. I confess to not being more than a layperson in Perl, even though Ruby is heavily inspired by it...could Ruby ever replace Perl as the "Swiss-army chainsaw of scripting"? Or are their technical hurdles (such as performance) that would keep Ruby from being that kind of status quo?
All I need from Ruby is an extension that allows sections of programs to be completely static typed thanks to explicit type hints. Not for the speed, just for the ability to catch errors at compile time.
<i>> But we have technology needs that aren’t going to always be well served by Ruby</i><p>What are some examples?<p>I'll start with heavy number crunching (Go/C) and browser-based apps (JS)
Github Issue #2: What do we do after we value something? <a href="https://github.com/scottefein/the-happiness-manifesto/issues/2" rel="nofollow">https://github.com/scottefein/the-happiness-manifesto/issues...</a><p>Lend your two cents in the comments...
The Happiness Manifesto? Happiness-driven developers? Enough, already. This is an interesting time for computer programming and computer science in general. We're witnessing the coming of age of a very important profession. We owe it to ourselves to advance this profession by developing a body of knowledge based on scientific, mathematical, and engineering principles, as well as empirical observation of what has worked and what hasn't. What we don't need is cultural manifestos and middle-management buzzwords.