banji-project / ring-issues

Old issues before it was moved to kde.org
0 stars 0 forks source link

alpha1 appimage #21

Closed star-buck closed 6 years ago

star-buck commented 6 years ago

@Elv13 : Lets continue with 3.0.0 alpha1 appimage:

Elv13 commented 6 years ago

I have to setup a crosscompiling toolchain anyway since upstream requires full C++14 and C11 support (GCC 6.2+), so what are the desired target archs? Obviously linux-musl-x86_64, but do you want an linux-musl-aarch64 (newer Odroid) and linux-musl-armhf (raspberry Pi second gen and older Odroid) too? Should I add an ARMv6hf Android image too for easier touch testing?

star-buck commented 6 years ago

The only other arch interesting would be pine64, otherwise lets not waste effort on those until after a first official 3.0 release.

TheAssassin commented 6 years ago

Pine64 ships with an ARMv8 (a.k.a. arm64 as called by the Linux kernel) CPU.

Elv13 commented 6 years ago

Also called aarch64 by target names (afaik)

On Oct 7, 2017 1:46 PM, "TheAssassin" notifications@github.com wrote:

Pine64 ships with an ARMv8 https://linux-sunxi.org/Pine64 (a.k.a. arm64 as called by the Linux kernel https://linux-sunxi.org/Arm64#Naming_conventions) CPU.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/ring-project/ring/issues/21#issuecomment-334929504, or mute the thread https://github.com/notifications/unsubscribe-auth/AAUxoAIAuQmuIujAfhyB4Pna3cI3BxwSks5sp2SogaJpZM4PxSuN .

TheAssassin commented 6 years ago

Yes, see the link to the Linux SunXI wiki I posted.

Elv13 commented 6 years ago

Sorry, I sent it from mobile. So yeah, linux-musl-x86_64 and linux-musl-aarch64 appimages.

On Oct 7, 2017 1:50 PM, "TheAssassin" notifications@github.com wrote:

Yes, see the link to the Linux SunXI wiki I posted.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/ring-project/ring/issues/21#issuecomment-334929689, or mute the thread https://github.com/notifications/unsubscribe-auth/AAUxoDEyfXNlZivbtbOZkNCDhH4D42c_ks5sp2V5gaJpZM4PxSuN .

Elv13 commented 6 years ago

The Kirigami branch has been merged into master. The old GUI has been removed (-12k line of code and -53k worth of assets and code) and Ring-KDE is now a pure QML/Kirigami application beside the configuration dialog. I will build the appimage tomorrow.

The ring-lrc fork as also been renamed libringqt as upstream drops support for Qt and the project are officially diverging. This resolve the patch issue and clean the way for libringqt to go back in KDE once its API is cleaned from the additions made to satisfy non-Qt uses (and full Qt API guideline support is restored).

Alpha1 last (and hardest) goal is finally met. A video will soon follow to showcase the newly ported features such as multi-participants management and video conferences. Previously, those features required the old UX. This is no longer the case, every mandatory operation are now exposed in the QtQuick/Kirigami user interface.

star-buck commented 6 years ago

That sounds like awesome progress forward.

Do we still share the underlying stuff with ring, so only the GUI diverges?

Elv13 commented 6 years ago

Do we still share the underlying stuff with ring, so only the GUI diverges?

Basically, yes. The GNU Ring project has many layers:

Obviously Ring-KDE is a QML application and requires the QML bindings. Therefor our goals are diverging and a fork has to happen. I just talked face to face with the new maintainer literally a few hours ago around a beer. I mean, we both agree about this, there is no flame war or drama of any kind. For them, Qt support is problematic because the native UWP, Cocoa/macOS, iOS, Android and Gnome clients have to keep elaborate workarounds to be built on top of a Qt library (variable type conversions, Qt model/view emulation and so on). They are working on reducing the number of dependencies (@shadeslayer << enjoy_the_news) and Qt is a prime target for them to get rid of. Plus, they don't like having to review the volume of patches I was sending before the fork. They have zero automated tests and had to try manually to discover the impact in each clients using Ring-LRC (win32, macOS, Gnome) every time I submitted something. They fired the Q/A guy so the load fell back on the other devs and it was understandably unsustainable.

Good faith effort was made on both side until June to prevent this, but it clearly wasn't in either party interest to keep maintaining the Qt bindings upstream while only having a Qt (Ring-KDE) client developed by a third party. It isn't news, but is now fully official and acknowledged on both side (it started to diverge in July).

TL;DR: Ring-KDE still uses the same Ring protocol implantation as every other clients. All that changed was that the Qt bindings and some code associated with them fell back to me (the code author and main contributor). It's a good thing for both us and Savoir-faire Linux.

TheAssassin commented 6 years ago

@Elv13 is there a pre-release to test already available somewhere?

Elv13 commented 6 years ago

The new pre-release: https://github.com/ring-project/ring/releases/tag/alpah1

Last week log

Always 99% done until I found another problem ;), so unusual in engineering!

About the appimage

18736kB in size, -8MB from Alpha0, -166MB since the first AppImage! I made smaller ones but I prefer the ones that don't crash after 10 minutes ;). It enables 80% of the optimizations but not system wide LTO. As bugs such as https://bugs.kde.org/show_bug.cgi?id=387820 shows, doing so triggers changes in the code bahavior that have never been seen by the code author. They are bugs, but ones that only happen with LTO, so I need to submit more bugs reports to them and it's not a priority. LTO is enabled for everything that works well with it and is otherwise disabled. Beside that, 3mb comes from removing useless assets from the Emoji font and when I removed the old Ring-KDE QtWidgets code. 500kb come from removing the boost and cryptoc++ dependencies.

Anyway, there isn't much difference between 15MB anf 19MB. I think the static Ring-KDE AppImage SDK is now in great shape and the work done to create these tiny packages will be enjoyed by many projects now that someone took the time to test and catalogs all bugs/issues with static KF5 based apps.

All startup performance gains are cancelled by the lack of optimizations in the new TreeView code. I will enable the optimizations once they are stable enough. With those optimizations, it starts faster and the bottleneck is the number of thread the libring initialize and synchronize at startup.

Tested on

I also tested on Haswell and Sandy Bridge CPUs.

Changes since Alpha 0

The appimage works in all distributions.

After playing with the idea of using musl libc for a little while, I concluded that @TheAssassin is right and that it's more trouble than it's worth. The current image is built on a base system built with glibc 2.15 but fully updated. I moved the Docker image from Ubuntu to Gentoo in order to have the ability to lock the glibc version.

The appimage has a theme.

Marco Martin qqc2-desktop-style was ported to the Qt plugin system and added support for the Fusion style. Breeze isn't available as a stand alone theme yet so it's more trouble than it's worth unless told otherwise.

The peers timeline now has a nicer style

The design work of Uri is making this core feature pretty.

The address book is being rewritten in QML

It was blocking the "get rid of the old GUI" milestone so a basic port was made. Uri submitted a new design, but I have yet to implement it. For now it's barely working, but it's good enough for an alpha.

The dialpad, call manager and conference support is back

As requested in Berlin, I added this to Alpha1. It allowed me to get rid of the old interface. So far the following features are enabled:

CLICK FOR VIDEO screenshot_20171213_063810

screenshot_20171213_064026

What's missing:

(backend) New QtQuick views

To implement Uri vision and solve some unavoidable limitations, I spent some time writing new QtQuick model/views. At some point I will upstream them somewhere, but for now it's still stabilizing. Performance is great when optimizations are enabled, but for now I prefer to validate the full view after each changes. This has an O(N^2) complexity and is very slow. To do that it has to keep the full model in memory instead of a sliding window of what's visible, making things much worst. However it did address the limitations it was designed to fix, so it was worth the trouble and delays.

Shortcuts and notifications

I ported some KDE frameworks designed for QtWidgets applications to support Kirigami ones. It "works" on some systems but for unknown reasons not on Ubuntu 17.04 with Unity. I am investigating what's going on. It's wierd.

Manu small details left and right

A metric tons of papercuts have been addressed.

Known issues

What's next

I propose publishing Alpha2 Friday or Monday with:

They are both mostly implemented, but in branches as Alpha1 is already very late and the priority.

A couple days after Alpha2, I would publish Beta1 quickly followed by 3.0.0 before the end of the year as promised.