Cheers,
Salvatore
--
Salvatore 'antirez' Sanfilippo
open source developer - GoPivotal
http://invece.org
"Fear makes the wolf bigger than he is."
— German proverb
--
You received this message because you are subscribed to the Google Groups "Redis DB" group.
To unsubscribe from this group and stop receiving emails from it, send an email to redis-db+u...@googlegroups.com.
To post to this group, send email to redi...@googlegroups.com.
Visit this group at http://groups.google.com/group/redis-db.
For more options, visit https://groups.google.com/d/optout.
On Tue, Dec 9, 2014 at 7:30 PM, Josiah Carlson <josiah....@gmail.com> wrote:
> +1 for Salvatore as benevolent dictator.
>
> My favorite is when someone drops a broken PR for unwanted functionality,
> then uses "we" to describe the ongoing effort involved in getting the patch
> merged. That always gives me a laugh.
>
> Code talks. Perfectly reasonable. Want responsibility and your opinion to
> mean something in the Redis project? Write code, fix bugs, and contribute to
> Redis.
Thanks Josiah, I forgot to say one thing in my original email, that
your email remembers me.
Maybe it's just the term that sucks "benevolent dictator", let's talk
about "single point of responsibility", but indeed "code talks" as you
say, but also use cases, experience. So why those can't give you
right-to-vote in the current setup, before doing things, I try to
listen to what the community here believes is appropriate or not, and
I try to do this in an open-minded fashion, so I believe that the
current Redis design is also the result of many point of views here.
> Redis, I'd definitely be prioritizing my own work just for the sake of
> having code I don't need to work to understand and either help fix well
> enough to get into core, or explain (several times) why the code won't make
> it in.
That's what you end feeling like, with a binary choice. It's either
emails, PRs, issues, or the ability to do some work today.
It's sad but it's like that. To do "a bit of issues", "a bit of code"
requires an higher degree of discipline. Often all my discipline is
spent in actually doing something to bring the project forward instead
of writing Hacker News or alike.
> You keep building it, I'll keep telling people how to use it better.
Thanks :-)
--
Salvatore 'antirez' Sanfilippo
open source developer - GoPivotal
http://invece.org
"Fear makes the wolf bigger than he is."
— German proverb
> Someone paid me to write a book about how to use your software. Thank you.
And I've travelled to some fun places to talk about it (redis), and have been paid to take the time to write not one but two libraries for it (confusingly, for the same language/platform).
Frankly, and based in part on my own experiences running multiple (much more minor) open source projects - I have to observe that the reality is that: there isn't a "core team" - a "core team" does not exist when there are 1.something members (no offence for the .something, Matt). Until the core has quorum, it : is antirez++. Much as I would love to contribute directly: I'm simply not a c/c++ person currently. Although I'm actually half tempted to dust off my prior skills and go bug-hunting!
So for my money: all heil our benevolent-dictator-for-now! (with a future eye to establishing a different system when sustainable).
And Matt: you raise some excellent points about approachability etc.
Marc
I vote +1 as benevolent dictator model.Redis is adapt it. :)
--
The only thing that is not going to change is that I need to like a feature before it to be able to enter the core.
There's a tendency lately (in OSS in general) to code a solution for some problem and offer a pull request without ever discussing the use case. That works great in some projects, where growth is encouraged, but in other projects it works better to discuss the use cases first.
Very true, I'm going to spend a lot of time in PRs / Issues / Redis-dev mailing list.
I'll write less code, but I always lament that the project gets too big, so for a few months is not going to be a drama :-)
On Tue, Dec 9, 2014 at 8:33 PM, Matt Stancliff <mstan...@pivotal.io> wrote:
> I just like to complain a lot.
>
> I have no right to complain. Redis has been my full time job for over a year. Without Salvatore, I’d probably be eating dirt on a beach in Monaco because nobody else wanted to hire me (though, Monaco beach would be nicer than a winter in NYC).
That's not true, you contributed many things lately, so you have right
to complain ;-)
> Currently, the Redis development process feels hostile to outside developers and outside contributions. (even my small fixes get ignored, and I’m _amazing_: https://github.com/antirez/redis/issues?q=is%3Aopen+author%3Amattsta)
>
> Developers often “test the waters” by submitting a small patch. If the patch is acted on, they’ll try to contribute more fixes or features. If they get ignored, they go away and never come back. When patches get ignored for years, they don’t bother to get more involved with the project. So, Redis has a very small pool of full time developers to help because Redis doesn’t *want* help. Redis wants to be left alone. (yes, this is attempted to be fixed below.)
>
> So, historically, there aren’t really “Redis developers” in the open source community because most non-bugfix contributions get ignored or rejected.
$ git log | grep Noordhuis | wc -l
518
$ git log | grep Stancliff | wc -l
89
Does not look like an inexpugnable castle to me, but yes, there is a
barrier to entry that is large due to project focus, quality
requirements, and, lack of time, in some random order.
> A good example is Bill’s great post about the Redis process itself from after the dev meeting in October with no replies (I blame myself for that too):
> "Redis Improvement & Community Discussion"
> https://groups.google.com/forum/#!topic/redis-db/cUYrsp8Q7I4
>
> Bill is there practically begging to help, but… no go. no va. imbranato.
I'm ok with many Sentinel changes he proposes, but I found not time to
reply unfortunately.
Sorry Bill, the changes you propose to Sentinel are interesting for
me, and I remember you reported a pathological condition where a
sentinel is monitoring too many masters and/or when there are too many
sentinels, were you observed a delay. I think about it from time to
time, but then there is something else, and is gone from my head.
>> Also a lot of this depends on the story of the project. Core teams
>> often are a result of the original project leader to step back (this
>> happened both in the Tcl and Node.js case), or, the project entering a
>> larger software institution of some kind.
>
> There’s also a middle ground where outside contributions are discussed, refined, and compromised on until they fit the project.
> See things like:
> - https://www.python.org/dev/peps/pep-0001/
> - http://www.erlang.org/eeps/eep-0002.html
> - https://github.com/erlang/otp/wiki/EEP-light
I think this would not help with our small project, or at least, not
as much as a redis-dev mailing list with is lower traffic. We can just
talk there.
However lately I tried multiple times to get feedbacks here before
implementing stuff, but got very little replies.
We can't fix a lack of resources problem by writing RFCs. We would end
writing most of them ourselves. It's a lot better if we just write
messages in the mailing list.
>> When the benevolent dictator reviews a patch and let
>> it enter the project, there is a transfer of accountability from the
>> original committer to the project leader: she or he will stay late at
>> night to fix bugs in the contributed code if there is some critical
>> stuff.
>
> See, that’s the problem there—the “project leader” shouldn’t be the only person responsible for fixing all code in the entire project forever.
>
> Look at Linux. Is Linus out there *fixing* code (or even writing code) any more? He’s just there to yell at people, merge, set policy, and make releases, but he still runs everything.
>
> It’s arguable whether one person can do all code development and complete community management for a very popular open source project.
Do you think it is a comparable setup? This model scales as there are
many people involved into a project. The many people involved with
Linux, are, 90% (or more?) payed by companies.
Let's see how cool is OSS in practice: I write code for Redis because
I'm payed. You write code for Redis because you are payed, you were a
Redis user before, but Pivotal was not sponsoring your work, so no
much from you, and know we see you are capable of great contributions,
like quicklists. Pieter wrote a lot of code for Redis when he was
payed to do so, and so forth.
Most of the OSS development you see in system software like MySQL,
Linux kernel, and so forth, is form developers that pay the bill with
it.
So IMHO Redis can't be handled like Linux because it is not a big
enough project, there are not enough companies interested in
sponsoring developers,
and si simple enough that people interested in
new developments can more easily fork in-house and do what they need.
So as long I write a big percentage of the code, I'm going to be able
to fix a big percentage of the code.
>> In the core team is different but not so much if the core team is
>> composed of contributors *constantly working to the project*. If a
>> patch is voted by the majority as "ok", there are at least 50%+1 that
>> will be willing to fix problems.
>
> If a core team must vote to override other team members on issues, the core team has already failed.
Not sure about this. A core team votes by majority I guess to get new
things inside. If there are 3/5 votes ok, there are 3 developers that
endorse a given change and will work on it.
> If we can’t find anybody else to “share the vision,” then where is the flaw? If nobody agrees with what I say is right, am I actually correct?
Before to agree, there is the initial problem of having the 5 core
developers.
Once you have N people working constantly to the core, you
can scale and say, what about doing this core team stuff?
So the problem is that there are no contrib. But actually it is slowly
happening now, and there are a bit more contribs and they are around
for some time now. And I don't think I'm less an asshole I used to be,
it's just that the project is more mainstream, there are payed people
working at it, and new enthusiasts (that if not payed soon or later
stop contributing, likely).
> Current Redis contributors are just a small pool of crazy people (in a good way) who enjoy the work even when they get ignored for a while. More developers could show up, but it requires a community cultivation and openness.
>
> Sometimes contributing to Redis feels like being a 5 year old jumping around saying “look at me! look over here! look what I can do!” just to get the attention of the authority figure who can shine the light of merging and feedback upon you.
I'm sorry I've no more time than I've. When I see contributions which
I conceptually accept, are well implemented, and complete, I try to
just hit "merge".
For example your work on quicklist is pending because there is a
blocking thing about RDB format, which is otherwise a regression
compared to the past, and does not allow Redis Cluster to benefit from
quciklists enough (actually it makes migrating small lists much slower
than before).
Your work on Geocoding is pending because it needs to get a
refactoring to avoid duplicating a lot of code which is common with
sorted sets.
The two above are not ignored, but still not ready to be merged.
Sometimes it's me. For example I've still to read the JSON thing, but
I de-prioritized it because the initial feeling makes me thing it's
better to look at other patches than JSON. Maybe I'll read it and
think, wow, that's what we need, but it is unlikely. So I sent time
looking at quicklists, geocoding, IPv6 fixes, and other stuff you
contributed.
>> If there are other people that say "Let's add this", I
>> want to see them to fix stuff when shit happens, otherwise it's
>> unfair.
>
> Core contributors/team members are responsible for everything else too (or their own specializations), not just adding their own pet projects. :)
>
> Specialization is a good point too (thanks, me, for bringing it up). Right now, antirez is responsible for: creating new features (allowing new commands, making improvements to existing infrastructure), fixing existing features (data structures, networking, event loop, config parsing, dependency management/upgrades, …), making releases, merging contributions, creating custom distributed systems, creating custom file formats, writing documentation, merging documentation, running the website, testing everything….
>
> At any given time, only one thing is being worked on, but other things may also need improvements too.
>
> The best I can do right now is try to pre-approve everything and try to guess what antirez wants for patches/improvements/code quality review.
I can't see how this is the case. Again, quicklists: it was a clearly
needed feature, you implemented this, I'm willing to merge.
This is parallelization. Note that you did not had to ask me if this
was going to get merged.
> If the filter is also the main developer, the community will always fall behind.
What is the other viable setup? Here we are talking mostly of
contrib-and-run-away contributors. If patches are not reviewed, is a
big problem in a few weeks / months.
>> Redis I'm currently the main contributor of code, so this is not possible.
>
> Well, you’re the main code contributor, release maintainer, feature planner, maintenance do-er, and a dozen other things. :)
>
> If I’m driving on a long trip and keep saying “I’m the main driver, nobody else can drive,” I can’t feel bad about not having any help while driving.
Ok, basically, I lost you a bunch of lines before this point. I'm here
replying but I don't understand what you mean anymore.
Let's be clear: do you think we have a possible, theoretically large
(3, 4, 5?), pull of Redis core developers, constant in time, that
provide quality work, so we can run the project as a distributed
effort?
When I'm quite a few weeks, nothing happens.
If you remove your latest
contributions, it is very rare to see *anything* of big. So I don't
understand what we are talking about.
I'm driving because I'm mostly alone. Now you are contributing, and I
try to merge your code with some priority compared to any other
contributor, of course. But also your hacking time must be aligned
with the project needs.
> Very true. People won’t contribute big fixes and improvements if their small fixes get ignored. Contributors want their (useful) work to be added, not sit around for years untouched.
I'm trying to react faster, but this does not mean to merge stuff
which is not ok IMHO.
>> When a PR violates the project vision or code quality or whatever, I should
>> reply ASAP with a short note and close it.
>
> Note the use of terms there: “project vision,” “code quality,” “whatever.” — Those are personal issues that can’t be delegated. If the project is 100% What-antirez-Wants, then, provably, other people _can’t_ help too much.
I believe it is sensible that I approve new features, honestly. I
understand you don't like it, but I really believe there is value in
having a small project.
You should really release your fork with loadable modules, JSON, Geo
API as-it-is, and everything else. Maybe a different model is
possible.
However I don't want to have a project that grows into directions I
think are not good, I'm more happy with a slower growth.
> But, today there are over 2 million developers who use Redis at over 100,000 companies. Does having one person be the gatekeeper for the needs of _everybody_ still work?
Depends on what you want the output to be. A small reliable software?
Yes, can work. A bigger software that handles more use cases? Probably
not.
However I don't see the issue black or white like you. Give me more
long-term developers, and I can put them to do good work.
I've a huge list of things that are priorities... and there is an
issue open. Those stuff are obvious merge-them if implemented
correctly, and I would sure help to point in the right direction if
the first implementation is not perfect.
But you say all the people in queue to write those parts are away
doing something else because my way of handling the project.
> We can’t have outside contributors if the guideline for getting things added is “What antirez wants” because: valid fixes and contributions will be rejected if they don’t fit the unspoken "design-in-antirez-head" _and_ it essentially turns all contributors into personal assistants to Dear Leader instead of people who have their own goals and get their own rewards.
get-random-stuff-inside is way worse, IMHO.
"Fear makes the wolf bigger than he is."
— German proverb
Btw in your reply it sounds like that in my original message I was
saying: you can't get stable things because I'm better than you. This
is the contrary of what I think, a lot of the conservative parts of
Redis are as they are because I think programmers should be a bit more
humble and say: writing system software is hard, and I can't pretend
that without a lot of care, conservative development and/or much
testing, reviews, and such, I'm going to ship high quality code. What
puzzles me a bit about all this discussion is that nobody said, yes
Salvatore, you are an asshole and PRs are not handled forever, you
have to read every single line of what gets into, contributors are
turned down, BUT Redis runs for years in productions, is regarded as
one of the most stable C projects out there, and even if ran by a lot
of people with a big number of total instances actual stability bugs
are rare. Not because I want to hear "Hey Bravo!" but because is an
obvious tradeoff we need to capture if we want to change the model and
still ship quality software.