[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacspeak] Packaging Emacspeak Best Practices?



I've personally never found distro packages of emacspeak of any
benefit. In fact, I've found they seem to take so much work to keep
current that they are typically out of date and actually take more
effort than just a simple git based workflow whhere all you have to do
is git pull, make clean, make config and make.

In the case of macOS, my experience has been that most of the challenges
surround quirks associated with macOS and ensuring you have things like
sox installed. The big hurdle seems to be mainly around the fact there
are at least 3 different pathways to running Emacs and emacspeak on the
mac i.e. starging Emacs from the dock or finder, starting emacs from a
terminal in GUI mode and starting emacs from a terminal in text
mode. Each of these startup methods have different configuration
pre-requisites which are not only confusing for the end user, but often
lead to even more ocnfusion when they ask for help as they will get
different advice depending on which workflow others use.

My suggestion would be that rather than starting with trying to create
a brew package, perhaps a detailed and comprehensive macOS HOWTO
document would be better. Such a document, once refined and after
incorporating testing and feedback from users could then be a blueprint
for developing a package if so desired.

As to your specific questions ....

> 1. Do distros routinely create emacspeak launchers?

Yes, distros do frequently have an emacspeak launcher. However, there
has been problems in the past due to such launchers. This is because
often the launcher does something like

emacs -q -e '(load-libarary "emacspeak-setup")

or similar. However, this tends to cause problems with personal
customization and use of things like Emacs' custom groups etc. It also
doesn't help those who like to use things like the dock to launch emacs. 

> 2. Do distros ever touch the users init.el or config directly?

No. I suspect one reason is because this is actually more complicated
than it may seem. For one thing, you have 3 different 'standard'
locations for the user's config and with recent emacs and the
--init-directory command line switch, users can put their config
anywhere.

> 3. Is adding a script like "emacspeak-update-config" or something similar to the 
>     users config acceptable?

I suspect some people would say yes and others would say no. The problem
with this is that getting this right is going to be very difficult and
error prone. People use diverse methods to maintain their Emacs setup
and the structure of that setup varies a lot. For example, many users
spread their setup over multiple files or manage it via Org mode or some
other system like stowe. If you were to add such a script, it would probably need
to be optional. Suspect much easier to just have instructions like Raman
has put at the end of the Makefile. 

> 4. I am currently planning on installing a version of emacs I know works well with 
>     emacspeaks (emacs-plus) with full UI for low-vision users.  Is it best to leave 
>     the system emacs untouched and make another launcher or to update the 
>     system emacs?

I don't htink you should do anything here. Your package should just be
configured to depend on one of the other existing Homebrew emacs
packages. Allow the user to use the emacs package  ersion they
prefer. Whatever you do, don't do anything with the out of date default
Emacs system package as this is likely to achieve little and will
almost certainly create unnecessary complications for the user next time
they try to update macOS. From memory, Hoebrew allows you to specify
multiple version dependencies, so you should be able to define your
homebrew package such that it simply requires you have at least one
Homebrew based Emacs installed.

If you decide to go ahead with a package, my advice would be to keep it
as simple as possible. Don't try to satisfy everyone and don't try to
make the package too clever. In fact, it might be worth thinking of it
as more like a meta package. What it does is just ensure that all
necessary dependencies are installed, checks out Emacspeak from git into
some directory, builds it and then tells the user what to add to their
init file. For example, ensures they have a hombrew version of emacs and
sox installed, checkout git into an emacspeak directory, run config,
make and provide some instructions for updating their init file
(possibly including adding environment variables for DTK_PROGRAM and
adding a load-path entgry). 



|Full archive May 1995 - present by Year|Search the archive|


If you have questions about this archive or had problems using it, please contact us.

Contact Info Page