Hello everyone! I've made excellent progress since my last update. First, I've added more callbacks to the code. This is an ongoing effort because SWIG doesn't natively support Node.js callbacks right now, so I add them when the need arises.
Moreover, I ran into an especially tricky problem where callbacks would be invoked on a different thread than the main event loop. Because of the single-threaded nature of Node.js and V8, this caused crashes. My mentor, Adrien, helped a lot in solving this problem. I have also started working on Ring's Electron client [1]. I had issues getting started with this, being a completely different paradigm I have never worked in before. But, after the initial getting used to, I'm really liking working with the Electron API. Finally, up until now I had been working on a separate, work-in-progress branch of the Ring Daemon. But my work has now been merged into master! And that's where I'll be contributing directly. Oh and, I'm very excited about the 1.0 release. Congratulations to the Ring team! ^_^ Until next time! [1] https://gerrit-ring.savoirfairelinux.com/#/admin/projects/ring-client-electron On Wed, Jul 5, 2017 at 6:05 PM, Asad Salman <[email protected]> wrote: > This last week has been especially productive. > > First, like I mentioned the week before, I extended the coverage of the > Node.js Wrapper to include more callbacks [1]. > Moreover, up until now, I had been using a "hacky" way of registering C++ > functions (so that they can be called from Node.js). I learnt that SWIG > (the software I used to generate the wrapper) has the exact feature I was > try to simulate with my hacks (namely Typemaps). After some time figuring > typemaps out, I was able to use them for my purpose and removed the hacky > parts from my code [2]. > > I also worked on writing a Node.js module that is easy to use and > abstracts away internal calls a consumer of the API doesn't necessarily > need to know. This module can now be included and used by others in their > Node.js projects [3]. It is very basic right now, but I'm adding to it! > > Finally, I passed the first GSoC Evaluations! It has been an excellent > experience up till now and I have learnt so much. I hope it continues to go > this well. > > [1] https://gerrit-ring.savoirfairelinux.com/#/c/7203/ > <https://rb.tc/27J14#https://gerrit-ring.savoirfairelinux.com/%23/c/7203/> > [2] https://gerrit-ring.savoirfairelinux.com/#/c/7207/ > <https://rb.tc/27J15#https://gerrit-ring.savoirfairelinux.com/%23/c/7207/> > [3] https://gerrit-ring.savoirfairelinux.com/#/c/7222/ > <https://rb.tc/27J16#https://gerrit-ring.savoirfairelinux.com/%23/c/7222/> > > On Tue, Jun 27, 2017 at 5:31 PM, Asad Salman <[email protected]> wrote: > >> Here's an update on my project: >> >> There are two basic building blocks we needed working to wrap the C++ >> Daemon in a Node.js API, those were actual API calls and the JavaScript >> callbacks. I have successfully got both working now (though callbacks were >> the challenging bit). >> My task now is two-pronged: >> >> 1. Extending the coverage of the Node.js Wrapper to include more of >> the Ring Daemon functions >> 2. Organize the Node.js module so that it can easily be included and >> used in other Node.js based projects (thus leading the way to an Electron >> client) >> >> The above two will be my goals for the coming few weeks. >> >> On Mon, May 15, 2017 at 1:46 PM, Asad Salman <[email protected]> wrote: >> >>> Hello everyone! >>> I am Asad Salman from School of EE & CS, NUST, Islamabad, Pakistan >>> (UTC+5). This year, I'll be working on Ring as part of Google Summer of >>> Code under the tutelage of Adrien Béraud. >>> >>> A lot of Ring development time is spent on developing and maintaining >>> different clients on different OS. Every time we have to integrate a new >>> feature, we have to integrate it in different clients in different >>> environments (with different available APIs). This wastes a lot of time >>> that can be spent on better things. Also, this way some clients are left >>> behind (e.g. Mac client). >>> >>> My project >>> <https://summerofcode.withgoogle.com/projects/#4909343647465472> is on >>> writing a NodeJS wrapper around the Ring Daemon. Such a wrapper will allow >>> cross-platform Ring clients to be developed using frameworks like Electron. >>> >>> I'd love to hear any suggestions you guys may have related to the >>> project. I look forward to working on this project with the Ring developers. >>> >>> -Asad >>> >> >> >
