Skip to content

Instantly share code, notes, and snippets.

@amaitland
Last active January 3, 2018 07:40
Show Gist options
  • Save amaitland/91dae9ecfe8c47d0da08e000685eeef2 to your computer and use it in GitHub Desktop.
Save amaitland/91dae9ecfe8c47d0da08e000685eeef2 to your computer and use it in GitHub Desktop.
Funding Proposal for CefSharp release

Funding Proposal for CefSharp 63.0.0 release

Update

I've created a Patreon page at https://www.patreon.com/amaitland

All details are outlined there, work is underway!

--

JavaScript Binding(JSB) issue

See cefsharp/CefSharp#1203 for the bug tracking this issue

Current implementation relies on process-per-tab command line flag to limit the number of browser process per ChromiumWebBrowser instance to one, this worked well up until version 58 where the flag no longer works. Chromium will likely re-add support, there is no timeframe on the open tickets as yet, see https://bugs.chromium.org/p/chromium/issues/detail?id=719961 and https://bugs.chromium.org/p/chromium/issues/detail?id=717459

A handler in the main process for notification of sub-process creation and termination, and to receive IPC messages originating from the sub-process.

CEF will likely add a handler that can be used for resolving this issue and maintain the exact same functionality as exists today without having to use process-per-tab command line see https://bitbucket.org/chromiumembedded/cef/issues/2279/expose-custom-sub-process-handlers

As both options have no set timeframe we can rewrite our currently implementation to work slightly differently, bound objects will need to be registered slightly later, so won't be avaliable immediatly after the V8Context has been created. To get around this an event can be added to notify subscribers (in javascript) when object binding has been finished.

@mitchcapper
Copy link

Great to hear you have a potential javascript fix.
As to funding:
I talked a bit on gitter and with @perlun privately about this. He indicated for now he didn't think it was the right time for him to take such a role. It sounded like you were taking a step back but if you potentially are returning it may be more viable.

I was recommending try to get a recurring funding source established. Recurring contributions are generally far more sustainable than specific release targeting. Paying someone (you or someone else) to do the ongoing maintenance which is certainly somewhat tedious seemed like the best option as it can be hard to get people to do that work for free on a long term basis. In addition with recurring funding a larger volume of small amounts (say $100 a year or what have you) could do so.

As it is unclear how many people might support such a funding method I was suggesting a kickstarter. The kickstartarter would serve two purposes: 1) Raise funding to cover the setup or the organization/ billing system and the first year run costs. 2) Generate an initial membership base (Kickstarter rewards could be as basic as a discounted first year membership at $80 or something).

This would ensure critical mass (so people don't have to put up money before making sure others would do so) and minimize the amount of work that would have to be done to see if it is viable.

Membership could result in access to early builds.
Another useful item might be better automate build support. Right now its a PITA and takes quite some time to manually compile builds. Some of us may require compiling our own binaries (for say mp3 support or other codecs). It would be beneficial if there was (for example) a Docker container to automate building from start to the nuget package result.

More incentives could be created (for example places like uservoice allow users to vote up features/bugs desired, members maybe get more votes to cast). I am not sure thats really the best, as it isn't really about creating a huge benefit for members as much as just supporting a project.

Granted this is a larger task than just funding one build but it might help to make the entire project more sustainable in the long run. This also requires trying to establish what the funding requirement would be to make the project sustainable on an annual basis without knowing exactly what that work would entail.

Either way as long as contributing does not require a paypal account I am happy to contribute. The project is fantastic and I appreciate all the work everyone puts into it.

@perlun
Copy link

perlun commented Dec 12, 2017

Great to see you back @amaitland! 😃 One quick comment from me:

MP3 decoding should be included in 3239 branch by default (no licensing required), this has yet to be officially confirmed as no CEF version is available, will be confirmed ASAP

This is unfortunately not the case from what I can tell. See cefsharp/CefSharp#1479.

As Chris notes in c#10, in M64+ MP4 and MP3 are available in Chromium. While the container will demux and the codec will now play, we're still sorting out the mime-type issues though so canPlayType/isTypeSupported aren't accurate.

There will be no updates to M63 for this.

So, we will not be able to ship the MP3 support in CefSharp 63. It will have to wait until CefSharp 64. 😭 😭 😭

(Note: like you say, there are now CEF builds for version 63 yet, so it might be that I am wrong; this is my interpretation of reading the Chromium issues about this specific issue.)

@GrabzIt
Copy link

GrabzIt commented Dec 12, 2017

Great that you are back @amaitland I think regular contributions are a good long term idea.

@amaitland
Copy link
Author

So, we will not be able to ship the MP3 support in CefSharp 63. It will have to wait until CefSharp 64.

Thanks @perlun, reading https://bugs.chromium.org/p/chromium/issues/detail?id=746579 and I think your correct, it's been tagged as M64. That is a shame, oh well. One day maybe!

@perlun
Copy link

perlun commented Dec 15, 2017

@mitchcapper

Membership could result in access to early builds.
Another useful item might be better automate build support. Right now its a PITA and takes quite some time to manually compile builds. Some of us may require compiling our own binaries (for say mp3 support or other codecs). It would be beneficial if there was (for example) a Docker container to automate building from start to the nuget package result.

I'm not sure I like the idea of making this a "membership" feature. We use AppVeyor and MyGet at the moment, both of which are free services provided to use as an open source/free software project. If we start charging people for these kind of things, I'm not sure how well it would be taken by these providers, given that they don't charge us for their services.

Mitch, maybe we could just solve that by adding you as a contributor/maintainer? That way, you can easily get access to the MyGet & AppVeyor stuff. If you are interested, just drop me and/or Alex an email and we can discuss it.

@mitchcapper
Copy link

@lufave it is not, try gitter for cefsharp: https://gitter.im/cefsharp/CefSharp

@perlun - Sure sorry I wasn't suggesting making anything current private. I was more saying for those who may need to compile CEF with optional flags providing an easier solution to do all 3. I did like your idea of allowing swappable cores that CEFSharp was on top of (depending how feasible) but container (or other automation) to do:

establishing the environment and dependencies
running the CEF automated build process with optional build args from https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding#markdown-header-automated-method
running the build script from https://github.com/cefsharp/cef-binary
running the build script from https://github.com/cefsharp/CefSharp

would make it easier. I already came pretty close previously to setting this up. Just trying to think of features that might help others.

@vwmberry95
Copy link

Great idea! I missed the pricing, is that listed somewhere?

@amaitland
Copy link
Author

@vwmberry95 I've just created https://www.patreon.com/amaitland

Comments welcome.

@dandotevans
Copy link

image made my pledge. Pleased to hear there is a roadmap to resolving the JSB issue, have had to move our application back to v52 due to the memory issues and my team are slowly turning against me as they can't use some new dandy css command..

@amaitland
Copy link
Author

made my pledge. Pleased to hear there is a roadmap to resolving the JSB issue, have had to move our application back to v52 due to the memory issues and my team are slowly turning against me as they can't use some new dandy css command..

Thank you so much!

@mitchcapper
Copy link

Not sure why the patreon page got removed, certainly unfortunate. I don't know if $1000 per release would have sustained CEFSharp on the every other release schedule, but if so there certainly seemed like more than enough interest to hit that target (even given minimal advertising) given it was already at ~$800 if I remember correctly. Is there another platform that would work for recurring? Is there a way to bring the project into compliance with whatever issue they had?

@dandotevans
Copy link

Frustratingly patreon has also suspended my account this morning. have sent them a request to revert but they have also given no detail as to the reasoning other than just fraud. Nice that they waited until after they had taken my money for this months support (with the exception to Alex as his page was down) as I've mentioned already, if your able to setup an alternative I will re-pledge the same per month.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment