Differences between uplink and uplinkc


What is the difference between Uplink and Uplinkc within the storj-GitHub-repo? Who is in charge keeping both in sync? I saw that e.g. the UplinkConfig differs between both. The PartnerID for example does not yet exist within uplinkc.

Kind regards,


@bryanchriswhite ^^ Might you answer that Question?

Would love to get an answer on this one. :slight_smile:

Hey TopperDEL!

storj.io/storj/lib/uplink is the primary library, and storj.io/storj/lib/uplinkc is simply the shim library we use to export storj.io/storj/lib/uplink to C (just like storj.io/storj/lib/uplink-gomobile is how we expose it to Android and iOS).

We agree uplinkc is lagging behind in functionality. We’ve been working hard on other aspects of the storage platform (performance, availability, reliability, etc), but this currently is an area without a team assigned. If someone from the community wanted to take the effort of updating uplinkc to be more inline with uplink proper, that’d be fantastic, and that might even be eligible for a STORJ bounty! Otherwise, I can’t commit for sure but a team will probably be assigned after our next major milestone (Pioneer 2).

Sorry for the delay on this and hope that helps!

Thanks JT for clarification!

I mainly wanted to know what the plans are. I do understand that other Topics are of higher priority currently.
I will have a look if I can add the features I’m missing with a PR once I find the time to. It’s mainly the macaroon-stuff - and I’m not sure if I really know how to do it. But let’s see.

Thank you!

@TopperDEL my apologies for the ridiculous delay, I need to figure out how to set-up notifications for the forum.

I started a bit on catching uplinkc up on my own time but there’s a bit of work still to do: https://github.com/storj/storj/compare/bryan/uplinkc?expand=1.

No problem as long as it doe not get lost completely.

Your branch is a very good start and seems to include most of the macaroon-stuff I’m not familiar with but would need for my app.
What are your plans?

For me I see two Problems: 1. I don’t know exactly where they differ and it’s hard to follow 2. I’m no go-programmer and find it hard to do the mapping between both libraries.
Adding something like the partner-id to some struct shouldn’t be a big deal and this is where I might help out a bit.

This PR tries to fix the main gap between Uplink and uplinkc from my Point of view:

The following PR catches-up some UplinkConfig-Parameters:

Closing this thread and handle over to GitHub.