Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Funding for a Linux release [$1,500 of $1,500] #221

Closed
cztomczak opened this issue Jan 2, 2018 · 90 comments
Closed

Funding for a Linux release [$1,500 of $1,500] #221

cztomczak opened this issue Jan 2, 2018 · 90 comments
Labels

Comments

@cztomczak
Copy link
Owner

cztomczak commented Jan 2, 2018

For those interested in sponsoring a Linux release. This initial Linux release would include basic functionality - only some of the options in the settings.json file would be supported. With time more settings may be added. For now let's just make it work on Linux!

Funding will be carried out using bountysource.com website. Multiple people can post bounties and make up for the goal ($1,500). See the issue on bountysource:

https://www.bountysource.com/issues/53303038-funding-for-a-linux-release

Related issue: #77 ("Linux support").

Fundings for other features presented on the PHP Desktop Pro wiki page are also possible.

@beshoo
Copy link

beshoo commented Jan 8, 2018

So there is no BETA to test ?

@cztomczak
Copy link
Owner Author

Pull requests are welcome.

@phpengine
Copy link

Great, In regards to testing with different OS's, thats something I can definitely do. I do DevOps bits, so I've started looking at creating a pipeline that can run tests automatically after a commit/tag, getting them to run on multiple OS's should be reasonably simple. I'll hopefully have something useful in about a week. I'll also create a VM dev environment for it too.

@phpengine
Copy link

Also as an FYI, I'll be meeting either half or all of this next week. Thanks

@cztomczak
Copy link
Owner Author

Okay, great.

@somasekhard79
Copy link

I am waiting for linux support release,

@phpengine
Copy link

phpengine commented Feb 5, 2018

Hey @cztomczak , I've just posted half the bounty for this job - Unfortunately a bit late... I'll get the rest in over the next couple of weeks. Thanks in advance :)

@cztomczak
Copy link
Owner Author

@phpengine Thank you :-) I will take on step one, which is to investigate the best option for the GUI framework to use. As described in Issue #77, either CEF Views can be used (these unfortunately are not supported on Mac, so cannot be reused) or GTK API can be used. CEF Views have some nice features and easy integrate with CEF without any focus/keyboard issues. When using GTK the code is more complex, but has no limitations on CEF limited API, however there are known keyboard issues as reported here.

@cztomczak
Copy link
Owner Author

I've been testing CEF views and everything works fine. You can run upstream cefclient sample application in views mode by passing --use-views flag. Views API is very straightforward and its api is available in CEF's include/views/ directory. Classes that interest us are CefWindow and CefBrowserView. CefWindow has some useful methods that will make easy to expose these features via settings.json: CenterWindow, SetAlwaysOnTop, SetFullscreen, SetWindowIcon, SetWindowAppIcon. I've run performance tests in both normal mode in cefclient and with views and both modes have the same performance. (ran tests > webgl).

CEF on Linux unlike CEF on Windows doesn't have all the features built-in. For example there is no default implementation for dialogs on Linux. These need to be implemented by app. When running cefclient > tests > dialogs you can see that they don't work. This includes things like:

  • js dialogs such as alert/confirm/prompt
  • file dialogs (open, save)
  • print dialog (from mouse context menu or when called via window.print)

Each of these (js dialogs / file dialogs / print dialog) need to be implemented separately, so these are three tasks in total. @phpengine Which of those are essential for you?

Drag and drop within window works out of the box. However drag and drop from external sources doesn't work. I don't think dragging files from external sources works neither on Windows.

@cztomczak
Copy link
Owner Author

I've asked question on the CEF Forum in regards to implementing dialogs when using CEF Views. CEF topic for reference: https://magpcss.org/ceforum/viewtopic.php?f=6&t=15778

@phpengine
Copy link

phpengine commented Feb 21, 2018

Hey, sorry it took so long to repond. I've spent most of the last week bedbound by flu. Thanks for these, I've had a look, and I think we'd need them all. Having said that though, I've already written replacements for the JS Dialogs, so we could do those last. I'd also be happy to put as much more in the bounty as we need, if it could be possible get them all in at some point. I would say file dialogs would be most important for me, as one of the first apps we'll try to build is like Office. Thanks, Dave

@cztomczak
Copy link
Owner Author

Sorry to hear that you're sick. I wish you a fast recovery. Okay so file dialogs are priority no1. Hopefully these can be easily integrated with CEF Views using existing implementation in cefclient, will see.

@somasekhard79
Copy link

Hi, any updates in this. I am waiting for linux desktop release. I will also try to fund. Thank you

@cztomczak
Copy link
Owner Author

The goal for this funding is set to $1000. So far only $500 was posted.

@phpengine
Copy link

Hi guys, sorry it's been a while. I've just posted an extra $350 in. Hope it helps! Thanks @cztomczak

@phpengine
Copy link

phpengine commented May 31, 2018

Not sure whats wrong with the payment... I sent it and paypal sent me a receipt but its not showing on the bountysource site. I've emailed them. I'll hopefully do the rest next week :)

@cztomczak
Copy link
Owner Author

Thanks. The earliest I can start working on this feature is somewhere after June.

@mattpass
Copy link

mattpass commented Jul 31, 2018

@cztomczak I am so happy to see a Linux build is planned. Are you working on this already and is an ETA planned? (I'm not sure if we're talking 3 months, 6 months etc?). I use PHP Desktop daily from my Windows machine and it rocks!! I'd be happy to chuck in $100 into your pot if you can make a Linux build happen (and also let us know an ETA) :-)

@cztomczak
Copy link
Owner Author

I only did initial investigation of what solutions to choose so far. The goal is still not met, so the actual coding has not yet started. I've just increased the goal to $1,500. The work will begin after the goal is met.

@phpengine If you would like to withdraw your bounty, since I've increased the goal, you are free to do so.

@mattpass
Copy link

Oh right, reading through comments it seems like you're actually on $850 and the new goal is $1500?
I can put $100 in, maybe a little more and $200 at max, but don't think it'll quite get us there?

@mattpass
Copy link

PS - this'll be totally worth it for the money, just need to find that money for you :-)

@cztomczak
Copy link
Owner Author

There is the "Backers" tab on bountysource and I can only see $500 posted there.

@cztomczak
Copy link
Owner Author

@phpengine In case you haven't heard, bountysource will be taking fees for unclaimed money over 90 days. I am considering changing the funding platform, as this doesn't sound right. One alternative is https://issuehunt.io/ .

Original announcement about the fees from bountysource:

Bountysource is a community orientated platform with minimal operational overheads. Holding money for extended periods of time is causing costs to be incurred in accounting and maintaining the balance sheet. Bountysource management will be adding an inactivity fee to minimise costs in holding your money for long periods.

From 1st December 2018 we intend to start applying a monthly fee of $10 + 10% for unclaimed money over 90 days

You can avoid the inactivity fee by simply withdrawing your money regularly.

Note: All crypto bounties you earn are not affected as Bountysource incurs no cost in holding crypto bounties for you. Additionally there is currently no fees charged for crypto bounties. We encourage you to post crypto bounties instead.”

Thanks,
The Bountysource Team

@cztomczak
Copy link
Owner Author

@phpengine If the bounty doesn't reach $1,500 this month, I suggesst you withdraw the money from bountysource to avoid the fees. You should do it before December 1st.

@phpengine
Copy link

@cztomczak Hey dude, thanks for the heads up there, I thought it might be more efficient if I just get it done in the next week. I probably should have checked the exact status of this change to the terms of the payment first... but I'm sure I can get the remaining $150 in within a week. What happens after that on Bountysource? If needed, I can withdraw those payments and put them into the Issuehunt task you mentioned, or we can finish this one in Bountysource and do the others on Issuehunt. Do you have a preference there?

@cztomczak
Copy link
Owner Author

@phpengine Thanks. It looks like that if you withdraw the money from bountysource you have to pay 10% fee. Regarding the 10% fee for unclaimed money, it's not clear if this also applies to active issues that people are working on. I took a look at issuehunt.com and their fees are also not clear. You can email bountysource support and ask about the 10% unclaimed fee, if it applies here.

@cztomczak
Copy link
Owner Author

@mattpass There is only $150 missing here to make for the goal.

@cztomczak
Copy link
Owner Author

Release 70.3 is available for download, please test:
https://github.com/cztomczak/phpdesktop/releases/tag/linux-v70.0

@cztomczak
Copy link
Owner Author

Release 72.0 is available for download. Updated to latest Chrome/72.0.3626.81. Please test.
https://github.com/cztomczak/phpdesktop/releases/tag/linux-v70.0

I think this release is now feature complete as per the "initial release" discussed in this issue. All important features are working. Please test and if everything works well I will make a final official release in a week or so.

@ZanderBrown
Copy link

I really don't understand why you using X and Gtk2

@phpengine
Copy link

Hey @cztomczak , all looks good so far - thanks very much. A couple of questions/points on the settings.json file please.

  1. When I hover over the application icon in the Ubuntu taskbar, it shows Phpdesktop, as opposed to the main window > title value.
  2. What value should I put in GUID? A long random number?

@cztomczak
Copy link
Owner Author

@ZanderBrown Is that a question?

@phpengine

  1. Title in taskbar works fine for me. Can you provide a screenshot and more details on your environment? Ubuntu 14.04 with default window manager in my case.
  2. A random id, see https://www.google.com/search?q=guid . App creates /tmp/{guid}.pid file based on guid, so any chars that can be used as filenames are fine.

@phpengine
Copy link

@cztomczak

  1. https://gist.github.com/phpengine/99032bc4b485184cc8f0c66ea84e2cd9 Image is shown in the above Gist, I'm using Ubuntu 17.10. I'll try on 18.10 and let you know how that goes.
  2. Cheers, I'll do that today

@phpengine
Copy link

Hi @cztomczak , for the size of the window, is there a way to specify a percentage of the screen size instead of a fixed pixel value, so it fits on differently sized screens?
"default_size": [800, 600]

@cztomczak
Copy link
Owner Author

@phpengine
It seems that your window manager takes app title in taskbar from executable's name. Just rename "phpdesktop" executable and taskbar title will change accordingly. If you package app and create shortcut for app then you can customize taskbar more.

Regarding percentage of the screen. No, such feature is not available. For now just guess the best size that fits content in your app and make it fixed.

I am open to developing phpdesktop for Linux further. As for this issue the goal was to make phpdesktop for Linux just work. An initial release.

@cztomczak
Copy link
Owner Author

cztomczak commented Feb 5, 2019

@phpengine If you package app in a way that uses custom scripting then you can customize settings.json during installation of your program.

@ZanderBrown
Copy link

@cztomczak kinda?

You seem to have made a backwards step without really explaining why

My (very brief) look at the commit didn't reveal anything hence my statement

Disclaimer: I am a member of the GNOME Foundation and know those responsible for Gtk

@cztomczak
Copy link
Owner Author

@ZanderBrown Are you having any specific issues with GTK 2 in phpdesktop? Or is it GTK in general? Upstream CEF depends on X11, so you can't get rid of that. Upstream CEF sample application cefclient which is best tested for most features is written using GTK 2. I've copied code that handles dialogs (js, print, file) from cefclient, so it is based on GTK 2 and reusing that code saved me much time.

@cztomczak
Copy link
Owner Author

Upstream CEF currently depends on X11, although there are plans to support other alternatives in the future.

@cztomczak cztomczak pinned this issue Feb 6, 2019
@ZanderBrown
Copy link

I have no issue with Gtk, quite the opposite

There isn't that much variation between Gtk2 & 3 for what you seem to be doing but using 2 means your starting a new product based on deprecated technology with no support for HiDPI or Wayland (amongst other things)

Whilst it's true upstream CEF does force you to have an indirect dep on X there is no reason for you to use it downstream rather than use Gtk API allowing you to get "Wayland for free" once CEF supports it

@phpengine
Copy link

In regards to further development, I'll probably put together a list of bits of bits I'd like or need to use, and then maybe use that as a baseline for all three OS versions. I'll spend a few days on that, and probably just list those things here.

@phpengine
Copy link

In regards to what @ZanderBrown mentioned, I don't know how enough about the internals of what's being built to be able to comment as yet, so if its necessary or beneficial enough then it could go on to that list or be looked at for future?

@cztomczak
Copy link
Owner Author

@ZanderBrown The only thing that forces GTK 2 in phpdesktop is the dialogs (js, print, file). I was very clear in this issue that the goal was to make phpdesktop just work on Linux with its initial release, not to make it perfect. The resources (money) are limited. Pull requests to upgrade this code to GTK 3 are welcome.

@phpengine Sure, make a list and we can discuss it.

@cztomczak
Copy link
Owner Author

@ZanderBrown Personally I don't like the tone of your comments. I don't see you contributing to this funding or the project, so I don't understand the basis for your pretentions.

cztomczak added a commit that referenced this issue Feb 8, 2019
Add new 'build-php-with-ext.sh' script that builds PHP with
mysqli and pgsql extensions support. Note that pgsql extension
has a dependency 'libpq5' that has to be installed on end user
machine.

Shipping both 'php-cgi' and 'php-cgi-mysqli-pgsql' PHP binaries
with PHP Desktop releases.
@ZanderBrown
Copy link

Pull requests to upgrade this code to GTK 3 are welcome.

I can give it a go I guess, currently failing to build using your instructions though

ninja cefclient fails with a load of error: ‘cfi-icall’ attribute directive ignored [-Werror=attributes] (cef_binary_3.3538.1852.gcb937fc_linux64 / g++ (GCC) 8.2.1 20181215 (Red Hat 8.2.1-6))

I don't see you contributing to this funding or the project

Sure but I've used it in the past

I don't understand the basis for your pretentions

As previously state I am associated with the upstream for some of the technology involved + want to see phpdesktop do well, I have no intention of seeming pretentious here

@cztomczak
Copy link
Owner Author

@ZanderBrown Please report build problems on the Forum. Here are my versions of tools:

cmake version 2.8.12.2
g++ (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
ninja 1.7.2

@cztomczak
Copy link
Owner Author

I did a new release PHP Desktop v72.1 for Linux a few days ago. I've posted a news about it on reddit, so quite a few people already tested it and everything is working fine.

It's time to close this issue.

@phpengine When you have a list of new tasks ready, please send me an email and we can discuss it there.

@cztomczak
Copy link
Owner Author

@phpengine I have submitted a claim for the bounty on bountysource. It says that two users need to approve this. It seems you have backed it using two different accounts.

@cztomczak cztomczak unpinned this issue Feb 11, 2019
@phpengine
Copy link

@cztomczak , apologies for the delay there, I'm about to release the bounty. All the bits I've checked worked fine so far. I've fully ported over the first electron app. If anything minor or missed comes up, can I add it here for you? As mentioned before, I'm still working on that list of new bits. Thanks, look forward to working with you again or the OSx and Windows versions!

@phpengine
Copy link

@cztomczak Payment released

@cztomczak
Copy link
Owner Author

@phpengine Thank you. It's all fine. For new tasks I guess we can talk via email and then create new issues in the tracker for these tasks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants