JavaSkype is the first modern Skype (MSNP24) library, to send and receive Skype messages programatically.
I started this project in summer 2015 in order to have a reliable modern Java Skype library that would work with the new MSNP24 Skype version, that is, the actual newest MSN protocol, which was added into Skype after Microsoft bought Skype.
There was no public API or documentation of the internal Skype protocol so I had to reverse-engineer the Skype (and later, the Skype Web) clients to understand how it worked. I got the chance to collaborate online with developers which had already reverse-engineered previous versions of the MSN protocol and they helped me a lot.
After the initial work of understanding the Skype library I had to actually turn it into a Java library, which meant developing and testing a quite large cryptography related code (for client authentication, …) and the complex MSNP24 protocol that I had reverse-engineered.
But what I found also difficult to do was to design a straightforward public API for this library so that anyone could easily understand and use it directly from their IDE with minimal work required to understand how it worked. This meant doing quite a few iterations of the API design until I found it intuitive. Then I added comprehensive documentation and examples, which took a lot of time.
Now the library is complete and working, and boasting a few 50+ stars on its Github repository. I still have to update it from time to time because the Skype protocol keeps changing, seldom breaking the library.
See the Github repository of the project for more details.