hoehermann / purple-gowhatsapp

Pidgin/libpurple plugin for WhatsApp Web.
GNU General Public License v3.0
276 stars 34 forks source link

build and install script addition #166

Closed beadon closed 1 year ago

beadon commented 1 year ago
hoehermann commented 1 year ago

Thank you for the suggestion, but I do not want this script in the repository. It implicitly removes the build cache which triggers a re-download and re-build of all go packages every time (on my system, that takes minutes). In my opinion, the build instructions in the README are sufficient for users to adjust for their needs.

beadon commented 1 year ago

oh, yes, the first step removes the build directory. This can be changed.

I am attempting to make it slightly easier for the beginner to install the plugin. Classic linux software and build installations have always been : ./configure ; make ; make install today these steps are quite muddled with lots of different toolchains and languages.

Perhaps a better way to keep the cache would be proposed changes to the cmake/make files. From here, control to add different targets like : clean ; install ; and modify the default target to manage the build directories accordingly ?

From here, it's a shorter hop to packaging concepts to get it into systems like apt.

Are you open to a proposal to a more more native way to manage build directories ?

hoehermann commented 1 year ago

Before I can make up my mind, I need to understand the problem and how the script is going to solve it.

For the Ubuntu users who do not want to compile themselves, I offer pre-built binaries. They also work on reasonably recent versions of Debian.

For everyone else, there are build instructions. The ./configure ; make ; make install has been well established in the 90s. Indeed, today, there are many other tools. However, cmake .. ; make ; make install is also well known. It is literally only the configuration step that is different.

If the script exists, people will want to use it. But does it work on Debian? How about Arch or Alpine Linux? Gentoo? Why does it automate the build (which are trivial), but not fetch the dependencies (which are annoying to resolve)? I do not want to maintain it. Do you?

Experts on the other hand, will not use it because they are comfortable with the build instructions. I think the demographic that may benefit from the script is very small. For these reasons, I would rather not have the script to make clear: Either use the pre-built binaries or build it yourself, but expert knowledge is required.

beadon commented 1 year ago

Oh I see the pre-built binaries now. I was not aware this was available!!

It's possible I missed the documentation for the binary releases, but on re-reading I don't see this in the README.

I am running Ubuntu 23.04 and didn't have an option to install this plugin via apt, so I dutifully took steps to improve the processes leading towards binary creation and ultimately packaged apt releases.

The problem I want to solve is:

Including Ubuntu into this should assist with the fairly large audience to cover the issue of #1 - increasing adoption and make software updates easier for the end-user.

So , to tackle the root of this then I am proposing : a package script driven via cmake to turn the binaries you have into an apt package available for Ubuntu 23.04 and beyond.

Note: It appears that the binaries supported today cover only through 22.04. The naming convention with Ubuntu is easier than it looks , the 2-digits out front indicate the year (23 = 2023 ) and the 2 digits at the back indicate the month 04 = April. These bus-stop releases mean that there are 2 major releases a year, with one in April and one in December. Which just means there are a maximum of 2 places per year where packages should be tested/recompiled as needed.

What do you think ?

hoehermann commented 1 year ago

What do you think?

I am grateful for your input.

I don't see this in the README

It is there, in the section "Build". I can move the link to the top, so it becomes more visible.

easier to use and install

Installing won't get any easier than "download into folder and restart Pidgin", I am afraid.
Ease of use is another topic. The plug-in is mostly geared to how I want it to be. I have been working together with Peter to identify features for other (especially blind) users. What would you like to see?

reduce the number of (…) messaging applications

That is precisely why this plug-in exists. :)

(…) there are a maximum of 2 places per year where packages should be tested/recompiled as needed.

Unfortunately, it is a bit more complicated than that. This plug-in is using whatsmeow, which – as far as I understood – is a reverse-engineered variant of the WhatsApp Business API. Every time there is an update to the official WhatsApp client, whatsmeow needs an update and consequently this plug-in needs an update. This happens roughly twice a month. On the buildbot, you can see this with version whatsmeow_1.11.1r221. I did not change anything in the plug-in, yet there were about twenty updates to whatsmeow. Sure, some changes are non-breaking and you can get away with using an old version for quite some time, but it definitely is more than "twice a year". 😐

option to install this plugin via apt apt package available for Ubuntu 23.04 and beyond

This has been requested numerous times (last time in #116). Keep in mind that I am a single guy who maintains this plug-in in his spare time. I simply have no resources to provide packages. I guess I would need:

If you want to do that, I am completely game. You already have read access to this repository. Set-up the systems, apply for becoming a maintainer, handle the communication,… for me it is way out of scope. I am sorry.

beadon commented 1 year ago

Ok, I can take steps along this maintainer path -- I am unsure of the time commitment I can offer right now.

Immediately I can offer:

hoehermann commented 1 year ago

Your enthusiasm sounds good.

build environment for each distribution I would recommend we prioritize these

My suggestion: You start with current Ubuntu LTS + newer non-LTS releases.

an automated testing environment why we need to link to the official android client?

The linking process is one of the flaky parts. Some test cases include:

Normally, I have to sit there and click on buttons, hold my phone to the screen for scanning the QR-code. Very tedious. I think we need to have that automated. I do not even know what is necessary to feed the QR code into a virtual webcam which will then be available within an emulated Android.

Further test cases include:

Currently, I skip most of the testing, hoping for the best. However, this way I introduced many bugs I did not catch. This is okay for a "some guy on github" project, but not for an officially packaged product.

money to pay for all that Not seeing a cost here other than just time

I only run one server (hehoe.de – the one that offers the buildbot). It costs 60 € per year, but cannot do virtual machines (so limited to producing builds for the Ubuntu version it itself is running at). Machines for the systems mentioned above will cost money, too.

time and will to maintain the entire system get that "will" portion up

If you manage to cure my depression, that would be great. Being the pessimist that I am, I do not expect that, though.

become a maintainer in the targeted distributions unsure of the time commitment just yet.

There are some people describing their work here: https://www.reddit.com/r/linux/comments/kmat5j/what_exactly_is_expected_of_a_package_maintainer/
You can expect that being the maintainer of this plug-in is more time-consuming once it is available as a package.

On average, I spend about five hours per week on this project. That includes communicating with users (like writing this message right now). With that, I am at my limit (bear in mind that I have other hobbies and projects, too). I cannot do any more work. Consequently, every request that is coming in via the Debian/Ubuntu issue system would need to be addressed by you. You are in that position for as long as the package is listed. That is the commitment you will get yourself into. You will receive virtually no payment except for kind messages and maybe a small donation once a year, but occasionally someone will insult you. I am in no position to help you there. In case I quit my day job and miraculously find a sponsor who pays my rent while I do open-source development I could do that, but I do not see that happen. ;)

hoehermann commented 1 year ago

How about starting slowly (it just came to my mind): Instead of a build-script, you could look into supporting dpkg-buildpackage. That would be a good first step towards providing packages. I never figured out how write the control files.

beadon commented 1 year ago

Sure, crawl before running sounds good. I should have some time this weekend to dig in a bit more.

beadon commented 1 year ago

step 1 ... https://packaging.ubuntu.com/html/getting-set-up.html

beadon commented 1 year ago

step 2- fixing gpg local keys -- running down the path of an approved package manager for Ubuntu since it cover the packaging process and best practices.

step3 - using pbuilder to build a local packaging environment. sudo pbuilder create --distribution lunar

beadon commented 1 year ago

step4 - register with launchpad, import keys, etc ..

beadon commented 1 year ago

step5 - using bzr , begin packaging ..

beadon commented 1 year ago

bzr is ... strange.

beadon commented 1 year ago

notably -- found an example pidgin plugin packaged and delivered with apt. skype4pigdin --- reference: https://github.com/EionRobb/skype4pidgin/blob/master/skypeweb/README.md

checking into the cpack target in their cmake files ..

beadon commented 1 year ago

notably -- found an example pidgin plugin packaged and delivered with apt. skype4pigdin --- reference: https://github.com/EionRobb/skype4pidgin/blob/master/skypeweb/README.md

checking into the cpack target in their cmake files ..

After MUCH digging, it looks like their packaging system is broken ... raised an issue over there, will chase.

beadon commented 1 year ago

Fixed the skype4pidgin issues with cpack -- seems there was a just a typo in their config which prevented the package system from doing the right thing ! (no errors indicating a problem either!). anyhow -- building a similar cpack now for purple-gowhatsapp -- making good progress.

beadon commented 1 year ago

Good news ! I was able to get cpack working properly with a little bit of work. Pushed a PR for inspection, I think the libs are going to the right places -- double check please.