cordova-rtc / cordova-plugin-iosrtc

Cordova iOS plugin exposing the WebRTC W3C API
MIT License
690 stars 338 forks source link

Looking for new maintainers #353

Closed ibc closed 5 years ago

ibc commented 5 years ago

It is obvious that both @saghul and @ibc, maintainers of the cordova-plugin-iosrtc, no longer contribute to this project. We no longer use it professionally, we have other projects to maintain and the lack of time makes it impossible for us to participate in this project anymore.

So we are looking for new maintainers for cordova-plugin-iosrtc.

TODO

Here a list of tasks that IMHO this project needs to accomplish with:

Other thoughts

New maintainers

People interested in become project maintainers, please comment into this issue. @saghul and me will consider any proposal and make a decision ASAP, and will give the corresponding rights in both GitHub and NPM ecosystems.

cnjack commented 5 years ago

good news~

jjahifi commented 5 years ago

I am willing to participate in the effort of maintaining this plugin. I do, however, use only a part of WebRTC functionality in my projects. Handling video on iOS is something I don't currently do and developing/testing video related issues is something I am unlikely to have time for. For that reason additional people are needed.

micaelgallego commented 5 years ago

We are using this plugin to allow developers to implement video applications using OpenVidu in Ionic4 in iOS. We can test video related features in ionic4 applications.

@jjahifi we can help you to maintain the project, but we have no experience with native iOS development and with cordova plugin development. Said that, we can help you in testing activities.

krneticz commented 5 years ago

@ibc @saghul guys do you have a ballpark idea how much time it is for somebody working full time on this just to update it so that it works with the latest Xcode/ iOS/adapter.js (see this https://groups.google.com/forum/#!topic/cordova-plugin-iosrtc/T0pPCV46p9w)? Are we talking about days, weeks or months? Do you know anybody who would consider paid work contract to do it? We have two production applications depending on this plugin.

Thanks a bunch!

saghul commented 5 years ago

I'd say it a week of work. Alas I don't know who you could talk to.

micaelgallego commented 5 years ago

@krneticz in our team we could try to update it. Please send me a private to openvidu [at] gmail.com for details

ibc commented 5 years ago

Hi Micael, do you mean also maintaining the full project?

ibc commented 5 years ago

Note that upgrading libwebrtc is not enough. The exposed API must be modernized to transceivers, etc.

jjahifi commented 5 years ago

@micaelgallego I will be happy to participate in the maintenance effort if your team can take the main responsibility. But, as I wrote earlier, I use only a part of the WebRTC api.

micaelgallego commented 5 years ago

We don't have any experience with iOS development and it can be very difficult for us to improve this library.

If someone else leads the process, we can help to test it.

jjahifi commented 5 years ago

We are currently evaluating the possibility of moving to full native on both iOS and Android. If we decide not to do that, then I am willing to take the lead. Before taking the lead I have to get some positive policy decisions from our own organisation. Before those decisions I am unable to commit myself. I can promise participation before those decisions, but taking over is something else.

I'll try to get those decisions done as soon as possible.

ibc commented 5 years ago

Hi guys, thanks for your replies. Although there is people interested in helping here, the project obviously needs a leader (or team) that can deal with every aspect of the lib, including audio, video, new WebRTC API, iOS related stuff, etc.

jjahifi commented 5 years ago

We have decided to stay with Cordova for some time at least. Hence we have interest in keeping this library usable and up-to-date.

I have looked at the implementation of the library and upgrading/maintaining it does not look too complicated. Hence I am willing to participate in the effort. Unfortunately my interests are quite strictly limited to those WebRTC features we are using. In addition, I have not yet received permission to take responsibility on the whole library (company policy etc, you know).

In other words, other people would be required in addition to me. And that is supposing that I will get the permission to take the lead.

MatthewTrout commented 5 years ago

As previous comments, unlikely to be able to lead the project, but am certainly up for contributing. Am using this in a cordova project, and will need to support this for some time..

oscarvadillog commented 5 years ago

Anyone with experience with Swift? I can support in the JavaScript side. An update of the Swift version would be nice... come guys!

jjahifi commented 5 years ago

I have finally got the permission to take an active maintainer/lead role. There are, however, some caveats.

In other words: I can start maintaining this, but I will not be able to do it without help from others.

saghul commented 5 years ago

Thanks for volunteering @jjahifi ! Some thoughts:

* The time I can use for this is limited. Fast reactions should not be expected.

Understandable!

* I am not familiar with some of the tools used (we use other tools in-house), which makes some things a bit slow in the beginning.

Can you elaborate on the tools? We don't use anything exotic here IIRC.

* **Contributions from others are absolutely necessary!** I am unlikely to develop or test code for features we are not using.  Without contributions some features of the full API are likely to break.

Sure, nobody expect a single person to fix all problems, but your second stement is unacceptable. which it's undertandable that areas you are using get more attention, breaking APIs or otherwise working code is not acceptable.

* If we decide to go for full native on iOS, then I will have to withdraw from maintaining this plugin.

Understandable!

Cheers,

jjahifi commented 5 years ago

Ah, bad wording from my part. What I intended to write is something like that an API may break without any action from my part, but due to changes in tools or in iOS. The most common reason that comes to mind is that Apple changes something in iOS or in Xcode and the code of the plugin requires corrective action. If the change is in something that we do not use, then such a change may break an API, but I may not even recognise the problem. This has happened before and is actually quite likely.

saghul commented 5 years ago

Understood, thanks for the clarification!

In that case, feel free to start sending PRs and as soon as a couple land we'll give you the commit bit.

@ibc How about we create a "dev" branch where all this new work goes and merge back to master and release once it's ready?

ibc commented 5 years ago

"dev" branch created.

paulfreeman commented 5 years ago

@ibc wrote back in January,

Note that upgrading libwebrtc is not enough. The exposed API must be modernized to transceivers, etc.

I've been researching this for a client of mine. Would it be better to replace the libwebrtc static lib with the dynamic library from the native build process at https://webrtc.org/native-code/ios/ ? Building the static lib seems not to be documented, and blog articles describing the process are several years old. Presumably the dynamic lib would expose the same headers, so it would then be just a case of updating the plugin to match any API changes since the last libwebrtc build? Have you any insight into this? Would it still be better to update the static lib do you think?

ibc commented 5 years ago

Would it be better to replace the libwebrtc static lib with the dynamic library from the native build process at https://webrtc.org/native-code/ios/ ?

Probably, but this issue is about looking for maintainers.

paulfreeman commented 5 years ago

Sure, apologies.

hthetiot commented 5 years ago

I originally wanted to simply fork via GitHub repo and use cordova plugin spec attribute with fix for Xcode 10.2 Swift 4.2 requirement provided via @albanonm (https://github.com/BasqueVoIPMafia/cordova-plugin-iosrtc/pull/356) but cordova plugin spec did not work on all cordova/npm version or platform, even without "git+http" and using "http://github..." in package.json and confix.xml it still ended up causing issues.

So, I ended up having to publishing an NPM package to get the fix out, I added couple of changes including Travis for iOS cordova/ionic using Xcode 10.2 and other minors changes. Any contribution welcome.

This failed

npm uninstall cordova-plugin-iosrtc --save
ionic cordova plugin remove cordova-plugin-iosrtc
ionic cordova plugin add https://github.com/simplyrtc/cordova-plugin-iosrtc.git
ionic cordova platform remove ios
ionic cordova platform add ios

Resulting into

Unable to load PlatformApi from platform. Error: Cannot find module 'cordova/exec'
Error: Unhandled "error" event. (The platform "cordova-plugin-iosrtc" does not appear to be a valid cordova platform. It is missing API.js. cordova-plugin-iosrtc not supported.)
[ERROR] Exception: 
The command "ionic cordova platform add $CORDOVA_PLATFORM" exited with 1.

This should work now

ionic cordova plugin remove cordova-plugin-iosrtc
ionic cordova plugin add cordova-plugin-iosrtc-simplyrtc

Then building using xcode 10.2 result in:

Processing settings for platform: ios
--save flag or autosave detected
Saving ios@~4.5.5 into config.xml file ...
iosrtc-swift-support.js [INFO] ".pbxproj" project file found: /home/me/platforms/ios/myApp.xcodeproj/project.pbxproj
iosrtc-swift-support.js [INFO] ".xcconfig" project file found: /home/me/platforms/ios/cordova/build.xcconfig
iosrtc-swift-support.js [INFO] fixing issues in the generated project files:
iosrtc-swift-support.js [INFO] - "Runpath Search Paths" to: "@executable_path/Frameworks"
iosrtc-swift-support.js [INFO] - "Objective-C Bridging Header" to: "myApp/Plugins/cordova-plugin-iosrtc/cordova-plugin-iosrtc-Bridging-Header.h"
iosrtc-swift-support.js [INFO] - "ENABLE_BITCODE" set to: "NO"
iosrtc-swift-support.js [INFO] - "SWIFT_VERSION" set to: "4.2"
iosrtc-swift-support.js [INFO] file correctly fixed: /home/me/platforms/ios/cordova/build.xcconfig
iosrtc-swift-support.js [INFO] file correctly fixed: /home/me/platforms/ios/myApp.xcodeproj/project.pbxproj

@albanonm if you want admin on npm and github for cordova-plugin-iosrtc-simplyrtc or any other Same for @ibc @saghul, but I think they looking for others to help here.

More info:

ibc commented 5 years ago

I don't think this is getting any success, am I wrong?

saghul commented 5 years ago

Looks like @hthetiot did the work, right?

jjahifi commented 5 years ago

It seems that I cannot live to my promise on maintaining this. Too much other work. Therefore I would definitely like somebody else having the main responsibility. I am likely to be a bit busy in the near future also. Therefore hthetiot or somebody else is likely to be a better maintainer.

I am sorry for this, but sometimes you cannot influence your employers priorities.

saghul commented 5 years ago

@hthetiot Hey there! Looks likeyou've doing some good work. Care to send a PR?

hthetiot commented 5 years ago

@saghul sure I can do that, but will it be merge? I don't like make PR that stay open. It prevent me to sleep :)

hthetiot commented 5 years ago

@ibc @saghul would you consider moving this repository to non-profit affiliated Github organisation such as https://github.com/simplyrtc if I decide to maintain it. I could have forked to a for-profit such as Sylaps or other company I work for in the space but it's not the way I see open-source.

For example Priologic refuse to make EasyRTC non-profit affiliated despite them not contributing or maintaining it since Sep 8, 2017, that why I dont support it anymore and they also refuse to provide NPM and Github full access. I would grant NPM and Github admin back of course to you also if you do that.

hthetiot commented 5 years ago

Here is the changes in a PR with v5.0.0 ready @saghul, please consider request above.

If you enable travis-ci.org on BasqueVoIPMafia you will also get a nice continuous integration.

saghul commented 5 years ago

I took a quick look and everything looks ok, thanks! I'll enable travis tonight.

As for the location, I don't have a strong preference TBH, but just FYI "BasqueVoIPMafia" is not a for profit organization of any sort, it's just us, a bunch of mates.

@ibc WDYT?

hthetiot commented 5 years ago

"BasqueVoIPMafia" is not a for profit organization of any sort

Works for me then.

Let me know if you interested for me to maintains this repository, I would need to be able to manage Github issues and release on NPM in order do to that overtime.

I really like to keep someone around from the original team to peer review before releases/merge major changes, I would definitely try to follow @ibc TODO listed here overtime https://github.com/BasqueVoIPMafia/cordova-plugin-iosrtc/issues/353#issue-390679954

hthetiot commented 5 years ago

I did a PR with following changes #363 Thank you @saghul for review.

#### Version 5.0.0

* Convert syntax to Swift 4.2 (#356) credit to @albanonm
* Uncomment, and fix, onGetStatsCallback closure (#305) credit to @iFeli
* Update NPM dependencies
* Add Travis build (Ionic, Cordova, Browser, Android, iOS Xcode 10.2) (https://travis-ci.org/simplyrtc/cordova-plugin-iosrtc-simplyrtc)
* Fix gulp browserify caused by old vinyl package version
* Migrate from jscs to eslint to fix vulnerabilities reported by npm audit

Here is my next tasks I would do next if I become officially maintainer.

cc @ibc

P.S I love JsSIP (and FreeSWITCH :)

saghul commented 5 years ago

Sounds like a good plan! I'll take another look tomorrow and merge. Thanks a lot for your work!

ibc commented 5 years ago

Hi Harold, amazing work. BTW @saghul is doing a great job modernizing the JS API exposed by react-native-webrtc (moving from old stream based API to senders/receivers and transceivers, etc). You may want to take a look to his recent changes in order to modernize cordova-plugin-iosrtc if you wish.

ibc commented 5 years ago

@hthetiot may I know your NPM username?

ibc commented 5 years ago

This repo has been moved to https://github.com/cordova-rtc/cordova-plugin-iosrtc. @hthetiot you have been invited to that organization.

So:

$ git remote set-url origin git@github.com:cordova-rtc/cordova-plugin-iosrtc.git

I need your NPM username (to grant you NPM admin access in the package) and also your Google account to give you admin access to the cordova-plugin-iosrtc mailing list.

hthetiot commented 5 years ago

My NPM username is hthetiot also :) I will make a pre-release on old iosrtc-simplyrtc fork npm to be sure it works properly.

Thank you @ibc for trusting me with your project, it mean a lot coming from you.

I will look into react-native-webrtc and make a PR soon, I already have experience with ChromiumEmbedded build for OBS ;) I may try to make Travis build WebRTC I like having continuous integration.

I will review and tag existing issues also this week.

hthetiot commented 5 years ago

Note: travis-ci.org request for cordova-rtc sent to owner (via GitHub Application Setting) Cc @saghul

ibc commented 5 years ago

Thanks @hthetiot. Sorry, I forgot to add you as admin. I accepted Travic-ci in the meanwhile.

Also added to NPM so you should be able to publish now.

Thanks a lot!

saghul commented 5 years ago

Let’s close this then!

hthetiot commented 5 years ago

v5.0.0 has been released, thank you to all for warm welcome.

I have tagged all the issues, started libwebrtc update via rebase of

Happy RTC to all.

bigxd123 commented 5 years ago

Any update on "addTransceiver" support? I was trying to use this plugin with mediasoup v3 and it fails on that.

hthetiot commented 5 years ago

@hnlpower do you think a closed issue, that as nothing to do with your topic is the best way to ask this question?

This kind of feature will require libwebrtc upgrade, that is planned for version 6.

Either way there is alternative to this addTransceiver if you know how to use WebRTC API.

Please create proper issue if you want this to be properly reported. Improper issue will be closed, be assured to describe the API and their usage if you want the feature request be properly handled.

rajatbyte commented 4 years ago

@hnlpower do you think a closed issue, that as nothing to do with your topic is the best way to ask this question?

This kind of feature will require libwebrtc upgrade, that is planned for version 6.

Either way there is alternative to this addTransceiver if you know how to use WebRTC API.

Please create proper issue if you want this to be properly reported. Improper issue will be closed, be assured to describe the API and their usage if you want the feature request be properly handled.

Thank you so much @hthetiot , you saved my day! Thanks a lot for giving alternate solution