Boost logo

Boost :

From: Eugene Lazutkin (eugene.lazutkin_at_[hidden])
Date: 2002-10-25 22:40:02


> Just for the sake of argument, let's say that I could implement my
> own regex-like needs in 25K instead of the 'bloated' 50K from regex++
> ... are you really saying that the extra (let's be pessimistic and
> round it up) 10 seconds will stop a users from downloading an app?

Hand-made code was about 1k --- we didn't require full-blown regexp on
dynamic patterns. Anyway, I am really saying that space considerations are
still valid in age of Internet. In our case it was not a function of money
("1G of HDD now costs N times less that in 1962!"), it was function of
user's patience. Please see below.

> The question *I* would ask of this hypothetical average user would
> be:
> Are you willing to spend an extra 10 seconds in order to allow the
> developer to use a mature, well-tested, publicly reviewed library
> (even for simple things) instead of reinventing it every time with
> the implied chance that he or she gets it wrong somehow?

We didn't ask hypothetical user. We used real users. :-) But I would love to
see results of your poll.

> I think we should be very careful about drawing quick conclusions
> about how much average users are willing to download.

True. And I know already how to measure user's willingness. :-) The correct
way to do it is to change size of downloadable component while measuring
abandonment rate. 1000 attempted installations per sample size should be
enough to determine cut-off size. According to our results after about 3
minute wait user suspects that something is wrong (like network problem) and
abandons installation en masse. It turned out that typical speed is <=
28800. Which gives ~500k size.

Real application uses several libraries. If 10 libraries will give 50k
overhead _each_ (see size restriction above), we will range them by
importance (less important would be axed, if possible) and/or complexity
(less complex would be hand-coded, if possible) and deal accordingly.
Example: IPL was axed because of size problem, all required functionality
was hand-coded in MMX. One more wheel was reinvented. :-(

> Just for fun I went to a popular general download site,
> www.tucows.com, and looked at their top 15 downloads. The average
> size of those 15 most downloaded apps was ~7.5 MB. This is not meant
> to prove anything, just a reminder that there *are* other criteria
> than executable size that decide whether users will download your
> app.

Many people download Linux distros (several gigabytes!) and they don't
complain! :-) Of course size of executable is not critical for some
applications. If you reread my initial post you will see specifics of our
case. There is no specialized/niche functionality --- it is an application
for average person in some competitive area. We don't bundle it with major
browsers. We don't sneak it in with third-party software. There are no
managers requiring all employees to install it. People who use it are not
even computer professionals. Many of them "just browse the web". ~99% of
them will not understand you hypothetical question just because they have no
idea about software development process. That is why we use auto-install
feature of ActiveX. And size does matter in our case as was shown by careful
analysis.

> Note, that this is not an argument against refactoring regex++ (if
> that is needed and doable), but just an argument for putting
> executable size in its place along with all the other factors in
> software development.

I agree. But truly universal libraries should take in consideration as many
factors as possible. That is what I am trying to say.

Thanks,

Eugene


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk