Interested in Memcached Client project

Hello everyone👋

I'm Shehab Adel, a final year student who's interested in server-side development and distributed systems. I've been doing server-side development work with Node.js as part of my internship and personal project, and I've also had some exposure to Golang during my graduation project. This is my first time participating in GSoC.

Although I haven't worked with Memcached before, I'm eager to learn and work with Swift for the Memcached Client project idea. I'm open to other server-side projects as well. In my own project, I've used Redis with node-redis, which I believe can serve a similar purpose.

As far as I understand, the Memcached Client project aims to develop a package that can connect to a Memcached server and for example allows programmatic setting or getting of values using Swift, such as client.set('string key', 'string val') and more features as well. Please let me know if I've misunderstood, and feel free to provide more examples.

I'm also wondering if there are any resources or materials I should study for this project. I'm currently looking into Memcached clients' architectures implemented in various programming languages, as well as studying the binary protocol of Memcached.

Any help or guidance would be greatly appreciated. Thank you in advance!

1 Like

The projects mentor @FranzBusch should be able to chime in and help out a bit here.

1 Like

Hey @Shehab,

Thanks for reaching out here! Your are totally right that the goal of this project is to create a memcached client in Swift that is able to do things like setting and retrieving keys.

I wrote a bit more detail already into another post about pointers where to start researching here.

If you have any questions about the project please feel free to post in this thread, contact me via DM or on the Swift Open Source Slack!

Franz

2 Likes

Thank you so much @FranzBusch for your information!
Since you posted in this thread, I have been searching and working on the topic. However, I came across the following release notes in memcached wiki memcached wiki - MetaCommands. Where they stated the following

NOTE: binary protocol is deprecated. meta protocol is cross-compatible with the text protocol, includes every feature the binary protocol had, and has many enhancements.

Considering this, I have a concern regarding the project in the future. Do you think that this deprecation of the binary protocol might cause problems for us in the future? Should we consider looking for alternative protocols such as MetaCommands or text-based protocols?

1 Like

@Shehab It looks like you are right and the documentation from Memcached is inconsistent sadly. The documentation here is apparently the most up to date one.

@ktoso Can we update the GSoC description to say based on the meta command protocol?

2 Likes

Sure, send in a PR to update the page please :slight_smile: over here: swift-org-website/gsoc2023 at main · apple/swift-org-website · GitHub

1 Like

@FranzBusch Thank you so much! I will start following this document for my research, hoping I can make it before the deadline since I will have to start over :joy:

1 Like

Hey @FranzBusch,

I have a private question for you and I neither could find a way to DM you here nor found Swift Open Source Slack. Could you please provide some instructions or links?

Thanks!

@nrakhay The way to send DMs/messages on the forums is to navigate to https://forums.swift.org/u/<yourusername>/messages and click new message there. As recipient entering the username of your recipient. If you can't figure it out, you can send me an email ktoso at apple com and I'll connect you, if possible, I'd suggest including the question right away, if it is process related I can possibly help out already.