Future of Thunderbird - fix it, or total rewrite? WAS Re: What happened to hiring an architect?

Phillip Hallam-Baker phill at hallambaker.com
Sat Dec 31 20:55:38 UTC 2016


You cannot 're-write Thunderbird' from scratch. You can write a completely
new email messaging app and call it Thunderbird but you can't rewrite
Thunderbird.

There is an argument for a complete rewrite from scratch which is what
Microsoft has done with Internet Explorer and Edge and the Windows mail
client. But as a result, the Windows mail client in Win10 lacks critical
features like support for S/MIME.

The resources required for a rewrite are considerable but so are the
resources required for maintaining the existing code base. And it is much
easier to get people to write new code than to maintain old. Particularly
when the old code base goes back to some particularly unfortunate design
decisions in Netscape navigator that depend of features of C++ that are now
considered archaic.


I do not see a good argument for writing a new mail app. But there could be
an argument for writing a new app with a radically different base feature
set. For example:

* A combined messaging app that integrated mail, chat, RSS modes of
interaction.

* Was entirely coded using a modern language using 'managed code' and is
thus protected against buffer overrun exploits.

* Had modern strong cryptography encoded into the core of the application.

* All of the above.


Until recently, there was a big problem with using managed code. The Java
system is not open in any meaningful sense as the Microsoft and Google
lawsuits demonstrate. And until recently Microsoft's .NET was not very
open. That has just changed. Microsoft has released the pretty much the
entire core of .NET under an MIT license and is currently working to
release much of what remains. It is now supported on Windows 10, OSX and
most popular Linux flavors.

If you have not looked at the .NET framework, you should. It is the only
platform I know that allows you to mix a C-like language (C#), a functional
language (F#) and scripting languages like Python in one program and run on
multiple platforms.


Two years ago, I adopted C# as the implementation language for the
reference code for the Mathematical Mesh, an infrastructure designed to
make computers easier to use though security. My original strategy was to
use C# to enable rapid development and then convert the code to C for
deployment. This is exactly what we did with the Web, TimBL built the
prototype in Objective C and then Henryk, Nicola and myself worked on the
CernLibwww version in C.

The change in the Microsoft license makes much of the conversion work
unnecessary because you can now have a completely open source
implementation on a Linux box.


Many of the tools and code systems that I have developed for that project
could save you a great deal of time if you were going to recode from
scratch.
I have code generators that automate writing code to serialize and
deserialize pretty much all the common data formats, these include ASN.1,
JSON, RFC822 header, RFC821 command, TLS schema and DNS records. Most of
these target C# but all you would need to do to target C or C++ is write
your own back end.

Using these tools, it is pretty easy to implement a protocol like SMTP or
HTTP in a few days. In fact, I already have most of the IETF protocols.


I also have a GUI compiler that is in a state of flux at the moment but
does work. You write an abstract description of the interface and the
compiler generates all the GTK+ or Windows Forms code to implement. The
reason it is in flux is that it was originally written for Windows forms
and converted to GTK for portability and is now going back after Microsoft
made a layer available that makes Forms more portable.


The code is all open source under MIT License. Comodo owns the Mesh code
and I own the code synthesizers.

More at http://prismproof.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/tb-planning/attachments/20161231/e34f7773/attachment.html>


More information about the tb-planning mailing list