Not entirely related to the point @reiver is trying to make, so apologies for piggybacking on this ticket.
If changes are still up for consideration, I'd like to propose a slight simplification to the MediaUpload extension as it's presented in the above SocialCG link.
Instead of pushing both binary content and the "shell" ActivityPub Create activity in which to slot the uploaded media, the server could handle strictly the media upload, and return an incomplete ActivityPub Object (a "shell" as it was called) containing the properties that have been inferred from the uploaded media:
Type: Audio, Video, Image, etc.
MediaType: audio/..., video/..., image/..., etc.
URL: containing the direct link to the uploaded media.
AttributedTo: inferred from the authorization the upload was effected under, if it refers to a valid user
- etc
Then the client the user used for the upload can append the additional elements the user specifies (Summary, Name, ID, etc) and use a Create activity to actually create the ActivityPub object.
Additionally this allows for servers that operate fancier upload mechanisms (eg, creating different web-optimized versions for the data, or, as @reiver asked, a server that can support partial uploads) but still represent them as valid ActivityPub objects.
To me, this is a better API as it separates the concerns between the actual media upload and the ActivityPub processing, and in my case, the reason why I like this architecture better is that it allows for the mediaUpload to be a separate micro-service, independent of the ActivityPub server.
Originally posted by @mariusor in #578
Originally posted by @mariusor in #578