Skip to content
This repository has been archived by the owner on Jul 8, 2023. It is now read-only.

Added pinned organisation features #194

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

lmammino
Copy link
Member

This PR implements a feature that allows us to pin specific organisations in the home page and in the organisations' page so that they will always be displayed first and not be shuffled with the rest of the (non-pinned) orgs.

This feature was originally discussed in #193.

Copy link
Member

@delvedor delvedor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Copy link
Member

@jsumners jsumners left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How do we determine who gets pinned and who doesn't? Can we not have the randomization at page load instead of at compilation time?

@lmammino
Copy link
Member Author

@jsumners

How do we determine who gets pinned and who doesn't?

Very good question. My current feeling is that we might want to pin particularly big/important orgs that might look more "impressive" (for lack of better words) in the Fastify home page.

This is probably something worth agreeing all together. Right now I pinned only Microsoft because I inferred this was suggested in #193.

Being something that is now defined in the orgs YAML, once these changes are merged, we can open new PRs that have the pinned: true for given orgs and use such PRs as a place where we can discuss whether it makes sense for the majority of people to apply the change or not.

Can we not have the randomization page load instead of at compilation time?

We could, but I would prefer to keep it at compilation time for several reasons:

  • easy to implement and maintain (code is already there)
  • doesn't need client side JS (What if JS is not enabled in the browser, or what do we initially show in the page before client side JS shuffle things around?)

Also, I am not sure what would be the main benefit of doing that. Sure, the "visibility" of every org would be slightly more democratic, because it will random for every page view, but I am not sure only this would justify the added complexity.

Thoughts?

@jsumners
Copy link
Member

I do not see a "fair" way to implement pinning outside of sponsorship. With this PR we are pinning a completely new addition to the list that, so far, isn't willing to publicly state how they are even using Fastify. I'm not saying such should be a requirement, just highlighting that we have had many orgs added for far longer that are not being pinned because we don't have a concrete justification for pinning qualifications.

@lmammino
Copy link
Member Author

I totally appreciate your concern @jsumners, we should definitely talk this through more.

The way I am seeing this right now is merely from a "marketing" perspective. IMHO, having any org in the FAAMG (or any other "big"/"famous" company) endorsing/using Fastify can increase the credibility of the framework for someone that it is seeing the web page for the first time.

I know we are not selling anything and that this is an open source project, but I wouldn't disregard the importance of this kind of marketing endeavours if they can help us with increasing the visibility and the credibility of the project.

With this perspective in mind, I would definitely recommend to prioritise Microsoft over Vectra and FabFitFun (the 2 orgs in which I introduced Fastify), just because I think that any first time user will perceive more "weight" in Microsoft using Fastify than they would with Vectra or FabFitFun...
I know this might be seen as "unfair" to Vectra or FabFitFun, but at the same time I don't expect it would be a big deal for them.

Is my perspective totally skewed from everyone else?

@jsumners
Copy link
Member

jsumners commented Aug 31, 2020

I agree in principle, @lmammino. But let's look at our own website. The main index.html says:

image

And that link directs to:

image

So another issue is presented: we are telling people that their logo will always appear in this list if they just add it via a PR. That is not the case since we are randomizing at compilation time. I think this statement is fair if we are randomizing at view time; and, before this discussion occurred, I thought we were doing that.

These issues combine into a poor presentation of us. We are saying your org will be represented immediately, and there is a high likelihood it that it will not, while at the same time picking favorites without any publicized criteria.

If we want to pick favorites, that's fine. It can be as simple as "these orgs use Fastify and employee core contributors." But we should also show, or give equal opportunity to show, all other orgs without a rebuild of the site. If someone visits without JavaScript enabled, then they can get a very long page of logos. Whereas 99.999% of the people who visit the site can see a randomized layout of the non-favored logos.

@lmammino
Copy link
Member Author

