Return-Path: X-Original-To: apmail-couchdb-dev-archive@www.apache.org Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0682295B8 for ; Sat, 14 Apr 2012 03:39:51 +0000 (UTC) Received: (qmail 36308 invoked by uid 500); 14 Apr 2012 03:39:50 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 36026 invoked by uid 500); 14 Apr 2012 03:39:49 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 35990 invoked by uid 99); 14 Apr 2012 03:39:48 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 14 Apr 2012 03:39:48 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_NEUTRAL,TO_NO_BRKTS_PCNT X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [209.85.214.180] (HELO mail-ob0-f180.google.com) (209.85.214.180) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 14 Apr 2012 03:39:44 +0000 Received: by obbwc20 with SMTP id wc20so2569343obb.11 for ; Fri, 13 Apr 2012 20:39:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:x-gm-message-state; bh=L+HWAHX3tQw66OT8u6eL6Vkh93H8yphOWAdeJLHx9hE=; b=PQJLwrZ6K+CQBEynVJk2+YmmEzk5Xrn8kuZVy7aLmIBF0Pm9itjxrLWZ81ZKfg4hpN ceAAciWsqA72dq2mKzZOsBqzFXy75Tn1jUrkvy9mxZtqf9YrV2HW0mL3nYhiw4HUX/Nd ZNbvFFuP0DIeIW2G227R1Gi2M7GcANALxMIk6+hp4lJ+I5GMG5GgB7uIJvmt+q5v+LHK V09XSUyWI/hltcDx/lHleqhO0yLj4sWfBQ0/Tb2CI3Cn7OP77DDEogKPWitdDlPmi33C vgRpQUad/DIVA0JX+2rVsE/F6/7FExAlpRAhtrer/zXwdr8RPgvXyajDs11R/mtU/yQe qh4A== MIME-Version: 1.0 Received: by 10.182.52.104 with SMTP id s8mr5101898obo.59.1334374762945; Fri, 13 Apr 2012 20:39:22 -0700 (PDT) Received: by 10.182.81.164 with HTTP; Fri, 13 Apr 2012 20:39:22 -0700 (PDT) In-Reply-To: References: Date: Sat, 14 Apr 2012 15:39:22 +1200 Message-ID: Subject: Re: (perceived) barriers to entry From: Tim McNamara To: dev@couchdb.apache.org Content-Type: text/plain; charset=UTF-8 X-Gm-Message-State: ALoCoQkxnqHf5WcGu+f70hK3ByN38Laike2AAOlxoj8X9XDGMdj9asrSe5yVYWortg6I2yx/XcaO X-Virus-Checked: Checked by ClamAV on apache.org Thanks to everyone who has responded to my points. It's really encouraging to hear everyone's supporting thoughts. On 12 April 2012 00:22, Paul Davis wrote: > On Tue, Apr 10, 2012 at 8:46 PM, Tim McNamara > wrote: >> After chatting with Noah S on Twitter, I offered to jot up some >> thoughts on things that my reduce or eliminate perceived barriers to >> entry to work on CouchDB. >> >> Here are a few things that I've been able to think of. In the course >> of researching this mail though, I've actually answered many of my own >> questions. >> >> "serious business" >> A database seems like the kind of project that only extremely talented >> people would touch. People depend on the code working. Getting started >> would require quite a bit of confidence. Am I good enough? >> > > @antirez of Redis fame did a really great post on data durability a > couple weeks ago. If you read and understand that you're briefed > enough to start diving into the code. Beyond those basics the advanced > details are more about learning the details of how certain types of > hardware reacts to those POSIX API's. Ie, stuff that @antirez alludes > to but doesn't cover (non-volatile write caches being a fun one). > > http://antirez.com/post/redis-persistence-demystified.html > > >> >> "Erlang, wtf" >> This is a barrier that I've been facing for a while. I'm actually in >> the process of learning Erlang, trying to expand my horizons from >> Python. Still, a new language makes it harder to have the required >> confidence. >> > > Heh, I still say "Erlang, wtf?" after using it for a few years. But I > think that's true of any language I've used for any extended period of > time. As much as I love Python it's still got its warts (outer > variables not captured by closures?). > > In the end I would wager that a big part of the Erlang stumbling block > is that it's also functional and that is a stumbling block for some. > When I started with it I was like "oh, its one of those academic > things the CS people dreamed up," and didn't get into it right away. > But once you get into it you realize its not as hard as you made it > out to be. > >> >> "I still don't understand rereduce" >> I'm personally not 100% clear on how queries work. This is even after >> using the db for a while. I don't want to look like a stupid idiot in >> front of great developers. Therefore, there's a high risk of offering >> suggestions and getting told to "RTFM" >> > > For this I would say come ask in IRC or on the dev@ list. There are > also some older resources that still do a decent job of describing the > internals. But I would say no one expects any new comer to jump in and > tackle some of the core modules without first learning how they're > used in other places in the code. > > http://horicky.blogspot.com/2008/10/couchdb-implementation.html > >> >> "Where are the easy bugs?" >> [solved] >> >> >> "wow, big code base" >> Is there any documentation on how to project is laid out? Stepping >> into a new project is always a little daunting. >> > > You're joking, right? :D CouchDB is something like 15K lines (although > in a weird language and not as clean as it could be) but compared to > other similar databases that's absolutely tiny. > > That said, there's not much excuse for us to not have documentation on > code layout and the internal and external APIs and so forth. Hopefully > we'll be doing some work in the next few months to try and address > this issue. > >> >> "Apache project?" >> As someone outside of the ASF, I don't really know what contributing >> on an Apache project means. > > Don't worry about this. As you start contributing its the same as any > other open source project since the beginning of open source. Look at > the code, make a change, submit it back. > > Other than that, I would say if you're interested in contributing to > pick one section of the code base and start reading and trying to > understand. Do some hacking and see if you can break it or change its > behavior in fun ways. My personal quest into the internals started at > the HTTP layer, worked into the view engine, and then finally to the > actual core. For me that was just what I found interesting at the > time. I could see another approach to start at the level of couch_file > and work outwards if that seems more approchable. > > HTH and always feel free to ask questions, > Paul Davis