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

Looking for new maintainers #353

Closed
ibc opened this issue Dec 13, 2018 · 46 comments
Closed

Looking for new maintainers #353

ibc opened this issue Dec 13, 2018 · 46 comments
Assignees
Labels

Comments

@ibc
Copy link
Collaborator

ibc commented Dec 13, 2018

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:

  • Use the latest libwebrtc code.

  • JS: Remove callback based API (it's from 2014) and just use the new promise based API (currently both are implemented, but the code looks a bit hard to maintain this way).

  • JS: Remove the the super-old-and-deprecated WebRTC stream-based API (pc.addStream(), pc.removeStream(), pc.getRemoteStreams(), pc.onaddstream, etc). Instead modernize the exposed API to just deal with tracks and the new transceiver based API (pc.addTransceiver(), transceiver.sender.replaceTrack(), etc).

    • To be perfectly clear: This and just this is the API that this plugin should expose: https://www.w3.org/TR/webrtc/. Everything else is gonna die.
  • JS: Modernize the code to be more ES6 friendly (use arrow functions, const and let instead of var, avoid var self = this, etc).

  • Update NPM dependencies. There are many that are super old (such as the debug module) and must be updated to avoid some well known vulnerabilities.

  • Modernize Swift code to whichever the current stable/official version is.

  • When rendering audio/video into a HTML <video> element, make it possible to use videoElem.srcObject = stream being stream a MediaStream generated by the plugin (via getUserMedia() or a locally generated stream (const stream = new MediaStream([ track1, track2... ]);).

    • This is: stop assuming that just those MediaStream objects generated by the plugin can be consumed by the app to render audio/video. The app should be able to create a MediaStream instance, append tracks into it, and render it within a <video> element.

Other thoughts

  • cordova-plugin-iosrtc is supposed to provide a WebRTC 1.0 API for Cordova apps. This means that the plugin must not make assumptions or hardcode stuff just because "it works for my use case ©" (and personally I've seen many of them in some PRs).

  • Whether this plugin should also expose an API to select with iOS mic input and speaker output is unclear for me. Ideally, this should be achieved by the app which may even use another Cordova plugin for switching the audio input/output. The very same for requesting mic/cam permission. IMHO that should not be part of the plugin itself (this is a library, not an app).

  • RTCViews are placed on top of the HTML view, so if the page scrolls up/down/left/right, the app must move the videos by calling the corresponding exposed "refresh" API. I've seen some PRs that call such a "refresh" function every second which does not make any sense if the HTML content does not move. This is another example of "it works for my use case ©" that IMHO should be avoided.

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.

@ibc ibc added the question label Dec 13, 2018
@ibc ibc assigned ibc and saghul Dec 13, 2018
@cnjack
Copy link

cnjack commented Dec 17, 2018

good news~

@jjahifi
Copy link

jjahifi commented Dec 17, 2018

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
Copy link

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
Copy link

@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
Copy link
Collaborator

saghul commented Jan 17, 2019

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

@micaelgallego
Copy link

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

@ibc
Copy link
Collaborator Author

ibc commented Jan 18, 2019

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

@ibc
Copy link
Collaborator Author

ibc commented Jan 18, 2019

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

@ibc ibc pinned this issue Jan 18, 2019
@jjahifi
Copy link

jjahifi commented Jan 20, 2019

@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
Copy link

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
Copy link

jjahifi commented Jan 25, 2019

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
Copy link
Collaborator Author

ibc commented Jan 30, 2019

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
Copy link

jjahifi commented Feb 17, 2019

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
Copy link

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
Copy link

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

@jjahifi
Copy link

jjahifi commented May 5, 2019

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

  • The time I can use for this is limited. Fast reactions should not be expected.
  • 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.
  • 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.
  • If we decide to go for full native on iOS, then I will have to withdraw from maintaining this plugin.

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

@saghul
Copy link
Collaborator

saghul commented May 24, 2019

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
Copy link

jjahifi commented May 28, 2019

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
Copy link
Collaborator

saghul commented May 28, 2019

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
Copy link
Collaborator Author

ibc commented May 28, 2019

"dev" branch created.

@paulfreeman
Copy link

paulfreeman commented May 30, 2019

@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
Copy link
Collaborator Author

ibc commented May 30, 2019

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
Copy link

Sure, apologies.

@hthetiot
Copy link
Contributor

hthetiot commented Jun 3, 2019

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 (#356) but cordova plugin spec did not work on all cordova/npm version or platform, even without "git+http" and using "http:https://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
Copy link
Collaborator Author

ibc commented Jul 17, 2019

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

@saghul
Copy link
Collaborator

saghul commented Jul 17, 2019

Looks like @hthetiot did the work, right?

@jjahifi
Copy link

jjahifi commented Jul 17, 2019

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
Copy link
Collaborator

saghul commented Aug 9, 2019

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

@hthetiot
Copy link
Contributor

hthetiot commented Aug 10, 2019

@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
Copy link
Contributor

@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
Copy link
Contributor

hthetiot commented Aug 10, 2019

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
Copy link
Collaborator

saghul commented Aug 11, 2019

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
Copy link
Contributor

hthetiot commented Aug 11, 2019

"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 #353 (comment)

@hthetiot
Copy link
Contributor

hthetiot commented Aug 11, 2019

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
  • Add Harold Thetiot in package.json contributors and README.md Maintainers

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

  • Remove README LOOKING FOR NEW MAINTAINERS notice.
  • Fix video positioning notch related computation (to avoid specific css).
  • Use the latest libwebrtc code.

cc @ibc

P.S I love JsSIP (and FreeSWITCH :)

@saghul
Copy link
Collaborator

saghul commented Aug 11, 2019

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

@ibc
Copy link
Collaborator Author

ibc commented Aug 12, 2019

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
Copy link
Collaborator Author

ibc commented Aug 12, 2019

@hthetiot may I know your NPM username?

@ibc
Copy link
Collaborator Author

ibc commented Aug 12, 2019

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 [email protected]: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
Copy link
Contributor

hthetiot commented Aug 12, 2019

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
Copy link
Contributor

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

@ibc
Copy link
Collaborator Author

ibc commented Aug 12, 2019

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
Copy link
Collaborator

saghul commented Aug 12, 2019

Let’s close this then!

@saghul saghul closed this as completed Aug 12, 2019
@ibc ibc unpinned this issue Aug 12, 2019
@hthetiot
Copy link
Contributor

hthetiot commented Aug 15, 2019

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
Copy link

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

@hthetiot
Copy link
Contributor

hthetiot commented Sep 15, 2019

@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
Copy link

@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

@cordova-rtc cordova-rtc locked as resolved and limited conversation to collaborators Sep 28, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests