Page MenuHomePhorge

Build Welcome Site
Open, HighPublic

Description

The Welcome site will be 1 or more pages that a user will see when arriving at https://phorge.it (and/or) https://www.phorge.it

For some background on this see

This is somewhat adjacent to:

Pre-Req's

Objectives

Outline our objectives here, so we can ensure the final product meets those objectives

Implementation
The application should

  • Live as a repo in diffusion
    • Or possibly a Phorge Application itself? - See T15008#253
  • Have a harbormaster build plan that publishes the code to the root website?
  • Certificate? - Will need a different cert probably?

Event Timeline

From IRC a while back, for reference:

Evan Priestley (and others) wrote:

[01:09] ^[: epriestley: Looking at Phabricator from just the right angle, we can see that it's actually a web application framework which comes bundled with a handful of really sophisticated example applications. In your opinion, how silly would it be to surgically separate Phabricator-the-framework from Phabricator-the-dev-suite?
[01:31] epriestley: Relatively easy-ish. You can already use Phabricator as a web framework by subclassing "PhabricatorSite", and "phacility.com" is an extension that uses Phabricator as a framework.
[01:31] epriestley: Phabricator also sort of uses itself as a framework for public blogs in Phame ("PhameBlogSite").
[01:33] epriestley: Depending on your goals and use case, some details might need to be worked out, and some behaviors might be too Phabricator-flavored and difficult or impossible to override purely in extensions today, but I suspect there aren't many of these.
[01:34] epriestley: For example, extensions can get full control of top-level exception handling behavior by subclassing "AphrontRequestExceptionHandler".
[01:35] epriestley: Previously, a larger portion of "framework" behavior was in libphutil/, while "Phabricator" behavior was in phabricator/. The theory was that if you wanted to use the framework parts, you could depend on just libphutil.
[01:36] epriestley: However, essentially no one actually did this so it just represented an additional maintenance cost and general confusion for end-users, and I merged "libphutil/" into "arcanist/" and "phabricator/" last year.
[01:37] epriestley: The layers are still (for the most part) logically separate, they just live in the same repository now.
[01:42] epriestley: The biggest fundamental issue with thinking of Phabricator as a generic web application framework (internally, "Aphront") is probably that a lot of behavior depends on "PhabricatorUser $viewer", and "PhabricatorUser" is a concrete final class with a fair amount of Phabricator-specific behavior (it depends on the Lisk storage layer, etc). Decoupling that into "ViewerInterface $viewer" and making "PhabricatorUser
[01:42] epriestley: implements ViewerInterface" or similar could separate the layers, but that's probably a very messy change.
[01:46] epriestley: But it's also unnecessary if you're okay with using Phabricator's "system" applications (Auth, daemons, mail, etc) and just building your own user-facing applications. "admin.phacility.com" is a Phabricator application running on Phabricator-as-an-application-framework, using Phabricator auth and infrastructure but with none of the normal applications installed. If you install an app that provides a route for "/" and
[01:46] epriestley: uninstall the upstream "Home" app, your app becomes the new landing app.
[01:47] epriestley: (See also https://secure.phabricator.com/D11753.)

Not taking a position on whether we should go down that route or not, but want to surface it as a possibility, especially if there are concerns about long-term maintainability. Keeping it as close to Phorge itself as possible might go a ways to alleviating the "more things to manage" problem

Excellent @chris !

From IRC a while back, for reference:

If we can use the Phabricator framework to build the home page, then agreed 100% we should

I also think we should make this an application / extension of phorge and not try to own something different.

I think we should build it as an Aphront Application, so we can display some interesting objects from the install into the front page, as well as manage any non-static content from within the install.
Also for dogfood value.

IIRC, the Sites feature allowed an app to control / url on a specific domain - that's basically how user-content alternate domain works.

Just copying my thoughts I wrote from the zulip

IMO our landing page needs to have a summary of our vision statement or something similar that explains what this is and where it’s going, along with screenshots and links to documentation on how to install/configure.

Personally I would prefer having a separate landing page that is primarily static content as I do believe it lends to easier intro of a product (along with some credibility) - however those things are primarily to increase adoption which is not one of our current goals as well it does add overhead and isn’t critical - I wouldn’t mind holding off on that for a while. Phacility’s main website was effectively the landing page for Phabricator. I don’t think it’s still around for reference but it had most of what I described.

I do think we should consider a separate landing page as prerequisite to announcing the product on other websites. Maybe it’s not a strong enough argument but if we’re announcing in other sites then we are probably trying to increase adoption or build the community.

Do we want to make this an application or an extension? I'd lean toward the latter, it might be a good one to seed our new extension library with...

I'd love to take a stab at building an extension, but it might take a bit. Do we want to do an S3 static page in the mean time, just so we have something?

I think we want an Application in an Extension...

In T15008#278, @avivey wrote:

I think we want an Application in an Extension...

Makes sense, thanks for clarifying.

When I think "Application," I think of a core Phorge application like Maniphest, which is why I asked for clarification.

Question: while we figure out how/if we host the site itself with phorge, should we also start working on the content?

A simple and static website on the landing page that states « we’re working on this, here are the princiles that will guide us » could help reassure those who are watching this from afar.

(We can start with a task or document divided into various sections – intro, vision, core team members, etc – and at a later point decide how to spread it across some pages? If this is already under work somewhere sorry, I haven’t explored all tasks right yet ;))

edit: I guess once T15010 is agreed upon it can be nicely formatted and published on the landing page?

avivey triaged this task as High priority.Jun 23 2021, 18:27
In T15008#573, @jupe wrote:

should we also start working on the content?

Yes. If there is something that is obviously useful and that you know how to do, then please do it. You'll be adding a ton of value.

@jupe yea I figure similar to the Phabricator landing page on https://phacility.com/phabricator/ I think we want a basic static page which showcases the project & features, along with some form of T15010, then points to the other content on this install.

In T15008#573, @jupe wrote:

should we also start working on the content?

Yes. If there is something that is obviously useful and that you know how to do, then please do it. You'll be adding a ton of value.

Definitely -- I believe the idea that @avivey is aiming for is something extending AphrontSite which would serve up this static page/content, then we can update nginx to point phorge.it to that site leaving we.phorge.it to point here. If you'd like to start putting together the content or learning about extending AphrontSite that would be a great help.

We will probably need a new repository that houses the extensions we want installed on this site. Then our upgrade process would be updating the installation repo, deleting the extensions from the installation repo, copy them over from the extensions repo. That way whatever is upstream in the extensions repo will be what is deployed.

In T15008#651, @speck wrote:

@jupe yea I figure similar to the Phabricator landing page on https://phacility.com/phabricator/ I think we want a basic static page which showcases the project & features, along with some form of T15010, then points to the other content on this install.

In T15008#573, @jupe wrote:

should we also start working on the content?

Yes. If there is something that is obviously useful and that you know how to do, then please do it. You'll be adding a ton of value.

Definitely -- I believe the idea that @avivey is aiming for is something extending AphrontSite which would serve up this static page/content, then we can update nginx to point phorge.it to that site leaving we.phorge.it to point here. If you'd like to start putting together the content or learning about extending AphrontSite that would be a great help.

this is the approach I'd like as well

Per discussion on Zulip.

I'm still down to create an extension as I discussed earlier, but Luca's idea of a simple site is what this site is good for this point in time.

sorry for late reply. I can start working on it now. Where will be it hosted? Do you have some preference? We can use also my company infrastructure and change DNS record for a 3rd level to point to the IP.

I think that the best choice is to keep everything in one place, so create the presentation site on the same infrastructure of we.phorge.it

Yea I think it will be easiest to host this on the same server that's running we.phorge.it. If we're able to build it as an extension application for phabricator it can be setup in the same installation and then we can route the web server to host it properly.