public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Stuart Herbert <stuart@gentoo.org>
To: Max Kalika <max@gentoo.org>, Troy Dack <tad@gentoo.org>,
	gentoo-dev@gentoo.org
Subject: Re: [gentoo-dev] [GLEP] Web Application Installation
Date: Mon, 4 Aug 2003 11:43:47 +0100	[thread overview]
Message-ID: <200308041143.51723.stuart@gentoo.org> (raw)
In-Reply-To: <5291843.1059946159@[192.168.23.5]>

[-- Attachment #1: signed data --]
[-- Type: text/plain, Size: 11455 bytes --]

Morning, Max,

On Monday 04 August 2003 5:29 am, Max Kalika wrote:
> I don't know if I'm being overly abrasive -- the weather is really hot, and
> I think I ate something that didn't agree with me. Please don't take
> offense at anything I say. :-)

Don't worry - I only take offense at offensive people, not offensive words.  
And I hope nothing in my replies offends you either.

As you can tell ;-) I believe that a good debate is healthy, as it improves 
everyone's understanding of situations beyond their normal experience, and 
helps to identify the common ground.  It's just a shame that so many people 
today seem to have closed, narrow minds, and find discussion more of a threat 
than of value :(

> Quoting Stuart Herbert <stuart@gentoo.org>:
> > True.  But most webapps will rely on the webserver to handle the virtual
> > hosting side of things - and that's something we *can* support through
> > user-space tools.
>
> Eh?  Elaborate please.

Apache supports virtual hosting already.  Tools such as phpBB and tikiwiki and 
phpMyAdmin (to give but three examples) don't need explicit virtual host 
support, because Apache handles that.  To run a copy of phpBB under two 
different domains hosted on the same box, you install two copies of phpBB - 
or at least simulate that situation using symlinks or whatever.

I've no experience with Horde, I confess.

> > Problem with that is that it prevents 'emerge -u world' from being
> > something  that you can safely put in cron.
>
> How is that?  Aside from the fact that no sysadmin who values his/her job
> would do this on a production system, I don't see why this would be a
> problem/impediment?

Scary as I find it, one reason why many of my clients run Debian rather than 
Gentoo on their production hardware is because they do that from a cron 
script, and trust the results.  Personally, I've always introduced staging 
platforms in environments where I've been wearing the Release Manager hat.

> Correct, which is what eclasses are for.

Agreed ;-)  And that's what I did ;-)

> Ugh!  Won't this get in the way when we actually try to implement this GLEP

Possibly.  But I really wanted to clear out some outstanding bugs from 
Bugzilla, and adding the eclass made it easy to do.

> (most of which is already done by my eclass).  

Okay, here's my personal look at your eclass.  None of my comments are meant 
to be personal, or disrespectful!

1) Your eclass doesn't correctly (as I understand correct usage to be!) 
support the apache2 USE flag.  Easy enough to do - see my webapp-apache 
eclass for an example.
2) Your eclass doesn't specify the permissions that the source files should be 
installed under.  Again, easy enough to fix.
3) Your eclass doesn't provide support for running multiple copies of the same 
app on the same machine.  This is a showstopper.
4) Your eclass requires the admin to stop and start Apache as part of the 
install.  This is a showstopper.  Not every site will want to stop and start 
their web server just because they've installed a new app.  Imagine a site 
hosting hundreds of domains, and having to take them *all* offline at the 
same time just because phpBB's been upgraded (for example!).  Robin's idea of 
creating .htaccess files under the document root deals with this much more 
managably - although I think we're gonna end up using symlinks, as that'll 
make it easy to support multiple web servers.
5) I'm against users having to run 'ebuild /var/.../something.ebuild' after 
installation to then complete the install.  If you're emerging enough 
packages, it's easy to miss the notification that you need to do this.  It's 
personal preference, I guess, but I've been caught out by this in the past.
6) I *like* the idea that check_php() is in this eclass, because that check is 
specific to mod_php under Apache.  I'm gonna steal that and add it to my 
webapp-apache eclass ;-)
7) Your variable names are not generic enough for my liking ;-)  AWEB_CFG, for 
example, might be better off being WEBAPP_CFG.
8) Instead of trying to supply an all-encompasing apache-webapp_src_install(), 
relying as it does on defining global variables, I'd have supplied a number 
of individual functions to do each bit.  Say, a webapp-install-appconfig, 
webapp-install-serverconfig each taking parameters (this is off the top of my 
head here ;-)  This is a personal preference thing.
9) If I'm not mistaken, your eclass does nothing to ensure that the webapp can 
find the configuration files you've moved into /etc/webapps/$PN/.  
Personally, I'm coming to the conclusion that /etc/webapps/$PN/ isn't a good 
idea, because again it doesn't support the idea of running multiple copies of 
the same app on the same machine.
10) I'm coming to the conclusion that 'emerge -u <webapp>' shouldn't overwrite 
the older version, but should always install alongside, in a different slot, 
so that sites can easily run different versions of apps as required.  Perhaps 
this should be configurable somehow?  Your eclass doesn't make this possible.

I'm not saying that my eclass is better.  My eclass isn't trying to address 
this GLEP - it's just trying to make maintenance easier for now.  The show 
must go on.  Especially as this GLEP isn't even showing up on the GLEP list 
yet.

> The way you did it has already been tried and shot down:
>
> <http://www.gentoo.org/cgi-bin/viewcvs.cgi/eclass/Attic/apache.eclass?hidea
> ttic=0>

That eclass, and the one that I added, are different in important ways.

> Double Ugh!  

Lots of laughter.  I'm gonna copyright that phrase, I think ;-)

> See these please:
>
> <http://marc.theaimsgroup.com/?l=gentoo-dev&w=2&r=1&s=apache.eclass&q=b>

Okay, let's knock down those ninepins.  Here's the list of objections from the 
posts in the archive, and here's my responses:

1) Apache1/Apache2 conundrum

My eclass uses the detection technique adopted for mod_php, and no-one has 
complained about that.  If this eclass is invalid, then so's the ebuild for 
mod_php.  And I don't think it is.

2) Support for multiple DocumentRoot configurations, and also
3) Binary packages installing on machines with different DocumentRoot values

Until the GLEP is firmed up and approved, we don't have an agreed solution to 
implement.  

For now, what I've done is backwards-compatible with the situation today, 
while we wait for the GLEP to mature.  Let me say that again.  The *existing 
ebuilds* in Portage already did things this way.  I haven't introduced new 
behaviour - I've just hovered up the duplication.  And that's a worthy thing 
to do.

Please excuse me, but I don't want to put support for existing ebuilds on hold 
while we debate the GLEP.  I believe that we *have* to continue support until 
we're ready and able to switch.  Stopping maintenance activities is *not* an 
option.

4) Which user/group to use

My class uses Robin's suggestion, and assumes that Apache is running with the 
default settings of apache.apache.

5) DocumentRoot pointing to a read-only mount

As far as I'm concerned, that's like trying to do 'make bzlilo' with /boot not 
mounted, or run an 'emerge' with /usr mounted read-only.  It's the sysadmin's 
job to make sure that any necessary filesystems are mounted read/write before 
an installation is attempted.  This is not a problem unique to web 
applications.

6) "it's weak"

That's not an argument, it's an opinion ;-)  Anyway, I've taken 5-10 lines of 
broken and incorrectly duplicated code from a number of ebuilds, and moved 
them all into one place where they can be re-used and maintained for now.  
Reduced defects is a strong argument, not a weak one.

After that, the discussion is more about the Apache 1 / Apache 2 slotting than 
about web apps itself, except for continued discussion about an equivalent of 
/usr/share/webapps/ that made its way into the GLEP.

> See, this GLEP was more about where/how to install these ebuilds and not
> about their place in the tree.  

Then I'd argue that the GLEP is incomplete in its scope, and needs expanding.  
Unless you think that we can create the 'web-xxx' categories without a GLEP?  
If so, then fair enough ;-)

Actually, I'd like to see a redrafting of the GLEP, with a clearly defined 
list of requirements for supporting webapps.  We're debating implementation 
issues without a clear list of requirements to address.  This is not the 
right way to go about it ;-)

> I held off including at least 10 ebuilds
> waiting for the outcome of this discussion, but now you jumped the gun.

Not really.  All I've done is moved some duplicated (and broken) code out of 
some ebuilds, and put it into one eclass, so that I could address a number of 
open bugs.  It *was* fix-a-bug weekend ;-)

I am going to be adding a webapp or two that use the new eclass, but the 
situation's no different to before the eclass existed.  The code in the 
eclass would have had to have been duplicated in the new ebuilds.

> Hopefully the transition can be painless.

Agreed that'd be nice ;-)

