Skip to content

Enhance include ubuntu mono font#1446

Merged
SlySven merged 13 commits intoMudlet:developmentfrom
SlySven:Enhance_includeUbuntuMonoFont
Jan 9, 2018
Merged

Enhance include ubuntu mono font#1446
SlySven merged 13 commits intoMudlet:developmentfrom
SlySven:Enhance_includeUbuntuMonoFont

Conversation

@SlySven
Copy link
Copy Markdown
Member

@SlySven SlySven commented Dec 6, 2017

Brief overview of PR changes/additions

This is an improved (working) replacement for #1332.

Motivation for adding to Mudlet

The original had stalled as it did not load the fonts into the resource system for inclusion in the application - this one does.

Other info (issues closed, discussion etc)

There has been some licensing issues with this set of fonts in that they are not considered "free" enough to include in the "main" part of the Debian packaging system - the licence term has an unfortunate restriction on naming of modified versions - although eight days ago (after a seven year wait) the fonts have made it into Debian Unstable.

I have taken the liberty of adding the remaining non-Monospaced fonts as there are situations where those may also be wanted by users of Mudlet (composing documentation being the main one but also for use as a system font for the actual Mudlet application).

Importantly because I have made the include of all font resources a compile time option it was needed to allow conditional inclusion of the font licence in the application. As there are also other portions - particularly the Updater code - that had different OS Platform inclusion requirements for non-GPLed code I could see that it was necessary to bring the creation of the HTML content for the dlgAboutDialog class into the C++ from the Qt Design/QUiTools form/dialog - I had already gone that way for the current attempt to I18n the GUI so I ported across a sub-set of that code sufficient to create the HTML for that dialogue. Importantly it modularises the separate/repeated FOSS licences so it should be relatively painless (and trackable in Git) to add or remove future text content changes to the About dialog - which is almost impossible with the XML of the Qt Designer forms and which I know will be deeply unpleasant for translation in the XML form because Qt Designer has, since somewhere in the Qt 5.x series insisted on obfuscating even simple HTML into something that is unreadable in a raw form which is what translators would have to work with.

zzbazinga and others added 3 commits December 6, 2017 08:29
Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
…ce display

Adds the missing code to store the Ubuntu fonts into a resource file; but
given that Linux distro package creators may already have the fonts in
their native package range (or they do not accept the font as one they
can distribute) steps have been taken to separate out the font resources
into a separate resource file that can be omitted at build time with
an environment variable "WITH_FONTS" set to have the value "NO".

As it happens, at the time of writing the Ubuntu fonts had just been
lined up to be placed into the "non-free" area of the Debian "unstable"
version (it has been waiting around seven years because the Ubuntu Font
Licence was just restrictive enough not to be acceptable to the DFSG -
it required a certain form of naming of *modified* versions and that seemed
to impinge on a freedom that Debian demands for "Free" software). Ideally
I would have liked to not have the font files embedded directly into the
source code and instead arranged for them to be obtained from upstream
(currently:
https://launchpad.net/ubuntu/+archive/primary/+files/
                              ubuntu-font-family-sources_X.YY.orig.tar.gz )
directly but only if they were wanted.

This commit adds ALL the remaining (non-Monospaced) Ubuntu fonts from the
original source to Mudlet.

As there is a need to include the specific licence file for these fonts in
our "About Dialog" but only if they were required - this justified my
importing code similar to that which I will be using to provide
translations of the GUI part of the application.  Specifically it moves
the HTML used for the textual content for the licence and about details
from the UI form file to a C++ source file. This has to happen to allow
for variations in the content to depend on build and/or run-time conditions
and also makes it possible avoid the horrendous obfuscation that Qt
Designer wreaks on any HTML it gets it's hand on.  By using a modular
coding style it was possible to boiler-plate multiple instances of various
free but non-GPL licences that we must include - and to omit things that
are not required for different build configurations, such as not including
the licences for the recently added updater components on builds that do
not include them.

Note that the line:
Q_INIT_RESOURCE(mudlet);
should not be included in main.cpp as that macro is only needed for Qt
library projects and not application ones - it has been removed.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
@SlySven SlySven requested a review from a team as a code owner December 6, 2017 09:07
@SlySven SlySven requested a review from a team December 6, 2017 09:07
@SlySven SlySven self-assigned this Dec 6, 2017
@SlySven
Copy link
Copy Markdown
Member Author

