Announcing libfossphone
#1
Rainbow 
So, saddened by the current pace of PinePhone development, I've decided to take some of this stuff into my own hands.

I'm writing an easy-to-use voice, SMS, and MMS interoperability library for the PinePhone in C, called libfossphone.

It's largely forked from purple-mm-sms, using the same mm-glib bindings but with substantial reworking, and support for MMS and phone calls.

I have a substantial amount of work done already, but it doesn't yet function or compile.

I am designing it to have a simple API that is easy to map to any language, to allow for as wide a use case as possible.

I'm abstracting away ModemManager details etc, and just providing you with a session handle you can use to get messages, place calls, and set callbacks for all incoming calls and messages.

This will hopefully allow development of better phone call applications in several languages. I'm trying to do the hard part, which is get the modem to talk nicely. So, then the community just needs to write GUIs.

What it offers:
  • Voice calls API
  • SMS API
  • MMS API
  • Voicemail notification API (if possible)
What it does not offer:
  • Call history API
  • Call audio routing API (it will work the same as now, routed through ALSA, for now.)
Supported languages on day one:
  • C (C89 and up)
  • C++ (C++98 and up)
  • Rust (via Bindgen)
  • Python (via SWIG)


I haven't yet created the repo, but you can expect to see this thread updated with one in the next couple days once I have something presentable.

Let me know any thoughts, requests, or questions here. Better to get ideas out before it gets too far down the line to change. :^)
  Reply
#2
@Subsentient I think it's a bold idea and a lot of work for one person.

Shouldn't you ask some devs if they will use it before you start work ?
  Reply
#3
I think it's a great effort, hopefully it will help to have a better experience at low level calls and sms. If it will work well, I'm pretty sure many projects will consider it!!
  Reply
#4
(11-11-2020, 03:35 AM)as400 Wrote: @Subsentient I think it's a bold idea and a lot of work for one person.

Shouldn't you ask some devs if they will use it before you start work ?
I'm fairly certain it will be picked up by somebody, but even if nobody else does, I'm going to be using it as the framework for my own mobile call application (I'm planning to allow writing SMS and answering calls from your PC at some point).

Most of the *really* hard stuff is done already thanks to ModemManager-glib's API. The big advantage of libfossphone is that it doesn't require a ton of boilerplate and specialized knowledge for other programmers to get going. The existing ModemManager API is quite painful to use and takes a lot of code to do simple tasks.

The part that will be most difficult will be MMS. The MMS protocol seems to be poorly documented, and the only reference implementation I have is written in Haskell, a language I can't even read.

I made significant progress on libfossphone this evening, so you shouldn't have to wait too long to see a working prototype.
  Reply
#5
@Subsentient - that's great to hear. I'll be watching this project for sure.
Please, update us from time to time and give some links so we can watch the progress.
  Reply
#6
Hi @Subsentient 

Best of luck with this project and thanks for attempting it.

Based on what you've discovered so far, do you think there's any hope that this might solve the problem of missed calls/SMS with no notifications or do you believe that that the problem is with the modem itself?

Also, is there any chance we might see a non-MMS version first, since a lot of people can live without that?

Many thanks
  Reply
#7
(11-14-2020, 04:19 AM)moodroid Wrote: Hi @Subsentient 

Best of luck with this project and thanks for attempting it.

Based on what you've discovered so far, do you think there's any hope that this might solve the problem of missed calls/SMS with no notifications or do you believe that that the problem is with the modem itself?

Also, is there any chance we might see a non-MMS version first, since a lot of people can live without that?

Many thanks
It might be possible to fix this. I will have the library poll the modem periodically in addition to waiting for new message notifications, so you'll get messages, even if you don't get the initial notification.

It might also require a patch to ModemManager, which I can probably do myself.

Yes, I'm planning to release an SMS version first, but you'll be able to download MMS message headers, if you have something to parse them with. The library already distinguishes between MMS and SMS.
  Reply
#8
@Subsentient - this seems to be most widely used for audio routing --> https://gitlab.com/mobian1/callaudiod.
  Reply
#9
I love this, modular, open standards for the core telephony stack is exactly what we need to start worrying less about the underlying architecture and more on end user experience. Kudos to you and I hope the big contributors pick this up and help out with the implementation.
  Reply
#10
Hey Subsentient, how is the development of your library going?
Pinephone Braveheart
Pinephone Manjaro CE 3/32Gb
Pinephone Mobian CE 3/32Gb
Pinephone Pro Explorer Edition
  Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)