Return-Path: Delivered-To: apmail-incubator-harmony-dev-archive@www.apache.org Received: (qmail 39154 invoked from network); 2 Nov 2006 20:28:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Nov 2006 20:28:37 -0000 Received: (qmail 92346 invoked by uid 500); 2 Nov 2006 20:28:46 -0000 Delivered-To: apmail-incubator-harmony-dev-archive@incubator.apache.org Received: (qmail 92312 invoked by uid 500); 2 Nov 2006 20:28:45 -0000 Mailing-List: contact harmony-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: harmony-dev@incubator.apache.org Delivered-To: mailing list harmony-dev@incubator.apache.org Received: (qmail 92303 invoked by uid 99); 2 Nov 2006 20:28:45 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Nov 2006 12:28:45 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: local policy) Received: from [66.11.181.4] (HELO griffin.griffaction.ca) (66.11.181.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Nov 2006 12:28:32 -0800 Received: from localhost ([127.0.0.1]) by griffin.griffaction.ca with esmtp (Exim 4.50 #1 (Debian)) id 1GfjAY-0005Ta-Tn for ; Thu, 02 Nov 2006 15:28:11 -0500 Message-ID: <454A53EE.9040505@sablevm.org> Date: Thu, 02 Nov 2006 15:24:14 -0500 From: Etienne Gagnon User-Agent: Debian Thunderbird 1.0.2 (X11/20060927) X-Accept-Language: en-us, en MIME-Version: 1.0 To: harmony-dev@incubator.apache.org Subject: Re: [classlib] Preprocessor - CHECKPOINT References: <8E389A5F2FEABA4CB1DEC35A25CB39CE694EF8@mssmsx411> <45473BA9.1070709@gmail.com> <45474144.5060108@pobox.com> <4547431C.5080000@pobox.com> <3b3f27c60610311705q1cb2aeb1wa78d0c55fb7f026b@mail.gmail.com> <4547F8D5.9040409@pobox.com> <454870F8.8080302@gmail.com> <454884DC.7070806@pobox.com> <4548A644.6060403@sablevm.org> <4548BB62.7050503@sablevm.org> <45496DA6.9000708@pobox.com> <454A3BE6.7000008@sablevm.org> <454A3D9F.3090904@pobox.com> <454A4185.6070700@sablevm.org> <454A4A9A.4090509@pobox.com> In-Reply-To: <454A4A9A.4090509@pobox.com> X-Enigmail-Version: 0.91.0.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigF20AF206A936CF04EA4A1592" X-Virus-Checked: Checked by ClamAV on apache.org --------------enigF20AF206A936CF04EA4A1592 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Geir Magnusson Jr. wrote: >> The "communication" aspect of 2 can be quite helpful when doing >> system-wide changes. Just think about the effect of simply doing a >> system-wide reindentation of source code; this is a nightmare when >> developing using branches, as diff/merge tools are line-based, not >> syntax-based. So, if your new indenter moves things across lines, >> you're in hell. >> > > So here's where I'm starting to believe I'm missing something important : > > Can you give me an example of the "communication" that you imagine > taking place here? That's the part I'm just not grokking here. How about: j2se5 developers, seeing that his planned modification to some code will lead to utterly broken nearby j2se6 (commented) code fragments, steps on this mailing list and asks j2se6 developers to help him find the most harmless way to do the change (or, at least,warn them about the problem)? >> I am not saying that using the tool should replace using branches for >> all situations, but there are situations where it would be more >> effective not to use branches when the code is mostly identical. > > I want to avoid branches at all costs. [somewhat off-topic] I think that we should consider tools/approaches on their merit. Sometimes, branches are the right solution... You wouldn't want to use syntax-processing instead of branches for managing sandboxes. ;-) > Clearly there's some confusion here. My goal is to > > 1) Avoid branches at all costs so we can share as much code, and get as > much benefit for collaboration between different versions, and different > platforms, if that happens. Agreed. > 2) make it simple to work in either the 'master' code, or the 'target' > code through tooling, including standard IDE activities like debugging Agreed. > > 3) make it easy for users to report bugs based on 'target' code, > including patches and line numbers Ah! That's something to add to my requirements. Fine! I hadn't included the "patches" thing into account. It doesn't break what I've exposed so far; it simply adds to it. > What I've suggested is : > > forward(X, platform) -> Y > > reverse(X, platform, Y') -> X' OK. I see this in *addition* to: forward(X, devtarget) -> Y reverse(Y') -> X' So, to simplify the discussion, let's rewrite your proposal as: forward(X, releasetarget) -> Y reverse(Y',X,releasetarget) ~~> X' (possibly reporting conflicts/problems) That's neat. I like it. Yet, we would encourage developers to work and submit patches using devtarget code, instead of releasetarget code. In other words, here's how I see the distribution(s): - Binary j2se5 Harmony release: includes j2se5release src.jar for end-developers using debuggers to step through API code. - Source j2se5 Harmony release: API are in j2se5dev form. The build process uses the processing tool to generate j2se5release src.jar. - Binary j2se6 Harmony release: includes j2se6release src.jar for end-developers using debuggers to step through API code. - Source j2se5 Harmony release: API are in j2se6dev form. The build process uses the processing tool to generate j2se6release src.jar. Why? Because reverse works much better with devtarget than releasetarget code, and the communications benefit of devtarget that are lost in releasetarget code (because of stream code erasure). In addition, using smart IDEs, there wouldn't be much difference for developers between the "visible" formats of dev vs release code when working on it. > for X being a single class. To produce a complete target source base, > walk the single source tree as defined by a 'platform descriptor' : I don't really understand the "platform descriptor" thing, yet I think that it is, somehow, an orthogonal issue to the discussion above. [Remember my long message describing 2 levels of processing: file/directory-level and source-level.] My first prototype tool would attack source-level processing (discussed above), to validate the approach. Maybe you could try rephrasing your file/directory-level (right?) proposal? How does it differ from Tim's proposal? Etienne -- Etienne M. Gagnon, Ph.D. http://www.info2.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ --------------enigF20AF206A936CF04EA4A1592 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFFSlPujyrJi4rH84gRArgYAKCBBZWX38UsG7XFsF8b1AgS3RWaUQCdGx6P Kqzg25w68JNhs+18GH35DCo= =z8i/ -----END PGP SIGNATURE----- --------------enigF20AF206A936CF04EA4A1592--