From: Po Lu <luangruo@yahoo.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Android port of Emacs
Date: Fri, 16 Jun 2023 21:03:35 +0800 [thread overview]
Message-ID: <874jn7h848.fsf@yahoo.com> (raw)
In-Reply-To: <83v8fnslfz.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 16 Jun 2023 14:20:16 +0300")
Eli Zaretskii <eliz@gnu.org> writes:
> I wonder whether the Android port of Emacs, which is being developed
> by Po Lu for the past few months, should be part of the upstream Emacs
> and whether it should be distributed as part of the Emacs release
> tarballs. The advantage of having the Android support bundled is that
> we allow people to build the Android port right out of the release
> tarball. However, Android is a proprietary platform, so it isn't one
> of the systems that we are required to target. I also don't think
> Android (and smartphones in general) will become the main, or even
> important, platform for Emacs any time soon.
It's worth mentioning that this port of Emacs runs just as well on the
free Android-based systems, such as Replicant. Whether or not enough
people use them is up to debate, and sadly my opinion is that those
systems are used so rarely that they should not be put into
consideration.
> There are some significant disadvantages of the Android support:
>
> . it makes the Emacs distribution significantly larger (I think no
> other port, not even the MS-Windows or macOS ports, add so much
> stuff to the distribution)
I believe most of the code stems from Gnulib, and most of that is
vasnprintf-posix and its assorted dependencies.
> . significant portions of the Android support are (and AFAIU must
> be) implemented in Java, which is not used anywhere else in Emacs;
> Emacs developers are therefore not expected to be Java experts,
> and we have no Java-oriented coding conventions in Emacs
Similarly, the Nextstep port is written in Objective-C, an object
oriented language similar to Java.
In the Android port, care has been taken to keep as much logic as
possible written in C, with only the bare minimum required written in
Java. For example, the font backend which is actually used
(sfntfont-android.c), and much of the bitmap copy code, is written in C.
In contrast to Nextstep, no Lisp functions are implemented in any non-C
language.
Additionally, the Java code is also written to minimize the use of Java
specific features in the language, and a 900-line (to be expanded)
write-up is provided on the specifics of both reading and writing Java
code and connecting it to the corresponding C code.
> . it requires non-trivial knowledge of the Android platform,
> including its unique requirements and limitations
The interfaces between Java and the rest of Emacs are designed to
closely resemble the X window system.
As a result, the C-level input, windowing and graphics code is more or
less a direct translation from xterm.c and xfns.c. It was intended for
Emacs developers who do not need to change Android-specific code to only
require basic knowledge of X.
> . its integration adds some non-trivial hair to many existing Emacs
> APIs and processing, whose purpose is only clear if one considers
> the special Android quirks
I can only think of two specific quirks: file management and the `exec'
helper binary. The former is not so different, and much closer to
Unix-like systems, than the Unix emulations in msdos.c and w32.c (not to
mention the numerous special cases under DOS_NT in fileio.c), while the
latter seems is not much different from the `cmdproxy' binary found in
NTEmacs.
They are all well behaved and stay out of the way of system independent
code parts of Emacs.
> . currently, we have a single developer who understands the
> specifics of the Android port and works on developing it; it is
> not good for Emacs to depend on a single individual for a port
> that should be kept alive and up-to-date for the observable future
That's still a significantly better situation than the NS port, which
seems to have zero people who really understand it.
> Given these IMO significant downsides, I wonder whether we should
> maintain the Android support as part of the upstream project. It
> sounds like a non-trivial maintenance burden that relies on a single
> developer. Should we really commit ourselves to this additional work,
> from now on?
>
> An alternative would be for the Android support to be a separate
> project on Savannah. Maybe in the long run this would be better?
>
> I think this deserves a serious discussion and a more-or-less
> agreed-upon decision, before we decide to land the Android branch and
> thus commit ourselves to supporting the Android port.
>
> Once again, apologies for bringing this up so late. When the work on
> this port started, I had no idea the result will be anywhere near
> where it is today, or I would speak up much earlier.
Here are some more facts to put the maintenance burden into perspective:
- The Android port is being developed by one person in his limited
spare time, and even under those circumstances was completed in 4
months. Synchronizing it with other changes being made to Emacs is
trivial: even as it stands right now (in a feature branch), less
than 5 minutes of my time are required to merge the master branch
and prepare new prebuilt binaries each morning.
- Problems posed by the Android platform have already been solved, and
the solutions are likely to benefit users of other systems as well:
input method and touch-screen support come in to mind.
- There are many free software programmers with Android development
expertise, especially when compared to those who have experience
developing for systems such as DJGPP. Thus, if necessary, it should
be much easier to locate a replacement Android port maintainer than
one for the MS-DOS port.
- More commentary on the Android port is going to be written before it
is installed.
If the Android port is installed, other Emacs developers are invited to
make changes without consideration towards the Android port. I will
correct the fall-out, or the Android port will be broken.
Thanks.
next prev parent reply other threads:[~2023-06-16 13:03 UTC|newest]
Thread overview: 334+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-16 11:20 Android port of Emacs Eli Zaretskii
2023-06-16 13:03 ` Po Lu [this message]
2023-06-16 13:17 ` Po Lu
2023-06-16 15:16 ` Dr. Arne Babenhauserheide
2023-06-16 15:32 ` Eli Zaretskii
2023-06-16 16:34 ` Dr. Arne Babenhauserheide
2023-06-16 19:34 ` Bob Rogers
2023-06-16 23:46 ` Po Lu
2023-06-18 2:10 ` Richard Stallman
2023-06-17 0:49 ` Konstantin Kharlamov
2023-06-17 6:20 ` Eli Zaretskii
2023-06-17 9:28 ` Dr. Arne Babenhauserheide
2023-06-17 13:34 ` Konstantin Kharlamov
2023-06-17 16:47 ` Alfred M. Szmidt
2023-06-17 18:11 ` contributing to Emacs Konstantin Kharlamov
2023-06-17 18:36 ` Alfred M. Szmidt
2023-06-17 19:39 ` Konstantin Kharlamov
2023-06-17 21:00 ` Alfred M. Szmidt
2023-06-17 21:10 ` Konstantin Kharlamov
2023-06-17 21:19 ` Alfred M. Szmidt
2023-06-17 21:26 ` Konstantin Kharlamov
2023-06-17 22:25 ` Alfred M. Szmidt
2023-06-17 22:39 ` Konstantin Kharlamov
2023-06-18 5:20 ` Eli Zaretskii
2023-06-18 8:53 ` Konstantin Kharlamov
2023-06-18 9:01 ` Po Lu
2023-06-18 9:23 ` Konstantin Kharlamov
2023-06-18 9:25 ` Po Lu
2023-06-18 10:04 ` Konstantin Kharlamov
2023-06-18 10:07 ` Po Lu
2023-06-18 9:57 ` Alfred M. Szmidt
2023-06-18 9:01 ` Eli Zaretskii
2023-06-18 9:06 ` Eli Zaretskii
2023-06-18 9:21 ` Konstantin Kharlamov
2023-06-18 12:00 ` Michael Albinus
2023-06-18 13:29 ` [External] : " Drew Adams
2023-06-18 22:46 ` Konstantin Kharlamov
2023-06-19 2:30 ` Eli Zaretskii
2023-06-18 9:18 ` Konstantin Kharlamov
2023-06-18 9:35 ` Eli Zaretskii
2023-06-18 21:16 ` Dmitry Gutov
2023-06-18 10:00 ` Philip Kaludercic
2023-06-18 10:15 ` Konstantin Kharlamov
2023-06-18 10:22 ` Philip Kaludercic
2023-06-23 6:49 ` Sean Whitton
2023-06-24 15:37 ` Philip Kaludercic
2023-06-25 7:40 ` Sean Whitton
2023-06-25 11:32 ` Setting 'vc-default-patch-addressee' in .dir-locals.el Philip Kaludercic
2023-06-18 12:13 ` contributing to Emacs Po Lu
2023-06-18 12:26 ` Konstantin Kharlamov
2023-06-18 13:43 ` Alfred M. Szmidt
2023-06-18 14:57 ` Dr. Arne Babenhauserheide
2023-06-18 16:29 ` Eli Zaretskii
2023-06-18 18:52 ` Dr. Arne Babenhauserheide
2023-06-18 19:10 ` Alfred M. Szmidt
2023-06-18 19:11 ` Eli Zaretskii
2023-06-18 20:10 ` Konstantin Kharlamov
2023-06-19 2:24 ` Eli Zaretskii
2023-06-19 6:05 ` Dr. Arne Babenhauserheide
2023-06-19 18:07 ` David Masterson
2023-06-19 18:50 ` Eli Zaretskii
2023-06-19 21:29 ` Konstantin Kharlamov
2023-06-19 22:49 ` David Masterson
2023-06-20 11:14 ` Eli Zaretskii
2023-06-20 15:45 ` Konstantin Kharlamov
2023-06-20 16:14 ` Eli Zaretskii
2023-06-20 16:32 ` Lynn Winebarger
2023-06-20 16:42 ` Eli Zaretskii
2023-06-20 19:49 ` Konstantin Kharlamov
2023-06-24 1:44 ` Björn Bidar
2023-06-24 3:10 ` Po Lu
2023-06-24 7:00 ` Eli Zaretskii
2023-06-24 7:54 ` Michael Albinus
2023-06-25 2:25 ` Richard Stallman
2023-06-25 16:41 ` Corwin Brust
2023-06-25 23:31 ` Björn Bidar
2023-06-26 16:47 ` Ian Kelling
2023-06-27 11:08 ` Yuchen Pei
2023-06-27 13:52 ` Corwin Brust
2023-06-28 4:33 ` Björn Bidar
2023-06-29 3:03 ` Richard Stallman
2023-07-03 2:32 ` Björn Bidar
2023-07-03 4:25 ` Dr. Arne Babenhauserheide
2023-07-05 2:07 ` Richard Stallman
2023-07-04 1:58 ` Richard Stallman
2023-07-05 13:19 ` Yuchen Pei
2023-07-09 2:53 ` Richard Stallman
2023-06-27 1:05 ` Richard Stallman
2023-06-28 2:18 ` Richard Stallman
2023-06-20 16:24 ` Alfred M. Szmidt
2023-06-20 16:33 ` Dr. Arne Babenhauserheide
2023-06-19 22:47 ` David Masterson
2023-06-20 1:17 ` Po Lu
2023-06-20 2:24 ` David Masterson
2023-06-20 7:01 ` Alfred M. Szmidt
2023-06-21 0:51 ` Richard Stallman
2023-06-21 4:13 ` Po Lu
2023-06-21 4:23 ` David Masterson
2023-06-23 1:47 ` Richard Stallman
2023-06-23 2:28 ` Po Lu
2023-06-25 2:25 ` Richard Stallman
2023-06-20 11:20 ` Eli Zaretskii
2023-06-18 8:34 ` Alfred M. Szmidt
2023-06-18 8:58 ` Konstantin Kharlamov
2023-06-18 0:50 ` Po Lu
2023-06-20 2:55 ` Richard Stallman
2023-06-20 3:39 ` Po Lu
2023-06-21 9:20 ` Gregory Heytings
2023-06-22 1:56 ` Richard Stallman
2023-06-22 2:23 ` Po Lu
2023-06-22 7:47 ` Philip Kaludercic
2023-06-22 7:59 ` Po Lu
2023-06-22 8:38 ` Dr. Arne Babenhauserheide
2023-06-20 11:30 ` Eli Zaretskii
2023-06-17 21:44 ` chad
2023-06-18 9:26 ` Dr. Arne Babenhauserheide
2023-06-18 10:05 ` Eli Zaretskii
2023-06-18 10:30 ` Dr. Arne Babenhauserheide
2023-06-18 10:52 ` Eli Zaretskii
2023-06-18 11:00 ` Dr. Arne Babenhauserheide
2023-06-18 10:57 ` Konstantin Kharlamov
2023-06-18 8:59 ` Dr. Arne Babenhauserheide
2023-06-18 9:30 ` Konstantin Kharlamov
2023-06-18 9:34 ` Konstantin Kharlamov
2023-06-18 9:56 ` Konstantin Kharlamov
2023-06-18 10:02 ` Eli Zaretskii
2023-06-18 10:13 ` Konstantin Kharlamov
2023-06-18 10:22 ` Eli Zaretskii
2023-06-18 10:27 ` Konstantin Kharlamov
2023-06-18 10:36 ` Eli Zaretskii
2023-06-18 10:44 ` Konstantin Kharlamov
2023-06-18 10:59 ` Eli Zaretskii
2023-06-18 11:14 ` Konstantin Kharlamov
2023-06-18 11:32 ` Eli Zaretskii
2023-06-18 11:54 ` Konstantin Kharlamov
2023-06-18 12:18 ` Eli Zaretskii
2023-06-18 12:24 ` Konstantin Kharlamov
2023-06-18 15:20 ` Dr. Arne Babenhauserheide
2023-06-18 10:54 ` Dr. Arne Babenhauserheide
2023-06-18 11:11 ` Konstantin Kharlamov
2023-06-18 12:10 ` Po Lu
2023-06-18 12:28 ` Konstantin Kharlamov
2023-06-18 12:51 ` Eli Zaretskii
2023-06-18 13:02 ` Konstantin Kharlamov
2023-06-18 13:13 ` Eli Zaretskii
2023-06-18 13:32 ` Po Lu
2023-06-18 13:50 ` Konstantin Kharlamov
2023-06-18 10:12 ` Po Lu
2023-06-18 10:22 ` Konstantin Kharlamov
2023-06-18 12:09 ` Po Lu
2023-06-18 12:30 ` Konstantin Kharlamov
2023-06-18 13:29 ` Po Lu
2023-06-18 13:55 ` Konstantin Kharlamov
2023-06-18 12:33 ` Konstantin Kharlamov
2023-06-18 13:30 ` Po Lu
2023-06-18 13:57 ` Konstantin Kharlamov
2023-06-23 6:51 ` Sean Whitton
2023-06-23 7:06 ` Po Lu
2023-06-23 7:14 ` Sean Whitton
2023-06-23 7:17 ` Eli Zaretskii
2023-06-24 7:21 ` Sean Whitton
2023-06-24 7:43 ` Eli Zaretskii
2023-06-24 12:36 ` Konstantin Kharlamov
2023-06-24 14:44 ` Eli Zaretskii
2023-06-24 16:17 ` Konstantin Kharlamov
2023-06-24 17:13 ` Eli Zaretskii
2023-06-25 7:39 ` Sean Whitton
2023-06-18 9:43 ` Eli Zaretskii
2023-06-18 10:19 ` Dr. Arne Babenhauserheide
2023-06-18 10:31 ` Eli Zaretskii
2023-06-18 10:50 ` Dr. Arne Babenhauserheide
2023-06-18 11:29 ` Eli Zaretskii
2023-06-16 15:49 ` Android port of Emacs Thomas Fitzsimmons
2023-06-16 16:28 ` Eli Zaretskii
2023-06-16 23:45 ` Po Lu
2023-06-16 21:19 ` chad
2023-06-17 0:11 ` Po Lu
2023-06-17 6:18 ` Eli Zaretskii
2023-06-17 6:38 ` Po Lu
2023-06-17 6:47 ` Eli Zaretskii
2023-06-17 7:08 ` Po Lu
2023-06-17 7:27 ` Eli Zaretskii
2023-06-17 7:41 ` Po Lu
2023-06-17 8:47 ` Eli Zaretskii
2023-06-17 9:36 ` Dr. Arne Babenhauserheide
2023-06-17 9:57 ` Po Lu
2023-06-18 7:33 ` Sean Whitton
2023-06-30 22:09 ` Stefan Monnier via Emacs development discussions.
2023-06-17 6:00 ` Eli Zaretskii
2023-06-17 6:57 ` Po Lu
2023-06-17 7:10 ` Po Lu
2023-06-17 7:21 ` Eli Zaretskii
2023-06-17 7:33 ` Po Lu
2023-06-17 7:54 ` Alfred M. Szmidt
2023-06-17 8:02 ` Po Lu
2023-06-17 8:43 ` Eli Zaretskii
2023-06-17 16:47 ` Alfred M. Szmidt
2023-06-18 0:36 ` Po Lu
2023-06-19 2:13 ` Richard Stallman
2023-06-19 7:51 ` Manuel Giraud via Emacs development discussions.
2023-06-19 8:22 ` Po Lu
2023-06-19 16:42 ` Eli Zaretskii
2023-06-19 17:54 ` Eli Zaretskii
2023-06-18 1:10 ` Dmitry Gutov
2023-06-18 1:24 ` Po Lu
2023-06-18 2:07 ` Óscar Fuentes
2023-06-20 13:29 ` Po Lu
2023-06-22 22:49 ` Gregory Heytings
2023-06-23 0:22 ` Po Lu
2023-06-23 7:37 ` Gregory Heytings
2023-06-23 8:52 ` Po Lu
2023-06-26 15:18 ` Gregory Heytings
2023-06-27 0:39 ` Po Lu
2023-07-01 14:13 ` Gregory Heytings
2023-06-24 12:17 ` Óscar Fuentes
2023-06-24 13:01 ` Po Lu
2023-06-24 13:57 ` Óscar Fuentes
2023-06-25 0:07 ` Po Lu
2023-06-25 2:02 ` Óscar Fuentes
2023-06-25 4:04 ` Po Lu
2023-07-01 19:02 ` Spencer Baugh
2023-07-02 5:09 ` Po Lu
2023-07-02 12:50 ` Dmitry Gutov
2023-07-02 12:59 ` Po Lu
2023-07-02 13:15 ` Eli Zaretskii
2023-07-13 13:54 ` Gregory Heytings
2023-07-13 23:56 ` Po Lu
2023-07-02 13:16 ` Dmitry Gutov
2023-07-02 15:45 ` Spencer Baugh
2023-07-02 16:29 ` Dmitry Gutov
2023-07-02 17:28 ` Dmitry Gutov
2023-07-02 18:48 ` Spencer Baugh
2023-07-02 23:53 ` Po Lu
2023-07-02 23:51 ` Po Lu
2023-07-04 12:34 ` Jean Louis
2023-07-04 15:46 ` Dmitry Gutov
2023-07-05 0:18 ` Jean Louis
2023-07-11 20:53 ` Bryce
2023-07-02 9:31 ` Arsen Arsenović
2023-07-02 11:29 ` Po Lu
2023-07-02 14:52 ` Dr. Arne Babenhauserheide
2023-07-02 15:26 ` Arsen Arsenović
2023-07-03 0:03 ` Po Lu
2023-07-04 18:59 ` Arsen Arsenović
2023-06-25 4:45 ` Takesi Ayanokoji
2023-06-25 5:56 ` Po Lu
2023-06-25 10:07 ` Takesi Ayanokoji
2023-06-25 10:21 ` Po Lu
2023-06-25 11:35 ` Eli Zaretskii
2023-06-26 6:11 ` Takesi Ayanokoji
2023-06-18 2:46 ` Dmitry Gutov
2023-06-18 3:05 ` Po Lu
2023-06-18 22:35 ` Dmitry Gutov
2023-06-19 0:39 ` Po Lu
2023-06-19 12:04 ` Dmitry Gutov
2023-06-18 5:31 ` Eli Zaretskii
2023-06-18 5:48 ` Po Lu
2023-06-18 7:33 ` Eli Zaretskii
2023-06-18 22:26 ` Dmitry Gutov
2023-06-21 0:50 ` Richard Stallman
2023-06-21 11:32 ` Eli Zaretskii
2023-06-23 1:47 ` Richard Stallman
2023-06-23 7:04 ` Eli Zaretskii
2023-06-23 9:05 ` Po Lu
2023-06-23 10:23 ` Eli Zaretskii
2023-06-23 11:38 ` Po Lu
2023-06-23 12:08 ` Eli Zaretskii
2023-06-24 1:19 ` Po Lu
2023-06-24 6:54 ` Eli Zaretskii
2023-06-24 15:19 ` Robert Pluim
2023-06-24 18:56 ` Alan Mackenzie
2023-06-25 0:12 ` Po Lu
2023-06-29 20:34 ` Filipp Gunbin
2023-06-30 0:35 ` Po Lu
2023-06-30 3:21 ` Takesi Ayanokoji
2023-06-30 4:54 ` Jean Louis
2023-06-24 1:39 ` Dmitry Gutov
2023-06-24 7:06 ` Eli Zaretskii
2023-06-24 22:23 ` Dmitry Gutov
2023-06-25 0:10 ` Po Lu
2023-06-25 2:26 ` Dmitry Gutov
2023-06-25 4:15 ` Po Lu
2023-06-25 5:10 ` Jean Louis
2023-06-25 5:57 ` Po Lu
2023-06-30 4:57 ` Jean Louis
2023-06-30 5:12 ` Po Lu
2023-07-04 12:27 ` Jean Louis
2023-06-26 2:12 ` Richard Stallman
2023-06-23 12:33 ` Dr. Arne Babenhauserheide
2023-06-24 7:30 ` Sean Whitton
2023-06-25 2:25 ` Richard Stallman
2023-06-25 2:40 ` Po Lu
2023-06-27 1:07 ` Richard Stallman
2023-06-25 5:38 ` Eli Zaretskii
2023-06-27 1:07 ` Richard Stallman
2023-06-17 23:16 ` Gregory Heytings
2023-06-18 0:42 ` Po Lu
2023-06-18 6:20 ` Gregory Heytings
2023-06-18 6:56 ` Po Lu
2023-06-18 22:53 ` Gregory Heytings
2023-06-19 0:34 ` Po Lu
2023-06-19 14:27 ` Gregory Heytings
2023-06-21 0:52 ` Richard Stallman
2023-06-21 9:20 ` Gregory Heytings
[not found] ` <87r0q53vi7.fsf@dick>
2023-06-23 1:47 ` Richard Stallman
2023-06-19 16:19 ` Eli Zaretskii
2023-06-20 1:13 ` Po Lu
2023-06-20 5:57 ` chad
2023-06-20 11:25 ` Eli Zaretskii
2023-06-21 9:19 ` Gregory Heytings
2023-06-18 0:57 ` Po Lu
2023-06-30 21:53 ` Stefan Monnier via Emacs development discussions.
2023-07-01 14:13 ` Gregory Heytings
2023-07-01 14:35 ` Stefan Monnier
2023-07-01 15:09 ` Gregory Heytings
2023-07-02 15:43 ` Stefan Monnier
2023-07-13 13:55 ` Gregory Heytings
2023-07-13 16:53 ` Stefan Monnier
2023-07-13 23:55 ` Po Lu
2023-07-17 1:50 ` Po Lu
2023-08-10 11:28 ` Gregory Heytings
2023-08-10 12:50 ` Po Lu
2023-08-10 13:26 ` Eric S Fraga
2023-08-10 13:45 ` Eli Zaretskii
2023-08-10 13:33 ` Stefan Monnier
2023-07-02 9:00 ` Dr. Arne Babenhauserheide
2023-06-18 20:39 ` Thanos Apollo
2023-06-19 16:08 ` Eli Zaretskii
2023-06-30 21:44 ` Stefan Monnier via Emacs development discussions.
2023-06-25 23:37 ` Björn Bidar
2023-06-30 21:40 ` Stefan Monnier
-- strict thread matches above, loose matches on Subject: below --
2023-07-02 14:53 Ant
2023-07-06 15:48 Ant
2023-07-07 2:46 ` Po Lu
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=874jn7h848.fsf@yahoo.com \
--to=luangruo@yahoo.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.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.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.