{"thread":{"id":"61115","subject":"[GSoC] Discuss: Implement support for reftables in ‘dumb’ HTTP transport","startedAt":"2024-03-13T21:10:13Z","lastAt":"2024-03-21T16:59:08Z","messageCount":4,"participants":["Aryan Gupta","Junio C Hamano","Patrick Steinhardt"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"490580","messageId":"CAMbn=B7MtohTm=J+XL8iwx_CuWo47jM-v=e=p+k6hY2CKWX+Og@mail.gmail.com","threadId":"61115","inReplyTo":null,"subject":"[GSoC] Discuss: Implement support for reftables in ‘dumb’ HTTP transport","fromName":"Aryan Gupta","fromEmail":"garyan447@gmail.com","sentAt":"2024-03-13T21:09:59Z","receivedAt":"2024-03-13T21:10:13Z","isPatch":false,"sender":{"key":"garyan447@gmail.com","avatar":"https://avatars.githubusercontent.com/u/87857234?v=4"},"body":"Hello everyone.\n\nI hope you are doing well. I am brainstorming on the problem\nstatement \"Implement support for reftables in ‘dumb’ HTTP transport\"\nwhere I encountered some doubts which I wanted to discuss with you.\n\nProblem statement link: https://git.github.io/SoC-2024-Ideas/ (Last one)\n\n1. Do we just need support to know about the default branch or the\nentire reftable?\n\n2. As far as I am able to understand, I just need to add support for\nthese reftable files to transfer through the backend incase of dumb\nhttp protocol, is this correct or am I missing something? In simple\nwords what I understand is I just need to add support for the server\nside nothing is to be done for the client side.\n\nI am sorry if these sound absolutely basic but I'm genuinely eager to\nlearn and implement them.\n\nThank you.\n\nRegards\nAryan Gupta\n"},{"id":"490584","messageId":"xmqqa5n1ak1f.fsf@gitster.g","threadId":"61115","inReplyTo":"CAMbn=B7MtohTm=J+XL8iwx_CuWo47jM-v=e=p+k6hY2CKWX+Og@mail.gmail.com","subject":"Re: [GSoC] Discuss: Implement support for reftables in ‘dumb’ HTTP transport","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-03-13T21:39:24Z","receivedAt":"2024-03-13T21:39:33Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Aryan Gupta <garyan447@gmail.com> writes:\n\n> In simple\n> words what I understand is I just need to add support for the server\n> side nothing is to be done for the client side.\n\nHmph.  The \"dumb\" transport is kept primarily to allow folks, who\ncan only use web hosting that serves nothing but static files, to\npublish their repositories, and requiring more things to be done on\nthe \"dumb\" server side sounds somewhat backwards to me.\n\nTo be quite honest, I personally doubt that this topic makes much\nsense in this age and day---I've felt that the dumb HTTP walker\noutlived its usefulness for the past 10 years already.  But perhaps\nI am biased by the first-world access to the internet?\n\nThanks.\n"},{"id":"491130","messageId":"Zfwv24OnsD0pDQ7D@tanuki","threadId":"61115","inReplyTo":"xmqqa5n1ak1f.fsf@gitster.g","subject":"Re: [GSoC] Discuss: Implement support for reftables in ‘dumb’ HTTP transport","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-03-21T13:02:19Z","receivedAt":"2024-03-21T13:02:27Z","isPatch":false,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Wed, Mar 13, 2024 at 02:39:24PM -0700, Junio C Hamano wrote:\n> Aryan Gupta <garyan447@gmail.com> writes:\n> \n> > In simple\n> > words what I understand is I just need to add support for the server\n> > side nothing is to be done for the client side.\n> \n> Hmph.  The \"dumb\" transport is kept primarily to allow folks, who\n> can only use web hosting that serves nothing but static files, to\n> publish their repositories, and requiring more things to be done on\n> the \"dumb\" server side sounds somewhat backwards to me.\n> \n> To be quite honest, I personally doubt that this topic makes much\n> sense in this age and day---I've felt that the dumb HTTP walker\n> outlived its usefulness for the past 10 years already.  But perhaps\n> I am biased by the first-world access to the internet?\n\nEven though I proposed this project in the first place I don't disagree\nwith you. The dumb HTTP protocol is indeed quite esoteric nowadays, and\nif we want to put it officially into \"maintenance\" mode then I would not\nmind to drop that proposed project.\n\nThe reason why I added this project is that I found it to be interesting\nas a thought experiment. The reason why we have \"info/refs\" is to help\nout clients of the dumb HTTP transport to figure out actual refs in the\nrepository because they typically live in many separate files. But what\nI realized is that we don't actually need it with the reftable format\nanymore because we basically already have a definitive list of all files\nthat a client needs to download to acquire all refs: \"tables.list\".\n\nSo theoretically speaking we can implement support for dumb HTTP with\nreftables by having the client download \"tables.list\" and then fetch all\nthe \"*.ref\" files listed in it. Whether that is sensible may be a\ndifferent question.\n\nAnyway. If we think that the dumb HTTP protocol extension is dumb then\nI'd rather want to pull the plug on the proposed GSoC project now rather\nthan later to not lead down potential contributors the wrong path. But\nin that case I think we might want to make the deprecated state of that\nprotocol official.\n\nPatrick\n"},{"id":"491161","messageId":"xmqqcyrna5d4.fsf@gitster.g","threadId":"61115","inReplyTo":"Zfwv24OnsD0pDQ7D@tanuki","subject":"Re: [GSoC] Discuss: Implement support for reftables in ‘dumb’ HTTP transport","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-03-21T16:59:03Z","receivedAt":"2024-03-21T16:59:08Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Patrick Steinhardt <ps@pks.im> writes:\n\n> The reason why I added this project is that I found it to be interesting\n> as a thought experiment. The reason why we have \"info/refs\" is to help\n> out clients of the dumb HTTP transport to figure out actual refs in the\n> repository because they typically live in many separate files. But what\n> I realized is that we don't actually need it with the reftable format\n> anymore because we basically already have a definitive list of all files\n> that a client needs to download to acquire all refs: \"tables.list\".\n\nYes, YES, YES!!!\n\n> So theoretically speaking we can implement support for dumb HTTP with\n> reftables by having the client download \"tables.list\" and then fetch all\n> the \"*.ref\" files listed in it. Whether that is sensible may be a\n> different question.\n\nIt is not even theoretical---I think it is the RIGHT way to do the\ndumb HTTP walker if we had reftable from the beginning.  Having a\nfile at a known location where we can start \"walking\" from is\na very powerful thing [*1*].\n\nIf we do not have to change the server side at all, which I think\nwhat you are saying, that removes the major part of the problem I\nwas having with this proposal.  I do not even have to worry about\nspeaking with the first-world bias and hurting folks with needs that\nare only served by the dumb HTTP walker, either.\n\nBy the way, about two years ago, we have talked about making the\nfirst step to deprecate dumb HTTP walker [*2*], but given that\nnothing concrete materialized, we are ready to move further, yet.\n\n\n[Footnote]\n\n*1* With the filesystem backed refs, because there was no standard\n    and widely supported way to ask a dumb HTTP server \"what are the\n    files and directories under this hierarchy?\" and that was here\n    the ugly \"info/refs\" hack came from.\n\n*2* https://lore.kernel.org/git/f8639116d2d384a6d285c75830c52d8a8230ae6b.1647243509.git.ps@pks.im/\n"}]}