Replies: 8 comments 8 replies
|
Hi! Nice to meet you again. We are in the process of writing the grant proposal. Generally, we work with icalendar to be a really good library with documentation for developers. So, I do not know yet how to fit that in, if we can replace parts of that - I do not think so. My suggestion is to explore creating a Rust Python package with your code and host it under github.com/pycalendar. This way, the Pythonistas will find it along with other projects in the eco system. I do not know how long it takes to do that but it can be worth the try. What do you think about this? What is interesting to cooperate on and actually beneficial for us both is this: (2) since the last grant, I wanted to do this RRULE with different calendars. https://www.rfc-editor.org/info/rfc7529/ But it is a huge job, especially without anyone in the affected communities to review or drive a change. It appears Google Calendar supports HEBREW calendars. I am happy to help with publishing the Python binding of your calendar parser. I would learn something new there. What are your thoughts? Where do you see potential mutual benefit? |
|
@SashankBhamidi For your interest in jmap, have a look at thier project. If you create a Python binding, this might be really good. https://github.com/pimalaya/io-jmap |
|
I will better reply next week, just to tell that I'm also in the process of writing NLnet planing, it's definitely the right time to have a proper discussion. So far I like the idea of python bindings, and make rrule safer! |
|
I'm interested. I'm the documentation lead for icalendar and the Python Calendaring Ecosystem. Other than making it possible for Rust to talk to Python, what would bindings do and what would be the benefits? What would be any disadvantages? |
|
Today we had a call with Nicco and Sashank, we seem to agree about exporting Python bindings from Pimalaya. Starting with a small scoped task like calendar's RRULE seems a great and safe direction.
I would say that the main benefits are to gather efforts than splitting them. Pimalaya has a iCalendar lib (for Rust), you also have one (for Python). Since it's a complex subject with a lot of edge cases, it's appealing to have one single source of truth. So the idea is to merge both projects Rust side, then expose a Python API via C-bindings. Python side will benefit from Rust strong typing and memory safety, at the cost of being tied up to a lib (less portable). Unless the Rust lib is packaged with your Python API (static build?). Here the list of potential candidates, sorted by scope-size (smaller first):
I may edit this post if other things come to my mind afterwards. |
|
Hi there all! I'm also working via NLNet, currently on pimsync, which is rather mature/stable at this point. Pimsync does synchronisation, so it only partially parses iCalendar/vCard. Pimsync needs to handle elements which might be semantically invalid — if users can't fetch an invalid element from their server, they have no way of fixing it. So the underlying parser, vparser is much lower level: it basically tokenizes and returns content lines, splitting only name parameter and value. It is heavily tested and optimised though, and quite suitable for higher level blocks. Regarding RRULEs, I maintain the Rust crate recurrence. The main limitation right now is properly supporting VTIMEZONE elements: we need to implement a TimeZone type which uses data parsed from a VTIMEZONE, and this requires further work on refactoring this library. Pimsync also relies on libdav for WebDAV, CalDAV and CardDAV. The core of the library is sans-IO, and it also includes a glue layer to use the typical Rust stack: tokio/tower/hyper. The sans-IO approach is quite unlike io-webdav: Pimsync stores filesystem storage in the same format as vdirsyncer: vdir. It's compatible with khal, todoman, and a few other tools from various developers. The storage format is merely a filesystem convention of standard iCalendar and vCard files. I've had interest in pushing this as an RFC, but I haven't heard much back form the IEEE on the subject. BTF, @soywod, I see a huge overlap in the work we're doing, and we aligned a couple of years back on scopes. I'm curious why none of pimsync's/vstorage's stack worked out and why you felt the need to implement them differently. I'd love if we were able to converge at some point. |
|
@WhyNotHugo I read the sources of your
So I'm not sure how to genuinely proceed. I would not be against developing together a merged lib that we both agree on and that we can use independently from our both sides. And this lib could be used for the python bindings. But it's a lot of work. I'm open to any kind of proposition. |
|
We already have a grant approved and we can cooperate there on vCard and RRULE. There is another grant in the making. I would appreciate if you two @soywod and @WhyNotHugo could name 2-3 packages that would benefit from having a Python binding. We would like to incorporate them. That is a good start. Soft deadline for this is basically tomorrow. Hard deadline on Monday morning. Basically: Which other parts of software can be cut out and offered as a self-contained package with a small interface that we can bring into the Python community to improve collaboration and feedback across these ecosystems? As well as an estimation of how long it would take you to work on the refactoring. Let me know on Martix, please. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hi,
I'm Clément, the owner of the Pimalaya project. We met at NLnet meeting (@niccokunzmann).
Himalaya is our main project, targeting mails.
We included contacts few months ago to the project, and developed a vcard lib for Rust.
We recently started to include calendars, and we developed a ical lib for Rust. It's still in development, not as mature as vcard, but quite promising.
Since libs are written in Rust, it could export Python bindings.
It could be interested to see where to put common efforts :)
Have a great day!
All reactions