That page is a bit unclear, but I wouldn't say it's incorrect. It is talking about the organisation page (https://www.fastify.io/organisations/) where we always display ALL orgs (currently with order shuffled at every build). Only in the home page we currently display a limited subset of the organisations (again currently randomized at every build).

What this PR is changing is just to allow some orgs to always be visibile (in the home page) and prioritised (in both home page and organisation page).

This is just to say that our current public messaging might be lacking / unclear, but I wouldn't say these changes would go against what we are currently promising.

@jsumners
Copy link
Member

Okay, given that explanation, if the home page is completely taken up by pinned orgs, then we cannot say "do you want to be featured here" on the home page. At least not without a clear set of criteria to explain how to be featured on the home page.

I totally understand the desire for pinning organizations such as Microsoft. But I think this conversation makes it clear that there are several issues that should be addressed before doing such.

@lmammino
Copy link
Member Author

Totally fair @jsumners. Hopefully there will be a point when we will have only pinned orgs in the home page 😇

It makes total sense to revisit our copy as part of this PR to clarify our position. Any recommendation?

@jsumners
Copy link
Member

I don't think the copy can be clarified if the list on the home page is a mix of pinned and unpinned. The list should consist solely of pinned logos, or remain random. If it will be a list of pinned, then we must first establish the criteria before copy can be written.

@Ethan-Arrowood
Copy link
Member

Ethan-Arrowood commented Aug 31, 2020

I agree heavily with this point.

The list should consist solely of pinned logos, or remain random.

Additionally, I think this line is important:

It can be as simple as "these orgs use Fastify and employee core contributors."

As we are aware Fastify doesn't accept donations. The way companies "sponsor" fastify is by enabling employees (like myself and others) to contribute to the project as a part of our work day. In my opinion, any company that at least satisfies that requirement can/should get pinned to the home page regardless of size or other characteristics.

However, this creates a new problem: what do we do when someone changes jobs? Does that company now all of a sudden lose their pinned spot? A potential answer is we change it from "orgs uses and employee(s) contribute" to "org uses and has contributed in the past". And then we can put a timelimit on that such as 6 months. As in if the org/employee of org does not make any meaningful contributions to fastify in those 6months they are removed from the pinned list.

What do others think about this idea?

TLDR:

  • Criteria for pinned logo:
    • company/org uses fastify
    • company/org enables some employee to contribute back to the fastify community (code, docs, tests, tutorials, core-plugins)
    • company/org continues to produce meaningful contributions at least once every 6 months to remain 'pinned'

@RafaelGSS
Copy link
Member

I like the idea of:

company/org enables some employees to contribute back to the Fastify community.

But for me, the problem is to trace these kinds of things. Maybe a "fair" approach is a sort by contribution count, but it's still hard to trace.

@jsumners
Copy link
Member

  • company/org enables some employee to contribute back to the fastify community (code, docs, tests, tutorials, core-plugins)
  • company/org continues to produce meaningful contributions at least once every 6 months to remain 'pinned'

😬 I'll let everyone else come to a consensus on this one, but this would be difficult for me at this time.

But for me, the problem is to trace these kinds of things.

It would ultimately come down to the way we handle emeritus contributors: relying on them to be honest about things. If a core contributor is leaving the org that they have gotten pinned, then they should speak up and say "I'm no longer representing that org, so I cannot sponsor the pin."

@lmammino
Copy link
Member Author

I like all the suggestions above. I am only concerned that if we create a process that is too complicated that would discourage individuals and companies (especially from bigger companies) from being involved.

I like the current process because it's very simple and non-commital. It was quite easy for me to get internal approval from my employers because I didn't have to explain anything nor they had to commit me or any other person/resource.

Not saying we should just pick favourites and call it a day, but rather than having a complex process I would prefer to keep things random as they are now.

I am sure there's a middle path here though...

@Eomm
Copy link
Member

Eomm commented Aug 31, 2020

Not saying we should just pick favourites and call it a day, but rather than having a complex process I would prefer to keep things random as they are now.

I totally agree.

Maybe a fair trade-off would be to build the site every day to randomize the logos (thanks to GH action we could add a schedule to redeploy the site - right now we have circeci here so I don't know if there is this option).

This would give us:

  • a better turnover on the home page when there are no changes on this repo
  • avoid JS client-side
  • avoid the headache to pin or not a logo

What do you think?

@jsumners
Copy link
Member

Rebuild via CI every day is a fine idea. Gives reason to migrate to GHA as well.

@lmammino
Copy link
Member Author

lmammino commented Sep 1, 2020

Still not seeing how more frequent rebuilds tie into the "pinned or not pinned" conversation, but I am ok with it.

I'll suspend this PR for now and try to get another PR going with a migration of the build config to GitHub actions. I'll also add a daily rebuild workflow.

This topic has been briefly discussed in #153 as well

@fox1t
Copy link
Member

fox1t commented Sep 1, 2020

I agree with all of you, here. I agree with @lmammino that it is important to have a "marketing" vision of the pinned organizations since many developers tend to use tools and frameworks that are endorsed by known companies. I agree with @jsumners that we need to have a well-defined and documented process that makes clear what are the steps someone needs to do in order to be added to the homepage/organization page. And finally, I agree with @Eomm that randomizing this at the building level would be the best choice for us.

@mcollina
Copy link
Member

I think we are having an amazing problem: too many companies want to appear on our website because they use Fastify! However it's also clear that the current system is not scaling, as this is decided at compile time: having them picked daily or at load time would be way better.

Moreover, I think we should have three sections:

  1. Highlights (or some better term): "global" tech brands that are using Fastify which helps adoption. As an example, take a look at the https://nextjs.org/ page.
  2. Companies that are sponsoring some individuals to work on Fastify. Note that the only one listed is NearForm: https://github.com/fastify/fastify#acknowledgements. I do not think this is the case, so please send PRs. You are bound to update your affiliation if you add list yourself as a sponsor in case you change job.
  3. Companies that are using Fastify.

What do you think?

@fox1t
Copy link
Member

fox1t commented Sep 10, 2020

I rally like your proposal!

@jsumners
Copy link
Member

I think that's a fair proposal.

@lmammino
Copy link
Member Author

I really like @mcollina's proposal. Thanks, Matteo!

If we all have an agreement, let me try to think about how we could go about implementing this idea...

  • We already have sponsors in the acknowledgement data file. Assuming we don't want to change anything there, this part is covered.
  • For the global orgs, we can change the pinned attribute into global in the orgs file and keep most of the current implementation. I will just need to implement a different filter to be able to easily separate global from the other orgs, but that's mostly an implementation detail.

The main questions I have are the following:

  • Do we want to display only global orgs in the home page and then provide a link to the orgs page just below it (something like: "discover more orgs using Fastify")? In the orgs page, then we could repeat the global orgs on top and all the others down below.
  • What do we do with ordering? I would suggest we still keep it random (at build time, for simplicity) and we randomize both groups (global and others).
  • Finally, which companies do we consider global from the ones we have right now?
  • (Really) finally, do we need to explicitly mention somewhere what are the main criteria to be considered "global"? If yes, what are those?

@Ethan-Arrowood
Copy link
Member

I've opened #200 to add my employer to the sponsor list. In regards to the highlight part some aspects that come to mind are:

  • Must be an officially incorporated entity
  • A globally recognized brand (hard to be anymore concrete about this imo)

@lmammino
Copy link
Member Author

A globally recognized brand (hard to be anymore concrete about this imo)

Shall we provide a minimum number of employees to be qualified as such?

In fairness, I don't like this idea myself, but I am thinking that we should find a way to be clear enough to avoid upsetting some companies wanting to be showcased as "global" and which we might not consider them as such...

Maybe going through the exercise of trying to classify our current orgs could help us to come up with a better definition.

@delvedor
Copy link
Member

delvedor commented Sep 11, 2020

Shall we provide a minimum number of employees to be qualified as such?

Nope, Whatsapp has 50 employees :D

@fox1t
Copy link
Member

fox1t commented Sep 11, 2020

I think that we need a definition of a "globally recognized brand" and it has to be clear.
A couple of questions:

  1. a brand that is recognizable in a different niche than the developers one, is still considered to be able to be part of that list?
  2. are we going to set a minimum mandatory company time dedicated to fastify, in order to be eligible to be on that list?

@bnb
Copy link

bnb commented Sep 16, 2020

Just wanted to share some context on this from the perspective of my experience in Electron and as a Developer Relations person who's been under both Marketing and Engineering:

The reason you'd want to include companies on a homepage as opposed to just a dedicated page for them is as social proof. You're trying to convey that Fastify is good enough / interesting enough for these companies, so it's also probably good for your projects. This is a pretty fundamental UI and communications pattern.

In the context of Electron, we've had several versions of "all the apps and companies are equal so we'll pull them randomly". It's turned out that most of the time this hasn't really told a compelling story of who uses Electron in a way that would be meaningful enough to actually include it - it ends up hampering the message that's being conveyed rather than strengthening it. Because of this, recently we switched from fully random to locked to a specific set of compelling applications/companies, though I imagine at some point we may want to move to a place where we're randomly selecting from a pool of those rather than having them be entirely static. This genuinely has made the site much more compelling, and we're looking at adding a similar feature with a simple boolean in our Apps page on the site as well.

A globally recognized brand (hard to be anymore concrete about this imo)

I think you could qualify this in a few simple ways:

  • does everyone contributing / reviewing know the brand?
  • could you ask a non-tech friend about the brand and have them know what you're talking about?
  • could you ask anyone in tech outside of the JavaScript ecosystem what the company does and have them tell you what precisely the company does clearly and concisely?

For example, I could ask anyone on the street of NYC what Netflix is and they'd look at me as if I came from Mars because Netflix has become a basic part of Western Culture. I could also ask most folks in tech what Tencent is and get a moderately good idea of what the company does.

@jsumners
Copy link
Member

I agree with all of that. But we need to be open and transparent about how we use these logos in the various sections of the website. If we're going to advertise the heavy hitters on the landing page, that is fine. We just need to stop using language that makes it seem any logo can appear on the landing page by simply submitting a PR to include it.

@angrymouse
Copy link
Contributor

angrymouse commented Nov 13, 2021

What about combining two methods?
For example, we can pin well-known corporations (like microsoft), but after them we will leave space for randomization.

@RafaelGSS
Copy link
Member

What about combining two methods?
For example, we can pin well-known corporations (like microsoft), but after them we will leave space for randomization.

I think that "well-known" is very relative as discussed above.

@angrymouse
Copy link
Contributor

What about combining two methods?
For example, we can pin well-known corporations (like microsoft), but after them we will leave space for randomization.

I think that "well-known" is very relative as discussed above.

We can consider organisations from Fortune 500 as "well-known"

@Eomm
Copy link
Member

Eomm commented Nov 14, 2021

If we want to unblock this PR, I see these next steps:

  1. define the parameters for the org to be pinned (ref build(deps-dev): bump @docusaurus/eslint-plugin from 2.4.3 to 3.1.1 website#194 (comment) )
  2. define a better wording to be transparent with other orgs (ref: build(deps-dev): bump @docusaurus/eslint-plugin from 2.4.3 to 3.1.1 website#194 (comment) )
  3. update this PR accordingly

From what I read, there is no one against this PR, we need someone that push it forward.


I would like to propose this solution that is the sum-up of all the comments above.

An org to be pinned must:

The first pinning is done by us, checking the orgs already here, tagging the original contributor as CC.

After that, an org may ask to be pinned from the PR template providing some evidence to be pinned.

Then, now on the home page, we have 12 random orgs adopting Fastify.

I would implement this logic:

  • 4 orgs are taken randomly from pinned org
  • 8 orgs are taken randomly from NOT pinned org

These numbers may change if the pinned org becomes > 8 (the double)

Do you agree? react with a 👍🏽
Do you want to leave all as it is and close this PR? 👎🏽
Do you disagree? Comment

@angrymouse
Copy link
Contributor

angrymouse commented Nov 20, 2021

If we want to unblock this PR, I see these next steps:

  1. define the parameters for the org to be pinned (ref Added pinned organisation features #194 (comment) )
  2. define a better wording to be transparent with other orgs (ref: Added pinned organisation features #194 (comment) )
  3. update this PR accordingly

From what I read, there is no one against this PR, we need someone that push it forward.

I would like to propose this solution that is the sum-up of all the comments above.

An org to be pinned must:

The first pinning is done by us, checking the orgs already here, tagging the original contributor as CC.

After that, an org may ask to be pinned from the PR template providing some evidence to be pinned.

Then, now on the home page, we have 12 random orgs adopting Fastify.

I would implement this logic:

  • 4 orgs are taken randomly from pinned org
  • 8 orgs are taken randomly from NOT pinned org

These numbers may change if the pinned org becomes > 8 (the double)

Do you agree? react with a 👍🏽 Do you want to leave all as it is and close this PR? 👎🏽 Do you disagree? Comment

I think we also need to add "OR it is very well-known among developers", because non-tech people don't know about such organisations like Github, Gitlab or even Oracle, but we might want to feature them. It would be unfair not to add GitHub, Oracle, Adobe, but add Walmart only because people know about Walmart but don't know about GitHub.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants