= Provide an anonymous smart server = ''Provide read-only smart server access to public branches without *any* configuration on the user side'' '''On Launchpad:''' ''[[https://bugs.edge.launchpad.net/launchpad-code/+bug/164790|bug 164790, Launchpad should run a Bazaar server and advertise bzr:// URLs]]''. '''As a ''' new user to launchpad<
> '''I want ''' smart server access to public branches<
> '''so that ''' I don't have a poorly-performing first experience of Launchpad<
> == Rationale == ''Why are we doing this now?'' Good question. ''What value does this give our users? Which users?'' It makes users' first impressions of Launchpad and likely Bazaar better. == Stakeholders == ''Who really cares about this feature? When did you last talk to them?'' New users? By the time you talk to them, they aren't new any more though, so it's inherently a bit hard to be certain how much benefit this will bring. == Constraints == ''What MUST the new behaviour provide?'' Efficient branch access at urls like lp:project or bzr://bazaar.launchpad.net/~user/project/branch ''What MUST it not do?'' Overload the servers to the point that use of the existing services is degraded. == Success == ''How will we know when we are done?'' When the majority of branch access to Launchpad is over the smart protocol. ''How will we measure how well we have done?'' Graphs like https://lpstats.canonical.com/graphs/Branch_HTTP_Hits/ should show a decline. == Thoughts? == ''Put everything else here. Better out than in.'' I think this should be implemented by having one or more separate boxes to run the bzr serve processes (to avoid the memory pressure these processes will create from impinging on other services). Connections to port 4155 (the bzr:// port) on bazaar.launchpad.net should be forwarded to one of these machines. On connection, we should run something like bzr lp-serve --inet, as we do for the ssh server. We could either write a very simple Twisted daemon to do this or even use honest to God inetd. The bzr lp-serve process can access branch data over http or even NFS if we've got that set up by the time we come to deploy this. I think the only coding required is to allow lp-serve to support anonymous access, maybe a simple daemon to launch these processes and a bunch of configuration work to set it all up. So in all honesty, how soon we can do this mostly depends on IS.