> Well, perhaps a question in the original GLEP should be readdressed.  I'm
> beginning to strongly agree with:
>
> [snip]
>
> Flexibility is one thing, maintainability with a limited developer time is
> quite another.  The balance between the two is critical.

That's why you get the framework - the eclasses - in place to handle all of 
this.  If it's done right, then maintaining individual packages becomes 
*easier*, and takes *less* time.

Think about it.  Think about having to manually install a package under a 
different web server (a manual process, and therefore error-prone) to 
investigate a bug posted to Bugzilla.  Once you've had to do this a few 
times, it would already have been quicker to code up and test the eclasses 
and tools that we need.

If we *don't* do this, I reckon that the bugs about webapps running under 
Apache'll get addressed, and many of the other bugs won't - because it's too 
much effort.

I agree that most people will just the webapps under Apache, and never care 
about other web servers.  But either we just support webapps under Apache, or 
we do it properly, I'd argue.  And I reckon that doing it properly is 
actually very easy to do.

> I did.  It looks like a trimmed version of the original proposed by Ned
> Ludd.

I'll go back and re-read the posts then.

> But you completely ignored all my work and the GLEP which we're discussing.

See above.  My eclass isn't attempting to solve the GLEP.  It's there to help 
with existing packages for now, until the GLEP moves forward.

> My eclass follows your proposed philosophy, but you basically threw it out
> the window.  I'm confused.

> How is mod_php related to the way applications are installed?

Erm, how about the whole 'do I use Apache 1 or Apache 2' conumdrum?  See the 
mod_php ebuild for details.

Take care,
Stu
-- 
Stuart Herbert                                              stuart@gentoo.org
Gentoo Developer                                       http://www.gentoo.org/
Beta packages for download            http://dev.gentoo.org/~stuart/packages/

GnuGP key id# F9AFC57C available from http://pgp.mit.edu
Key fingerprint = 31FB 50D4 1F88 E227 F319  C549 0C2F 80BA F9AF C57C
--

[-- Attachment #2: signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2003-08-04 10:45 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-02 16:50 [gentoo-dev] [GLEP] Web Application Installation Troy Dack
2003-08-02 20:39 ` Robin H.Johnson
2003-08-02 23:11 ` [gentoo-dev] Re: [gentoo-core] " Max Kalika
2003-08-02 23:51   ` Stuart Herbert
2003-08-03  2:26     ` [gentoo-dev] " Max Kalika
2003-08-03 14:46       ` Stuart Herbert
2003-08-03 15:20         ` Max Kalika
2003-08-03 17:43           ` Stuart Herbert
2003-08-03 19:03             ` Max Kalika
2003-08-03 19:43               ` Stuart Herbert
2003-08-04  4:29                 ` Max Kalika
2003-08-04 10:43                   ` Stuart Herbert [this message]
2003-08-03  0:30 ` Austin Frank
2003-08-03  7:50   ` Tal Peer
2003-08-03 14:45   ` Don Seiler
2003-08-03 14:49     ` [gentoo-dev] Re: [gentoo-core] " Stuart Herbert
2003-08-05  3:46       ` Robin H.Johnson
2003-08-05 10:21         ` Stuart Herbert
2003-08-05  8:12 ` Troy Dack
  -- strict thread matches above, loose matches on Subject: below --
2003-08-04 17:11 Max Kalika
2003-08-04 22:16 ` Stuart Herbert
2003-08-05  9:49   ` Michael Cummings
2003-08-04 23:16 Max Kalika
2003-08-05  0:14 ` Stuart Herbert
2003-08-05  2:30   ` Donny Davies
2003-08-05 10:12     ` Stuart Herbert
2003-08-06  4:01       ` Donny Davies
2003-08-05  3:04   ` Max Kalika
2003-08-05 10:39     ` Stuart Herbert
2003-08-05  9:34   ` Paul de Vrieze
2003-08-05 11:19     ` Stuart Herbert
2003-08-05 11:37       ` Paul de Vrieze
2003-08-05 21:00       ` Max Kalika
2003-08-05 23:43         ` Cal Evans
2003-08-06  1:54           ` Stuart Herbert
2003-08-06  2:16             ` Robin H.Johnson
2003-08-06  2:44               ` Stuart Herbert
2003-08-07  1:08 Troy Dack

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200308041143.51723.stuart@gentoo.org \
    --to=stuart@gentoo.org \
    --cc=gentoo-dev@gentoo.org \
    --cc=max@gentoo.org \
    --cc=tad@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox