Return-Path: Delivered-To: apmail-continuum-dev-archive@www.apache.org Received: (qmail 55219 invoked from network); 11 Apr 2008 06:49:00 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 11 Apr 2008 06:49:00 -0000 Received: (qmail 60271 invoked by uid 500); 11 Apr 2008 06:49:01 -0000 Delivered-To: apmail-continuum-dev-archive@continuum.apache.org Received: (qmail 60118 invoked by uid 500); 11 Apr 2008 06:49:00 -0000 Mailing-List: contact dev-help@continuum.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@continuum.apache.org Delivered-To: mailing list dev@continuum.apache.org Received: (qmail 60109 invoked by uid 99); 11 Apr 2008 06:49:00 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Apr 2008 23:49:00 -0700 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [210.50.76.235] (HELO mx06.syd.iprimus.net.au) (210.50.76.235) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 Apr 2008 06:48:06 +0000 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjMBAPam/kfKQ1mw/2dsb2JhbAAIqn0 X-IronPort-AV: E=Sophos;i="4.25,639,1199624400"; d="scan'208";a="107927406" Received: from unknown (HELO [192.168.237.213]) ([202.67.89.176]) by smtp06.syd.iprimus.net.au with ESMTP; 11 Apr 2008 16:48:24 +1000 Message-Id: <0B4BED0C-0418-4B85-8891-9F99C138DD56@apache.org> From: Brett Porter To: dev@continuum.apache.org Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v919.2) Subject: separating the builder code from the UI Date: Fri, 11 Apr 2008 16:48:18 +1000 X-Mailer: Apple Mail (2.919.2) X-Virus-Checked: Checked by ClamAV on apache.org Hi, I've been thinking ahead a bit about a potential design change I'd like to make. At the moment, at a very coarse level, we have the "Core" which does just about everything :), which is comprised of a few modules, and the webapp/xmlrpc sitting on top of that. It looks something like [1]. It is pretty well separated from the UI, but the parts of the core are not well separated and hard to test, and the store/model is pervasive through everything. I would like to propose factoring out the bit that does the building, something like [2]. This is not a totally radical change, though it will change the workflow a bit such that: * the builder has no database interactions. So it will be on the return events that contain results that get persisted in the database * notification will be based on the return events, not part of the build logic Clearly demarcating where the database is used is a Good Thing I feel, and it then becomes a way to store and visualise results. There are a couple of potential things that will later be possible with this architecture: - the requests could be made over REST and the events sent back over a JMS Q similar to GBuild - allowing us to move the builder to an entirely different server, and to have multiple builders. If each has a given set of installations/environment profiles we can then aggregate results for different platforms - you could run Continuum with just the bottom layer for a really simplified system. The only change we'd make here is that you'd hook up the notifiers and other event responses directly instead of the Q I'd like to attempt this on a branch, making the minimal amount of change possible to see how it works. What do others think about this approach? Cheers, Brett [1] http://people.apache.org/~brett/continuum-proposal/continuum-now.png [2] http://people.apache.org/~brett/continuum-proposal/continuum-new.png -- Brett Porter brett@apache.org http://blogs.exist.com/bporter/