* XEmacs 21.5.27 "fiddleheads" is released.
"fiddleheads" is the twenty-eighth in the VEGETABLE series.
The successor to XEmacs 21.5.26 "endive", "fiddleheads" adds fixes
for
two annoying bugs by Stephen Turnbull. Fixing a historical design error
in the geometry eliminated the display jitter observed when maximizing
an XEmacs frame under several window managers including metacity and
kwin. One user reports continuing trouble with kwin, but says that it
appears to be a problem of kwin. Several others report that the jitter
is fixed under one or more window managers they used. Better handling of
Xft font resources in lwlib allows specification of the font for the
buffers tab widget via X resource. There remain some issues in this area.
Steve also provided a new node on "Xft Font Customization" in the User's
Guide.
Aidan Kehoe ported the GNU Emacs facility for identifying the source file
of built-in identifiers in introspective functions like `describe-function'
and `find-function'. He also changed the Lisp reader to accept Unicode
code points rather than Mule characters in read-quoted-character (based on
a suggestion by Pete Forman), and added the "\u" and "\U" escapes for
Unicode code points in the Lisp read syntax for characters and strings.
Joachim Schrod provided a better heuristic for detecting ISO 8859 text,
which should reduce the incorrect identification of ISO 8859 texts as Big5
dramatically. The heuristic is carefully tuned to not cause the reverse
problem, but users of Asian two-byte scripts should watch for errors in
identification.
Tony Bennett contributed a patch to the code which handles process output.
This should speed up some process handling by as much as two orders of
magnitude for cases where the old code was extremely inefficient.
Jerry James added support for older versions of ALSA, based on a report by
Ilya Golubev.
Of course, there was the usual array of small improvements and bug fixes.
*Important Notices*
There are reports of problems with geometry management, likely due to
fixing the "metacity maximize" bug. These are separate bugs uncovered
by that fix, so the patch probably will not be reverted. However, you
can restore the previous behavior by setting the Lisp variable
`wedge-metacity' to a non-nil value. Either way, please report such
problems as a bug, and say whether changing the value of `wedge-metacity'
helps resolve them.
The patchkit xemacs-21.5.25-21.5.26.patch.gz was broken. I apologize
for the inconvenience. The patchkit and its detached GPG signature
have been replaced.
There are a number of undiagnosed crashes lurking, especially on the
x86_64 platform. A number of 64-bit bugs have been fixed, so it's
possible they've been fixed en passant, but since they're undiagnosed,
please be prudent, save often, and back up your essential data.
* About the XEmacs 21.5 series.
This is the development line. The current series started with XEmacs 21.5.0
(an alias for XEmacs 21.4.0 "Solid Vapor", the first release in the current
stable line). 21.5 is the code base for introduction of major new subsystems
and fixes to design bugs that experience shows will introduce instability.
So far the main effort has been on improved support for Unicode, updates to
the build infrastructure, and development of new features in memory allocation.
For general information about XEmacs, the developers, and the user community,
see our home page,
http://www.xemacs.org/
* XEmacs 21.5.27 is "beta" software.
The usual "no warranty" disclaimer (see etc/WARRANTY, sections 10 and 11)
applies. At this point in time, it is the version that most developers
are using for their daily work. However, it is certain that many bugs
remain and new ones will be introduced as development proceeds. Be sure
to take care to save your work often and follow a regular backup regime.
Note that part of the release process involves a full build and test cycle,
with no regressions. However, one build on the release engineer's host is
all the quality assurance that is done for most beta releases. Be sure to
checkpoint a known good version of XEmacs (eg, a CVS tag or tarball) before
overwriting your XEmacs source tree.
* Availability
Anonymous ftp:
ftp://ftp.xemacs.org/pub/xemacs/xemacs-21.5
See
http://www.xemacs.org/Install/ for more information about building
from source.
If you already have a 21.5.26 source tree, a patchkit is available in
xemacs-21.5.26-21.5.27.patch.gz. This does not update .elcs or .infos,
they will be rebuilt when you make XEmacs. If you have an earlier
version, you can repeatedly apply patchkits.
We thank our hosts at
Tux.org, and numerous mirrors around the world,
for providing space and bandwidth for distributing XEmacs.
Also, if you don't have the packages yet, see
http://www.xemacs.org/Documentation/packageGuide.html.
Anonymous (pserver) CVS:
Anonymous CVS is available. We are very grateful to the staff at our
host,
dotsrc.org (formerly SunSITE.dk), for a lot of help and quick
response to all our requests.
Take care that your Root is set correctly to
CVSROOT=:pserver:cvs@cvs.xemacs.org:/pack/xemacscvs
On platforms with a Bourne shell and find available, something like
for r in `find . -name Root`; do echo $CVSROOT > $r; done
will convert your entire tree.
To make it straightforward to access certain versions of the code, we have
a standard tagging policy. To update to release 21.5.27, use the update
flag "-r r21-5-27". To update to the current release without referring to
it specifically, use the flag "-r r21-5-current-beta". To update to the
latest commits in CVS, use the flag "-A". Then rebuild XEmacs.
For more details, see
http://www.xemacs.org/Develop/cvsaccess.html
or the ViewCVS interface at
http://cvs/xemacs.org .
* Brief summary of Changes to XEmacs 21.5.27 "fiddleheads"
Major Features and Backward Incompatible Changes
-- fix: better autodetect of ISO 8859 vs. Big5 -- Joachim Schrod
-- fix: shell widget geometry management (metacity maximize bug) -- Stephen J. Turnbull
-- new: read multibyte characters as Unicode instead of Mule -- Aidan Kehoe, Pete Forman
User-Visible Bug Fixes and Minor Improvements
-- fix: separate resources for fcFontName and xftFont, fixes "can't change
buffers-tabs font" bug -- Stephen J. Turnbull
-- improve: speed up read of process output -- Tony Bennett
-- improve: support more ALSA versions -- Jerry James
-- new: document Xft font customization in User Guide -- Stephen J. Turnbull
-- new: record load file name information for built-in symbols. -- Aidan Kehoe
Build Infrastructure
-- fix: update MS VC project files -- Adrian Aichner
-- improve: configure.ac: Add stubs for fontconfig configuration. -- Stephen J. Turnbull
Documentation
-- fix: remove obsolete comment at next-line-add-newlines -- Ville Skyttä
-- fix: COPYING: Update to latest upstream version. -- Jerry James
-- improve: comments in fontconfig.el, x-init.el -- Stephen J. Turnbull
-- improve: diagnostics for tab controls -- Stephen J. Turnbull
-- improve: docstrings for CL functions -- Aidan Kehoe
-- improve: geometry diagnostics in RootGeometryManager -- Stephen J. Turnbull, Francois
L'Archeveque
-- improve: reorganize beta.texi -- Stephen J. Turnbull
-- new: internals node for creating new device types -- Stephen J. Turnbull
-- new: read multibyte characters as Unicode in User Guide -- Aidan Kehoe
Lisp API
-- fix: pass a device to x-font-menu-font-data-xft. -- Jerry James
-- fix: typo in code -- Aidan Kehoe
-- improve: GNU sync of goto-line -- Ville Skyttä
-- improve: error and usage messages -- Stephen J. Turnbull
-- improve: fontconfig refactoring -- Stephen J. Turnbull
Internal API and Implementation
-- fix: 64-bit cleanliness in number.c -- Jerry James
-- fix: 64-bit cleanliness in printing lwlib resources -- Jerry James
-- fix: copy_command_builder left console uninitialized -- Jerry James
-- fix: memory leak in font initialization -- Stephen J. Turnbull
-- fix: remove spurious diagnostics in FcPattern creation -- Stephen J. Turnbull
-- fix: signedness warnings in lwlib -- Jerry James
-- fix: use of char-like types -- Aidan Kehoe
-- fix: we don't support Xft v.1, remove pretense -- Stephen J. Turnbull
-- improve: fontconfig refactoring -- Stephen J. Turnbull
-------- ChangeLog Entries from ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
2006-04-06 Jerry James <james(a)xemacs.org>
* COPYING: Update to latest upstream version.
2006-04-15 Stephen J. Turnbull <stephen(a)xemacs.org>
* configure.ac: Add stubs for fontconfig configuration.
-------- ChangeLog Entries from etc/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
-------- ChangeLog Entries from lib-src/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
2006-04-29 Aidan Kehoe <kehoea(a)parhasard.net>
* make-docfile.c:
* make-docfile.c (put_filename):
* make-docfile.c (scan_c_file):
* make-docfile.c (scan_lisp_file):
Record file name information for built-in symbols. Based on the
FSF's implementation of same.
-------- ChangeLog Entries from lisp/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
2006-05-10 Jerry James <james(a)xemacs.org>
* x-font-menu.el (x-font-menu-font-data): Always pass a device as
the 4th argument to x-font-menu-font-data-xft.
2006-04-29 Aidan Kehoe <kehoea(a)parhasard.net>
* mule/ethio-util.el (ethio-fidel-to-java-buffer):
"\u" -> "\\u" as it should have been in the first place.
2006-04-29 Aidan Kehoe <kehoea(a)parhasard.net>
* dumped-lisp.el (preloaded-file-list):
Move loadhist earlier in the preloaded-file list.
* help.el:
* help.el (help-mode-map): Add bindings to find the source code of
a function, notably when that function's in C.
* help.el (describe-function-find-file, describe-symbol-find-file):
Removed. Use symbol-file from loadhist.el instead.
* help.el (frob-help-extents):
* help.el (describe-function-1):
Allow built-in function file names to be hyperlinks.
* help.el (describe-variable):
* help.el (help-find-source-or-scroll-up): New.
* help.el (help-mouse-find-source-or-track): New.
Make describe-function a bit more mouse-friendly, basically.
* loadhist.el (symbol-file):
Support looking up builtin symbols using built-in-symbol-file.
2006-04-23 Ville Skyttä <scop(a)xemacs.org>
* simple.el (goto-line): Add optional `buffer' argument, from
GNU Emacs CVS.
(next-line-add-newlines): Remove obsolete comments from the docs.
2006-04-25 Stephen J. Turnbull <stephen(a)xemacs.org>
Repair busted commit and gratuitous doc improvements.
* startup.el (command-line-do-help): Document options for forcing
initial from on a given window-system.
* faces.el (Face-frob-property): Give informative error if device
type has no mapper function.
* x-font-menu.el (x-font-menu-font-data-xft):
* x-faces.el (globally-declare-fboundp):
Eliminate references to `fc-font-real-pattern'.
* fontconfig.el (section header comments):
* x-init.el (x-init-toolbar-from-resources):
Improve comments.
2006-04-23 Aidan Kehoe <kehoea(a)parhasard.net>
* cl.el (push):
* cl.el (pushnew):
Take on board Stephen's criticism of my last changes to the CL
docstrings.
2006-04-24 Stephen J. Turnbull <stephen(a)xemacs.org>
* dumped-lisp.el (fontconfig): Load only with Xft.
* x-faces.el (fontconfig): Require only with Xft.
2006-04-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* font-mgr.el: New file. Provides Lisp emulation of fontconfig.
* fontconfig.el: Require 'font-mgr.
2006-04-11 Stephen J. Turnbull <stephen(a)xemacs.org>
* fontconfig.el:
Add some comments on proposed generic APIs.
Remove some unused and probably broken code.
Use `fc-define-property' to define new X11 XLFD standard
properties: x11-swidth, x11-adstyle, x11-resx, x11-resy,
x11-registry, and x11-encoding.
Delete fc-font-name-property-PROPERTY constants.
(fc-define-property):
Add `fc-pattern-del-PROPERTY'.
* x-faces.el (x-make-font-bold-xft):
(x-make-font-unbold-xft):
(x-make-font-italic-xft):
(x-make-font-unitalic-xft):
(x-find-xft-font-of-size):
* x-font-menu.el (x-font-menu-load-font-xft):
Use property-specific APIs instead of defconsts for property names.
2006-04-16 Aidan Kehoe <kehoea(a)parhasard.net>
* cl.el (incf):
* cl.el (decf):
* cl.el (pop):
* cl.el (push):
* cl.el (pushnew):
Docstring clarifications; drop non-standard formatting for incf,
decf, pop, move to GNU's parameter names for push, pushnew since
they make it much easier to remember the right order.
2006-04-15 Aidan Kehoe <kehoea(a)parhasard.net>
* cmdloop.el (read-quoted-char): Use unicode-to-char instead of
int-to-char for converting code points to characters; document
this usage. This is compatible with previously documented
behaviour, since the mapping from number to character was only
stable and well-defined for ISO-8859-1. Thank you Pete Forman!
Document some help subsystem incompatibility with GNU that seems
to have been ignored during the last sync.
-------- ChangeLog Entries from lwlib/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
2006-05-12 Stephen J. Turnbull <stephen(a)xemacs.org>
Make fcFontName and xftFont separate resources.
* lwlib-fonts.h (XtNfcFontName, XtCFcFontName): New macros.
(XtNxftFont, XtCXftFont): Coalesce the conditional definitions.
* xlwmenuP.h (XlwMenuPart):
* xlwtabsP.h (TabsPart):
Rename renderFontSpec member to fcFontName.
* xlwmenu.c (XlwMenuResources):
* xlwtabs.c (resources):
Add a record for fcFontName.
* xlwtabs.c (TabsInit): Use the fcFontName resource, not xftFont.
* xlwtabs.c (DrawTab,TabLayout,TabsGeometryManager): Improve
diagnostics.
2006-04-24 Jerry James <james(a)xemacs.org>
* lwlib-Xaw.c (lw_debug_print_class_resources): Casting from a
pointer to an int throws away half of the bits on an x86_64
platform. Print as a pointer instead.
* xlwgauge.c (XawGaugeSetValue): Use NULL instead of 0 as the
sentinel to quiet gcc warnings.
* xlwmenu.c: Cast to FcChar8 * as necessary to quiet warnings.
* xlwtabs.c: Ditto.
2006-04-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* lwlib-fonts.c: Change #include to "font-mgr.h". Make
conditional on HAVE_FONTCONFIG, not USE_XFT.
-------- ChangeLog Entries from man/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
2006-05-09 Stephen J. Turnbull <stephen(a)xemacs.org>
* beta.texi (Building Beta XEmacs): Rename 'Compiling' -> 'Building'.
(Reporting Problems): Improve it, make it a top-level node, add
some vertical spacing to make node breaks more visible.
(Getting the Source): Flesh it out a bit and move it to the
Building Beta XEmacs node.
2006-05-09 Stephen J. Turnbull <stephen(a)xemacs.org>
* xemacs/custom.texi (Xft Font Customization): New node.
(Faces): Create menu, add new node.
* xemacs/xemacs.texi (Top): add new node to detail menu.
2006-04-29 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/objects.texi (Character Type):
Document the Unicode syntax for characters in characters and
strings.
2006-04-23 Stephen J. Turnbull <stephen(a)xemacs.org>
* internals/internals.texi: Run texinfo-master-menu.
(Creating a New Console/Device/Frame Type): New node.
-------- ChangeLog Entries from modules/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
-------- ChangeLog Entries from netinstall/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
-------- ChangeLog Entries from nt/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
2006-04-26 Adrian Aichner <adrian(a)xemacs.org>
* xemacs.dsw: Updated by MS VS 6.0.
* xemacs.dsp: Convert to DOS format, as suggested by
Robinows(a)aol.com.
-------- ChangeLog Entries from nt/installer/Wise/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
-------- ChangeLog Entries from src/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
2006-02-27 Joachim Schrod <jschrod(a)acm.org>
* mule-coding.c (iso2022_detect): Handle Latin-1 encoded files
that have several high-byte chars in a row.
2006-05-08 Jerry James <james(a)xemacs.org>
* number.c (Fcanonicalize_number): Use EMACS_INT instead of int,
which fixes bignum arithmetic on 64-bit platforms.
* number.h (bignum_fits_emacs_int_p): New macro.
* number.h (bignum_to_emacs_int): New macro.
2006-03-30 Stephen J. Turnbull <stephen(a)xemacs.org>
* objects-x.c (x_initialize_font_instance):
Ensure that duplicative X font gets freed if we have an Xft font.
Remove some redundant debug output.
Comment on frequency of calls to this function.
2006-05-08 Stephen J. Turnbull <stephen(a)xemacs.org>
* EmacsShell-sub.c (RootGeometryManager):
Change garbage to useful messages under DEBUG_GEOMETRY_MANAGEMENT.
Based on a suggestion by Francois L'Archeveque.
2006-05-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* doc.c (extract_object_file_name): Fix buffer overrun.
2006-04-30 Stephen J. Turnbull <stephen(a)xemacs.org>
Move geometry management from EmacsFrameResize to x_set_frame_size.
Should fix "metacity maximization" bug.
Provide (deprecated, temporary) backward compatibility option.
* EmacsFrame.c (EmacsFrameResize):
* frame-x.c (x_set_frame_size):
Move call of EmacsManagerChangeSize.
Don't bogusly notify WM about size changes the WM asked for.
* console-x.c (wedge-metacity): New builtin Boolean Lisp variable.
* console-x-impl.h (wedge_metacity): Declare C variable.
* console-x.c (vars_of_console_x): New function to initialize it.
* symsinit.h (vars_of_console_x): declare it.
* emacs.c (main_1): Call vars_of_console_x.
* EmacsFrameP.h (struct EmacsFrame):
* EmacsManager.c (EmacsManagerChangeSize):
* EmacsShell-sub.c (SuperClassRootGeometryManager):
* console-x-impl.h (wedge_metacity):
Various comments, some improved documentation, mostly sad comments
on the state of the art of Xt programming.
* frame-x.c (defi): #undef it. (Random code cleanliness.)
2006-05-06 Aidan Kehoe <kehoea(a)parhasard.net>
* lisp.h (struct Lisp_Subr):
Document that prompt, doc, and name should not be char *.
* symbols.c (Fsubr_name):
Cast name to const Ibyte * before returning it.
* sysfile.h:
Make versions of DIRECTORY_SEP, IS_DIRECTORY_SEP and IS_ANY_SEP
available to make-docfile and other non-emacs processes on win32.
2006-04-30 Stephen J. Turnbull <stephen(a)xemacs.org>
* font-mgr.c (string_list_to_fcobjectset): Remove debugging output.
2006-04-29 Aidan Kehoe <kehoea(a)parhasard.net>
* symbols.c (Fsubr_name): New.
Taken from the FSF. Needed to find the real name of a possibly
aliased subr, in order to get its docstring.
* sysfile.h:
Make various file name primitives available to make-docfile and
other non-emacs environments; define a constant that says how long
a source filename can be in lib-src/DOC.
2006-04-29 Aidan Kehoe <kehoea(a)parhasard.net>
* doc.c:
* doc.c (extract_object_file_name):
* doc.c (get_object_file_name):
* doc.c (Fbuilt_in_symbol_file):
Support saving and recovering the source file name of a built-in
symbol (that is, one created in C.)
2006-04-29 Aidan Kehoe <kehoea(a)parhasard.net>
* lread.c:
* lread.c (read_escape):
Support \uABCD and \U00ABCDEF for specifying characters by their
Unicode code point.
2006-04-25 Stephen J. Turnbull <stephen(a)xemacs.org>
Repair busted commit, plus some gratuitous doc improvements.
* emacs.c (main_1): Initialize display_use to NULL for clarity.
* objects-x.c (x_color_list):
(x_initialize_font_instance):
(x_font_instance_truename):
(x_find_charset_font):
* font-mgr.h (Qfc_font_name_encoding):
Qxft_font_name_encoding -> Qfc_font_name_encoding.
* console.h (header comment):
* font-mgr.c (vars_of_font_mgr):
* redisplay.c (Vwindow_system):
Improve comments.
2006-04-22 Jerry James <james(a)xemacs.org>
* event-stream.c (copy_command_builder): Also copy the console.
2006-04-23 Aidan Kehoe <kehoea(a)parhasard.net>
* alloc.c:
* data.c:
* data.c (Fconsp):
* data.c (Flistp):
Take on board feedback from Stephen on my last change; move the
explanation of what a cons is to the cons docstring, add cross
references to that from the consp and atomp docstrings.
2006-04-23 Stephen J. Turnbull <stephen(a)xemacs.org>
* Makefile.in.in (x_objs): Change xft-fonts.o to font-mgr.o.
2006-04-17 Stephen J. Turnbull <stephen(a)xemacs.org>
* config.h.in: New symbol HAVE_FONTCONFIG.
2006-04-22 Stephen J. Turnbull <stephen(a)xemacs.org>
Rename xft-fonts.{c,h} to font-mgr.{c,h}.
* font-mgr.c:
* emacs.c:
* symsinit.h:
(syms_of_font_mgr):
(vars_of_font_mgr):
(reinit_vars_of_font_mgr):
(complex_vars_of_font_mgr):
Renamed from *_xft_fonts versions.
* font-mgr.c:
* inline.c:
* objects-x.c:
Update #includes and comments to refer to font-mgr.h.
N.B. The feature provided by objects-x.c is still "xft-fonts",
which is separate from the font management by fontconfig (from
font-mgr.*).
2006-04-15 Stephen J. Turnbull <stephen(a)xemacs.org>
* console-x.h (<X11/Xft/Xft.h>): Don't cater to Xft v.1.
2006-04-17 Stephen J. Turnbull <stephen(a)xemacs.org>
* unicode.c: Improve comment on to/from_unicode table design.
2006-04-18 Jerry James <james(a)xemacs.org>
* alsaplay.c: Explicitly include ALSA's version.h for older
versions of the library. Thanks to Ilya Golubev.
2006-04-16 Aidan Kehoe <kehoea(a)parhasard.net>
* data.c (Fconsp):
* data.c (Fsymbolp):
* data.c (Fcar):
* data.c (Flistp):
* data.c (Fsetcar):
* data.c (Fsetcdr):
* data.c (Flss):
* data.c (Fgtr):
Short docstring clarifications to make life easier for people who
are learning Lisp; explain what a cons is in the consp docstring,
what a symbol is in the symbolp docstring, and so forth. Thank you
Alan Mackenzie on emacs-devel.
Expand on "monotonically increasing" and "monotonically
decreasing" in the Flss and Fgtr docstrings.
2006-04-10 Jerry James <james(a)xemacs.org>
* alsaplay.c: Support pre-1.0.10 versions of the ALSA library.
2006-03-23 Tony Bennett <tbennett(a)nvidia.com>
* process-unix.c (unix_send_process): Reduce timeout for
Faccept_process_output to 10ms. This dramatically speeds up many
functions that read from processes, eg, inferior interpreter
processes as in ilisp or python-mode.
-------- ChangeLog Entries from tests/ChangeLog --------
2006-05-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.27 "fiddleheads" is released.
--
University of Tsukuba Graduate School of Systems and Information Engineering
http://turnbull.sk.tsukuba.ac.jp Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Ask not how you can "do" free software business;
ask what your business can "do for" free software.