Page MenuHomePhorge

Support a Phorge Extensions ecosystem
Open, Needs TriagePublic

Description

There are quite a few useful Phabricator extensions. I think we should provide a home for them in the Phorge infrastructure and development environment.

I'm not sure if it makes sense to have individual extension repositories hosted on phorge.it but maybe we could have an extensions monorepo where some of the best extensions are upstreamed?

This is just meant to be the beginning of a discussion about how to support the extension ecosystem, please add your thoughts below.

Event Timeline

I think it makes sense to host repositories here. If we go with monorepo what would general permissions be for something like that?

Found that SVN works great for a monorepo... Does Mercurial as well?

I had managed to get a monorepo pattern happening with Git at some point, but it required some finagling and non-default setup.. It worked, but I wouldn't have called it ideal..

Regarding permissions, I wonder if it would be much different from the main repository? Maybe with an extra person who would specifically be interested in keeping an eye on the official extensions ecosystem...

If someone makes an extension and releases it on, say, GitHub, perhaps it would still be in the official monorepo, but then we'd potentially run into lagging behind versions.. Liking the idea of having some of the best ones upstreamed... Seems certainly useful to have a Wiki portal to link to other extensions in any case..

We are planning on hosting community-driven extensions/projects (temp codename "Phactory"), either here or in a different domain; the idea is to have each project maintain their own repositories.

What's the advantage of using a monorepo for it?


Edit: I thought it was somebody else making the suggestion; you obviously know about this plan already :)

I'm thinking of hosting them here, giving each project to manage their own repositories, but having a more tight control over the creation of the repo (for technical reasons) and projects.
I'd like to only have projects that are clearly related to Phorge in the install, because we're not GitHub.

Having individual git repos also matches the common way extensions are installed (and my drafts for arc-install-eztension)

In T15030#914, @avivey wrote:

We are planning on hosting community-driven extensions/projects (temp codename "Phactory"), either here or in a different domain; the idea is to have each project maintain their own repositories.

That sounds awesome! Cool name :) Curious, did this come up in Zulip? I need to log back in there.

What's the advantage of using a monorepo for it?

I was figuring that this would apply in the idea from the description where "maybe we could have an extensions monorepo where some of the best extensions are upstreamed" (specifically if they're hosted on we.phorge.it). I guess that would keep them organized, and the repos in this installation wouldn't get too spread out with extensions...

It seems likely that many projects would maintain their own repositories anyway.. So I suppose Phactory would be something akin to a directory of external links?

In T15030#915, @avivey wrote:

I'm thinking of hosting them here, giving each project to manage their own repositories, but having a more tight control over the creation of the repo (for technical reasons) and projects.
I'd like to only have projects that are clearly related to Phorge in the install, because we're not GitHub.

Having individual git repos also matches the common way extensions are installed (and my drafts for arc-install-eztension)

All of this seems great! And really just because they're hosted on here doesn't mean it would clutter anything too much.. There could be some global queries that filters default views if it gets to be very spread out with extensions eventually

(I should stop reading stuff before coffee. You'd think I'd know that by now...)

I expect that at most, we're talking a couple of dozen projects - and while "it won't scale", manually managing them is not an overwhelming amount of work.

In T15030#916, @dcog wrote:
In T15030#914, @avivey wrote:

We are planning on hosting community-driven extensions/projects (temp codename "Phactory"), either here or in a different domain; the idea is to have each project maintain their own repositories.

That sounds awesome! Cool name :) Curious, did this come up in Zulip? I need to log back in there.

I think we mentioned it, but didn't go into much details. It's actually in L1 Phorge Vision Statement as "Tradepost / Phactory"...

The driving force is that I as a Developer of a (hypothetical) Extension, I would like to have it hosted publicly and still use the Phorge workflow and tooling.

I think hosting the stuff here will increase engagement for the community - people will come to explore and discuss existing extensions, and try out different stuff.

There are some projects listed on the Phabricator Community Resources page. Would all of those be eligible for hosting here, or would there be some criteria to limit the number of external projects?

In T15030#949, @0 wrote:

There are some projects listed on the Phabricator Community Resources page. Would all of those be eligible for hosting here, or would there be some criteria to limit the number of external projects?

Seems like the simplest route would be to go ahead and let any of that happen that could... Let's say 20% of the authors catch wind themselves and are interested, that's not a bad first load.. then can mold the process as it evolves

Here's the terms I've been thinking of for accepting a project to Phactory:

  1. Directly related to Phorge in a significant way:

Good: Module for integration with some other system; New Phorge app that does something reasonable; scripts for administration work.
Bad: A space-zombie game that can report high-scores to IRC, Slack and Phorge.

  1. Actively maintained:

Some human needs to be responsive to queries about it (mostly administrative)

  1. Has an explicitly attached open-source license; Maintainer has the legal rights to put it here.
  2. No secrets:

All work in Phactory must be with Public access (except rare security stuff) - same rules we apply to ourselves.
This is primarily to protect us and users from legal stuff, and also to simplify abuse prevention.

  1. While I think "Primarily maintained in Phactory" would be the reason most projects would want to join in the first place, I'm OK with having a project maintained somewhere else and observed in Phactory for other reasons (Until we build an App Store app, which should answer all these other reasons).

Since I expect the whole thing to be completely manual at the beginning (with rules 1 and 2 limiting the potential amount of requests to low double-digit), we can have the Phactory Admin Team manually check compliance.


For technical/security reasons, I think project maintainers should not have direct Management access to the repositories and URI configuration - if it turns out there's a lot of work here, we can build something to allow limited control

In T15030#972, @avivey wrote:

A space-zombie game that can report high-scores to IRC, Slack and Phorge.

On the other hand, this sounds pretty fun :P And would get some community contributions in there... It kind of seems good to err on the side of "yes" to extension contributions where feasible, at least at first... In the case of a space-zombie game, if it's really well-done and not too bloated it could provide some nice proof of concept and gameplay :) And maybe the homepage could have some kind of query filtering to keep it core-focused and not cluttered with extensions (this is one thing I'm interested in working on -- Dashboards and panels for specific user groups).. That's my two cents there :) All the other aspects look great to me

regarding a monorepo, I'm not sure if there is an advantage to that, I'm fine with individual repos. I currently maintain most of Wikimedia's extensions in a single monorepo but I'd consider splitting them out into individual repos if any one them were candidates for upstreaming.

regarding a monorepo, I'm not sure if there is an advantage to that, I'm fine with individual repos. I currently maintain most of Wikimedia's extensions in a single monorepo but I'd consider splitting them out into individual repos if any one them were candidates for upstreaming.

Honestly it may be nice to add the mediawiki auth scripts to core.