SlySven commented Dec 6, 2017

Um. a WIP as I forgot the CMake project file(s) stuff but qmake should produce something to test...

src/mudlet.pro Outdated
isEmpty( FONTTEST ) | !equals($$upper(FONTTEST), "NO" ) {
# Include the font resources (by defining "INCLUDE_FONTS", like a
# "#define INCLUDE_FONTS" C preprocessor) if WITH_FONTS is NOT defined in the
# environment or is NOT set to a case insensitive "no"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is confusing - a) are fonts included by default? (they should be) and b) how can one disable them easily?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A). Yes
B). In a *nix shell set the environmental variable WITH_FONTS to (case insensitive) no; other OS have other comparable means. Typically this means doing something like

export WITH_FONTS="no"

before running qmake (or once I do the next commit cmake)...

Recent Qt Creator versions allow manipulation of variables like this for builds done within themselves:

screenshot_20171206_155356

Notice that there is a summary at the top of the selection which indicates what Qt is "doctoring" for the build environment (and you can see I am also tweaking a couple of my locale settings) - there is a similar section (in the Qt Kit "Run" part, the above screen is the "Build" one) for when running the application from within the IDE - that is very useful for testing the I18n GUI stuff for the "auto" locale choice as it means I do not have to reset my whole desktop to French/Russian/Chinese to check that that option will work... 🤓 😀

The reason I strongly urge us to support environmental variable controls for build options is that there is no need to modify the project files (and thus tickle git) to change the configuration of what gets built - which makes things nicer for the packagers such as @csmall .

Sadly I had to abandon some project file stuff to download the font files from the Ubuntu server only if needed because although I had something that would work for Linux (with wget + tar) I could not manufacture something we could rely on for macOs & 'Doze and I would need something to cover all of them before I cut the new Font files from being directly included in the source as they are with this (and @zzbazinga 's) original attempt.

Such environmental variables are also something that can be (possibly on a temporary basis) varied in the CI build matrix for testing - although to keep the standard test CI jobs per build count down, this would want to be reset before final commitment to the development branch.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, how about this comment then, I think it will be clearer:

Do export WITH_FONTS="no" to disable...

Ehh wait, what are we disabling? Why not just load fonts if they are available and don't load them if they're not?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because they are currently included in the source (I would like them not to be but I cannot make that so at the moment) but packagers (or those who have the fonts already in their systems) will not want to bloat the executable with them or do not want them included in binaries that have licensing conditions that prevent the fonts from being included in their distributions.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tl;dr; Mudlet is in the "main" section for Debian - including the Ubuntu fonts in the binary package means it becomes, I believe, "non-free" see https://www.debian.org/distrib/packages#note ...

Also tweak the commenting of the WITH_FONTS environmental variable used to
control the feature in the qmake project file.

Temporarily expands the CI build matrix to verify the option works on all
3 main platforms supported.  Added .appveyor.yml to files tracked in
Git repository and displayed in qmake-based Qt Creator environment.

## DO NOT MERGE THE PULL-REQUEST WITHOUT THE CI BUILD MATRIX BEING RESET ##

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
The Travis CI build was error-ing out in the CMake Qt 5.6 Linux build because that
one did not have the WITH_FONTS value set.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
@vadi2
Copy link
Copy Markdown
Member

vadi2 commented Dec 7, 2017

Can we keep things simple? Let's take a step back and this for what it is - we're just bundling two fonts with the application and that's it. It should be a trivial thing. Let's keep it simple as possible.

.travis.yml Outdated
- Q_OR_C_MAKE=cmake
QT_VERSION=59 # actually 5.9
QT_VERSION=59
WITH_FONTS=NO # actually 5.9
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this just for the PR or intended to go into the repository?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for testing - it expands the CI build matrix more than I would like (I spent several hours late last night/early this morning watching the Travis MacOS jobs backlog declining slightly - WTF happened at 04:00 UTC - and I do not want to load that more than I have to). Will revert now the code compiles on everything.

CMakeLists.txt Outdated
# INCLUDE_FONTS is a C preprocessor symbol (i.e. the same as
# "#define INCLUDE_FONTS" which, in the absence of an explicitly set
# value, takes the numeric value of (int)1 as far as the compiler is
# concerned!)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we condense this comment to just to disable font inclusion in the binary, set the environment variable INCLUDE_FONTS to "no"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to explain the differences between the entities I was using - there are differences between how they behave (AFAICT) and if something doesn't work in the future (or if someone is porting to a different platform) it does not hurt to explain what is supposed to be going on; and, although the intention was to have the same action in both the cmake and the qmake cases there are slight differences - again AFAICT.

OTOH I suppose that, as the bottom line is that if the user does not do anything the default behaviour is as before, those who will want to tweak the settings are more likely to have a handle on the knobs to frob. 🤔

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still want to keep it simple. Having lengthy explanations hurts because people read them even if they don't need to, get confused by them, become unsure if they were supposed to understand them, and then think the whole project is complicated.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Conversely though, having undocumented options that are not explained is even worse in my book having properly commented stuff (and meaningful variable names) is always better than obscure settings whose effects can make things unworkable. It is a fine line though, and one that is subject to a certain amount of personal opinion.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not propose to remove the text entirely - see my original comment:

Could we condense this comment to just to disable font inclusion in the binary, set the environment variable INCLUDE_FONTS to "no"

Even simpler - and more correct, yes I also got confused by the explanation that was explaining far too much, just this would be super clear:

to disable font embedding in the binary, do: export WITH_FONTS="no"

Why not keep things super simple and crystal clear?

Think about your audience. Whom are you writing this for? The Linux packager, because that's the only person who has a practical use for this variable. When their goal is to disable the built-in fonts to comply with the licensing guidelines, do they need to know or worry about CMake variables or the C preprocessor variables? Not really. All they want to do is disable the fonts and they want to learn how to do that in the fastest way possible. Hence my suggestion that goes straight to the point!

Let me know what you think 😄

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, will rethink this...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... have done something here!

CMakeLists.txt Outdated
# https://launchpad.net/ubuntu/+archive/primary/+files/ubuntu-font-family-sources_X.YY.orig.tar.gz
# TODO: automate the download and extraction of all the font and associate
# documentation but NOT the "sources" sub-directory contents into the
# ./src/fonts/ directory structure if this option is set to ON...
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not something that should be done, I don't want to see increased complexity and machinery in the build process without a very good reason. We have git submodules for this and that's far enough.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do have a concern that some distros will be forced to drop Mudlet (or relegate it to a lesser availability) because we are include material which they do not want to include in their main area. The existing Deja Vu fonts are not a problem for Debian - who ARE a major Linux Distribution and the parent of many of the 500 or so active derivatives (consider https://en.wikipedia.org/wiki/Linux_distribution#Widely_used_distributions) but both they and Fedora have had issues with the Ubuntu fonts which have not yet been completely solved. By not including the font files in the source but only downloading them if they are wanted we could keep them happy. Remember that distribution of the Mudlet source code will include these fonts and even if we (or a packager) keeps them out of precompiled binary packages their presence may be problematic as in holding the source packages on their servers will probably count as "Propogation" as far as the Licence itself details:

To "Propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification and with or without charging a redistribution fee), making available to the public, and in some countries other activities as well.

If I could find a Git Repo of the Ubuntu fonts I am happy to copy-paste-revise the existing sub-module code to grab the most up to date release version - but Ubuntu uses bazaar on Launchpad and whilst the binary (without the source files which requires proprietary {non-free} tools to work on those source files) are available from https://assets.ubuntu.com/v1/fad7939b-ubuntu-font-family-0.83.zip - there is not a uniform tool to download and unzip that on all platforms as far as I can tell - (unlike git which does have the same commands on all of them)!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, it's a theoretical concern, but theory differs from practice - until we have someone ask us to change, I don't want to default to a super complicated build setup. I'd like it to be simpler, not more complicated!


mudletTitleLabel->setPixmap(QPixmap::fromImage(splashImage));
// clang-format off
// Do not let code reformatting tool mess this around!
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need a comment for a comment telling the formatter not to format! It only reads one.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The second is my justification to (human) coders/hackers as to why the first is there (to the formatter) - I am trying to keep it as readable as possible and the layout is my best effort to do so - letting clang-format "clean" it up when it does not correspond to the general "style" is not going to leave me feeling warm and fluffy!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We know what it means though, so it's unnecessary prose we have to read. We don't explain every single detail of the C++ standard either or how Qt works 😛

@vadi2
Copy link
Copy Markdown
Member

vadi2 commented Dec 7, 2017

Technically, seems to work great! I'm just pushing back against the increased complexity of things...

@SlySven
Copy link
Copy Markdown
Member Author

SlySven commented Dec 7, 2017

Can we keep things simple? Let's take a step back and this for what it is - we're just bundling two fonts with the application and that's it. It should be a trivial thing. Let's keep it simple as possible.

In my opinion the (optional) inclusion of the Ubuntu Fonts exposed an issue that would probably have had to be addressed anyhow - the 3rd party licence listing. All those non-GPL bits of code have to be reported in order to meet their Licence terms and with some bits only being needed in some circumstances a one-size include everything tab wasn't going to cut it¹. If we decide NOT to go ahead with them I think we still would have to go down this route (or else, I guess, we might get people on say, Windows asking what is all the "Sparkle" stuff for - where is it - or those using a Debian package wondering "where is the 'updater' - do I have to use that to keep Mudlet up to date"?)

1 - I guess I could clone this PR - cut out the font stuff and then put it forward as a "Licence clean-up" PR - leaving the Font as a separate issue...

Conflicts resolved in:
* .travis.yml
* 3rdparty/lcf
* CMakeLists.txt
* src/CMakeLists.txt
* src/mudlet.pro

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Messed up the merging of development and lost the change to a later
commit in that git submodule - this restores it...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Report two optional features at the same time and with the same messages on
both CMake and QMake build systems.

Also revise a comment about only downloading the "optional" fonts if needed
to no longer be a "TODO:" but instead a "it is a nice idea but not needed
right now and anyhow would add complexity"...

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
@SlySven SlySven assigned vadi2 and unassigned SlySven Dec 24, 2017
Copy link
Copy Markdown
Member

@vadi2 vadi2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works great technically! 🎆 🎆

Only have some trivial comments

CMakeLists.txt Outdated
# INCLUDE_FONTS is a C preprocessor symbol (i.e. the same as
# "#define INCLUDE_FONTS" which, in the absence of an explicitly set
# value, takes the numeric value of (int)1 as far as the compiler is
# concerned!)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not propose to remove the text entirely - see my original comment:

Could we condense this comment to just to disable font inclusion in the binary, set the environment variable INCLUDE_FONTS to "no"

Even simpler - and more correct, yes I also got confused by the explanation that was explaining far too much, just this would be super clear:

to disable font embedding in the binary, do: export WITH_FONTS="no"

Why not keep things super simple and crystal clear?

Think about your audience. Whom are you writing this for? The Linux packager, because that's the only person who has a practical use for this variable. When their goal is to disable the built-in fonts to comply with the licensing guidelines, do they need to know or worry about CMake variables or the C preprocessor variables? Not really. All they want to do is disable the fonts and they want to learn how to do that in the fastest way possible. Hence my suggestion that goes straight to the point!

Let me know what you think 😄

"<p><span style=\"color:#bc8942;\"><b>Blaine von Roeder</b></span> () joined in December 2009. He has contributed to the Lua API, submitted small bugfix patches and has helped with release management of 1.0.5.</p>\n"
"<p><span style=\"color:#bc8942;\"><b>Bruno Bigras</b></span> (<span style=\"color:#0000ff;\">bruno@burnbox.net</span>) developed the original cmake build script and he has committed a number of patches.</p>\n"
"<p><span style=\"color:#bc8942;\"><b>Carter Dewey</b></span> (<span style=\"color:#0000ff;\">eldarerathis@gmail.com</span>) contributions to the Lua API.</p>\n"
"<p><span style=\"color:#bc8942;\"><b>Erik Pettis</b></span> (<span style=\"color:#40b040;\">Oneymus</span>) developed the Vzyor GUI Manager for Mudlet.</p>\n"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be Vyzor. He also helps users in the Discord channel!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😊 um, yeah Vyzor...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

"<p><span style=\"color:#bc8942;\"><b>Carter Dewey</b></span> (<span style=\"color:#0000ff;\">eldarerathis@gmail.com</span>) contributions to the Lua API.</p>\n"
"<p><span style=\"color:#bc8942;\"><b>Erik Pettis</b></span> (<span style=\"color:#40b040;\">Oneymus</span>) developed the Vzyor GUI Manager for Mudlet.</p>\n"
"<p><span style=\"color:#bc8942;\"><b>\"ItsTheFae\"</b></span> (<span style=\"color:#40b040;\">Kae</span>) someone who has worked wonders in rejuventating our Website in 2017 but who prefers a little anonymity - if you are a <i>SpamBot</i> you will not get onto our Fora now. They have also made some useful C++ core code contributions and we look forward to future reviews on and work in that area.</p>\n"
"<p><span style=\"color:#bc8942;\"><b>\"dicene\"</b></span> (<span style=\"color:#40b040;\">Ian</span>) joining us 2017 they have given us some useful C++ and Lua contributions.</p>\n"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

He's listed in copyright by name and email - could do the same here :)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay - I'll recheck those details, note that I'm including Github Ids in the same colour as the Github links at the top of the page... 😁

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

// Only the introductory text at the top and interspersed between is to be
// translated - the Licences themselves MUST NOT be translated:
QString thirdPartiesHeader(
tr("<h3>Mudlet makes use of some third-party <i>non</i>-GPL software libraries which are listed here with their license information:</h3>"));
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would just going with third-party software libraries be an issue for you?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, but yes it would, because the GPL ones specifically do NOT have to be listed as their licences do not require it and the only reason we are including these here is because we have to... (perhaps that sounds a bit harsh, but it took me a while to suss out the details, and these things being non-GPL makes it harder to use them and maintain a complete and full list of their terms of use) TBH I am not 100% certain I have nailed down all the licences but with the framework here it should be a little easier to insert further entries if needed.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you've done a ton of work on this! Much appreciated :)

How about this positive-sounding stuff, because all of this is open-source at the end of the day and that is what really matters:

Mudlet is built on the shoulders of giants. Here are some of the third-party non-GPL libraries we make use of:

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can use:

Mudlet is built on the shoulders of giants. Here are the third-party non-GPL libraries we make use of:

Mustn't admit that we are not listing something that we do have to - we have to be believe the list is complete... 😀

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done ?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, a bit lengthy, how about this:

Mudlet is built up the shoulders of others in the FOSS world; as well as making use of many GPL components we also make use of third-party non-GPL software:

I don't think it is interesting to know what needs to be mentioned and what doesn't need to be mentioned.

h3 is also supposed to be a header and this is too big to be a header, so how about just bolding it?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well "making use" is almost repeated with "make use" in the same sentence - so I'll use:

Mudlet is built upon the shoulders of other projects in the FOSS world; as well as using many GPL components we also make use of some third-party non-GPL software:

I'll check the formatting again, IIRC <h4> is the next one down and that is left aligned rather than centred so that is probably not an alternative - mayhaps the shorter bit will look okay but if not I see what else works...

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah perfect! Thanks!

.travis.yml Outdated
matrix:
- Q_OR_C_MAKE=cmake
QT_VERSION=59
WITH_FONTS=NO # actually Qt 5.9, non-default without fonts
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Temporary extension, right? I'd rather just test with font inclusion in for the sake of reasonable-ish build times.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, just for testing - will take the CI build matrix back down before merge.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reverted now!

// https://anonscm.debian.org/cgit/pkg-fonts/fonts-ubuntu.git/
// but there is a term in the Ubuntu licence that makes them currently (and
// for the prior seven years) not quite the right side of the Debian Free
// Software Guidelines.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why would we need to worry about the status of our dependencies in downstream projects? 🤔 We have a lot downstream projects...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well if we poison our code with stuff they do not want to swallow they either have to cut out the tainted parts or drop the product - by keeping it simple for them to avoid the bits they don't want, it makes it more likely they will continue to package Mudlet rather than taking the other more drastic solution.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just an FYI, Mudlet is not a Debian project...

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But, sure, this can stay. Until someone else comes along favouring some other distribution and will want to add their downstream stuff too 🤔

# linux-g++-32, linux-g++-64


TEMPLATE = app
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

app is default already - no need to list it.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was already in the file I just relocated it...

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, ok!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...but if it is redundant then it can go.

@vadi2 vadi2 assigned SlySven and unassigned vadi2 Dec 25, 2017
Simplify some comments in the project files.

Revise some details in the About Mudlet dialog.

Prevent some messages being show thrice on platforms that parse the qmake
project file three times.

Corrected minimum Qt version for use of Qt5GamePad module from 5.8 to 5.7 .

Corrected an error that failed to include font files as a resource file in
CMake project file.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
@SlySven
Copy link
Copy Markdown
Member Author

SlySven commented Jan 1, 2018

@vadi2 right I've tried to come to a compromise over the contentions we have had above. There is one niggle that I'd like to resolve before we are done and that is the line:

"Mudlet is released under the GPL license version 2, which is reproduced below:"

I am aware that the source code is under GPL 2 (or at the user's option) any later version. Given that we are not currently using any Qt component that requires GPL 3 (or later) it is okay to only use 2.0 for the binary but why do we not extend the same freedom to the binary as the source code and have that line read:

 "Mudlet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License (shown below), or (at your option) any later version:"

instead?

@SlySven SlySven removed their assignment Jan 1, 2018
@SlySven SlySven mentioned this pull request Jan 2, 2018
3 tasks
@vadi2
Copy link
Copy Markdown
Member

vadi2 commented Jan 3, 2018

How about we do that in a follow-up PR? Changing the license in a PR focused at adding a new font seems way offtopic!

@vadi2 vadi2 assigned SlySven and unassigned vadi2 Jan 3, 2018
@SlySven
Copy link
Copy Markdown
Member Author

SlySven commented Jan 3, 2018

😊 um, adding font -> adding it's non-GPL licence when needed -> review/rework/improve presentation of license information -> discrepancy in other licenses' details; it is a slippery slope! As I said, it is just a niggle (and contradicts mudlet --version output):

[stephen@ripley ~/src/mudlet/build-mudlet-Desktop_Qt_5_7_1_Clang-Debug]$ ./mudlet --version
mudlet 3.7.1-dev
Qt libraries 5.7.1(compilation) 5.7.1(runtime)
Copyright (C) 2008-2018 Mudlet devs.
Licence GPLv2+: GNU GPL version 2 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

... but yeah, can defer it for now, just want to get this one in and off my task stack ...

@SlySven SlySven assigned vadi2 and unassigned SlySven Jan 3, 2018
@vadi2
Copy link
Copy Markdown
Member

vadi2 commented Jan 4, 2018

Okay, one last point left!

@vadi2 vadi2 assigned SlySven and unassigned vadi2 Jan 4, 2018
Following more discussions with Vadim.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Removes testing for builds without the fonts in the binary.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
@SlySven
Copy link
Copy Markdown
Member Author

SlySven commented Jan 6, 2018

Following successful testing in da1e097 I've now returned the CI build matrix to normal (though there is commented out entries that can be uncommented again in the future if ever needed i.e. WITH_FONTS="NO" and also the other WITH_UPDATER="NO" for an unrelated option which can be controlled in the same way)...

@vadi2 vadi2 assigned keneanung and unassigned SlySven Jan 6, 2018
Copy link
Copy Markdown
Member

@vadi2 vadi2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@keneanung mind approving the infrastructure changes?

Copy link
Copy Markdown
Member

@keneanung keneanung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A minor niggle about a comment, but otherwise this is ready to go.

CMakeLists.txt Outdated
endif()

# Enable the inclusion of fonts currently carried in the source code by default
# unless the environmental variable WITH_FONTS is defined and is not set to
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this read [...]is defined and is set to[...]?

Copy link
Copy Markdown
Member Author

@SlySven SlySven Jan 9, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, yeah a double negative! Will touch that up... No that IS right - if WITH_FONTS is not defined the fonts ARE included; if it IS defined then ONLY if it is equal to the regexp equivalent to "[Nn][Oo]" are the fonts NOT included! Oh 'eck, it might not be not incorrectly put! 😖

@keneanung keneanung assigned SlySven and unassigned keneanung Jan 8, 2018
Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
@SlySven SlySven merged commit c17e09f into Mudlet:development Jan 9, 2018
@SlySven SlySven deleted the Enhance_includeUbuntuMonoFont branch January 9, 2018 03:57
@vadi2
Copy link
Copy Markdown
Member

vadi2 commented Jan 9, 2018

Woohoo.. now a PR for that GPL thing?

@SlySven
Copy link
Copy Markdown
Member Author

SlySven commented Jan 9, 2018

I'll need to know which way it should go:
A. Amend "About Dialog" to say "GPL 2, or later" {most likely, IMHO}
B. Amend everything to be "GPL3, or later" {unlikely}
C. Amend mudlet --version to output "GPL 2" only {would then match the current "About Dialog" but not what I think should be done}

@vadi2
Copy link
Copy Markdown
Member

vadi2 commented Jan 10, 2018 via email

@SlySven SlySven restored the Enhance_includeUbuntuMonoFont branch June 22, 2020 18:00
@SlySven SlySven deleted the Enhance_includeUbuntuMonoFont branch June 22, 2020 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants