Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request: do SEO optimization for eips.ethereum.org #343

Closed
virgil opened this issue Oct 25, 2019 · 34 comments
Closed

Request: do SEO optimization for eips.ethereum.org #343

virgil opened this issue Oct 25, 2019 · 34 comments
Labels
feature ✨ This is enhancing something existing or creating something new proposal 🤔 This is a proposal Status: In Progress Work is in progress Status: Stale This issue is stale because it has been open 30 days with no activity.

Comments

@virgil
Copy link
Member

virgil commented Oct 25, 2019

Is your feature request related to a problem? Please describe.
I often google for specific EIPs, for example, say EIP1948. But the pleasant display at eips.ethereum.org rarely (if ever) comes up. So then I have to go eips.ethereum.org and then manually search for it.

Describe the solution you'd like
When I search for something like "EIP1948", "EIP-1948", or "EIP 1948", I want eips.ethereum.org to be the first or second hit on Google.

Describe alternatives you've considered
I have no access rights to attempt this.

Additional context
To reduce competition for this space, one thing we could use is use Google Webmaster Tools to remove sites all URLs matching: https://github.com/ethereum/EIPs/blob/master/EIPS/*.md from the Google index. I don't actually recommend doing this until we have eips.ethereum.org at least in the top 10 of results.

@virgil virgil added the feature ✨ This is enhancing something existing or creating something new label Oct 25, 2019
@samajammin
Copy link
Member

samajammin commented Oct 26, 2019

Thanks for bringing this up @virgil! I think there's lots of opportunities for improvement depending on how we want to approach this.

To start, What is the ultimate result of what you'd like to achieve? Making EIPs more easily discoverable? Once they are discovered, making them more easily digestible (i.e. through a more appealing web UI)?

To your point, spot-checking a handful of Google search queries clearly shows eips.ethereum.org is not ranking well for terms that it could/should be. Even the Github repository's URLs (among other sites) seem to always rank higher than the website.

It's a bit difficult to quantify how much opportunity exists if we were to improve rankings. There's no tracking on the site to know it's current usage (I've submitted a PR to add Matomo) but tools like SimilarWeb suggest it's not getting much traffic. From some basic keyword research in Google Adwords, there doesn't appear to be significant volume (other than "erc20" and "erc721" related terms that get >1K searches/month) but I suspect there's a bunch of long-tail searches for specific EIPs like the ones you mentioned that form significant search volume in aggregate.

I agree it would be valuable if this content was more easily discoverable, though it’s debatable if it’s within the scope of this project (vs. creating this issue in the EIPs repo). In my mind, there are two core options.

  1. Optimize the existing site (eips.ethereum.org)
  2. Migrate content from eips.etherum.org to ethereum.org/eips

For option 1, there's some simple changes we could make to potentially get some wins, like updating the title tag templates of EIP pages to always include the number of the EIP. For instance, EIP 1948 that you mentioned - it's current title tag is Non-fungible Data Token | Ethereum Improvement Proposals. Instead of appending | Ethereum Improvement Proposals to every page's title tag, which is super generic, it should probably be more targeted (like Non-fungible Data Token | EIP 1948).

Optimizations to the current site (e.g. updating title tags) would definitely help but I believe the surest approach to achieve rankings with EIP pages would be to migrate the content from eips.ethereum.org to ethereum.org/eips. While SEO is no perfect science, it's generally agreed that subdirectories perform better than subdomains. Moving / mirroring content on ethereum.org/eips could rank well quickly from all the link authority the core ethereum.org domain has built up over the years (26K referring domains on ethereum.org vs. 1K referring domains on eips.ethereum.org). Migrating to ethereum.org could also bring UX advantages, e.g. we already have a site search feature that would allow people to search by EIP number. It'd also be easier to integrate EIP content into our Translation Program if the content exists within this repository.

To be clear, if we were to move the site content from eips.ethereum.org to ethereum.org/eips, I'm not suggesting we also migrate the entire Github repository. It would probably just be a script to pull in merged EIP pages & 301 redirect rules on eips.ethereum.org. I think it makes sense to keep that dedicated repo to create & discuss EIPs.

Might be worth fleshing out pros/cons of options & gathering some feedback from people. I'm not sure who we'd need to gather rough consensus from to make either initiative happen. @jjmstark @Souptacular feel free to weigh in.

@Souptacular
Copy link
Contributor

Tagging Nick Johnson who I believe runs eips.ethereum.org. @Arachnid

@Souptacular
Copy link
Contributor

My opinion: There isn't harm in using Matamoto to gather user data (as long as we put a pop-up on EIPS.ethereum.org) if it will help our SEO. How best to accomplish this I will need to think on. I believe eips.ethereum.org runs on Jekyll.

@evertonfraga
Copy link
Member

That's a great idea @virgil,

As an EIP user, i'd love to see a summary of the EIP page, pretty much like this:

Featured-Snippet-as-number-1-result-in-Google-SERP

The most straightforward way to do it, is defining the Structured Data Markup, a JSON included into the source code.

<!-- JSON-LD markup generated by Google Structured Data Markup Helper. -->
<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "Article",
  "name" : "EIP 663: Unlimited SWAP and DUP instructions",
  "author" : {
    "@type" : "Person",
    "name" : "Alex Beregszaszi"
  },
  "datePublished" : "2017-07-03",
  "articleSection" : "Abstract Currently, SWAP and DUP instructions are limited to a stack depth of 16. Introduce two new instructions, SWAPn and DUPn, which lift this limitation and allow accessing the stack up to its full depth of 1024 items.",
  "articleBody" : "Motivation</H2> […]",
  "url" : "https://eips.ethereum.org/EIPS/eip-663"
}
</script>

@Arachnid
Copy link
Contributor

While I don't have any objection to EIPs being on ethereum.org/eips, doing this would require an automated process (presumably via travis) to build and push the site on each update. I'm not up for maintaining such a system right now, and I'm not sure how ethereum.org is rendered at present in any case.

For other changes, the source of the site is all in the EIPs repo - PRs are welcome!

@fulldecent
Copy link
Contributor

fulldecent commented Nov 2, 2019

This thread will turn into a discussion. But I propose the following to address SEO concerns.

A brief introduction: SEO is my day job.

Proposed workplan:

  • Enable Google Search Console on all Ethereum web properties
    • You can add me with view access. Call me to set this up.
    • This does not collect any more data from visitors or require additional tagging.
  • Promote ONE of the following reference types: "EIP-1" "EIP1" or "EIP 1".
  • Adopt a preferred citation format to the EIPs website
  • Update preferred citation format to require people reference draft EIPS like "ERC-721 (DRAFT)"
    • Because people start a PR and then go on a marketing campaign using the GitHub URL
    • Instead they should start a SECOND marketing campaign after they get a EIPs.ethereum.org URL
    • This will be evident that there is more work to do when everyone is seeing the word "(DRAFT)" in their face
  • Improve the text of the EIP homepage so that more people want to go there than the GitHub repo
  • Update all links in this repo that link to the GitHub.com/... (I can do this)
  • Generat a list of all places that link to GitHub.com/... and ask them to instead link to EIPS.ethereum.org
    • I have been working on this
    • If you want to help let's talk

@samajammin
Copy link
Member

Thanks for your review & comment @Arachnid! With any solution we choose, I'm definitely not looking to add any additional overhead for you or for any other EIP editors/maintainers. I'm working as a full-time developer on ethereum.org full time & I believe I could have the capacity to maintain this system. I just want to first confirm with others that it would actually add value.

Thanks for the thoughtful proposal @fulldecent! I agree with all your suggestions. One question regarding:

Update all links in this repo that link to the GitHub.com/

Could you clarify this one? Update the links to what?

I'm also curious to hear your take on the other option I mentioned above - migrating the content from eips.ethereum.org to ethereum.org/eips. In my opinion (as someone who has also had an SEO day job) & from professionals I've spoken to, that would be an additional way to improve rankings & provide additional exposure/accessibility of EIPs.

@fulldecent
Copy link
Contributor

Links to GitHub.com

Some places (including in eips.ethereum.org) are linking to EIPs at GitHub.org. Last year if you searched the web for "ERC20 specification" at the top it would be ethereum/EIPs#20 now you will see Wikipedia or https://eips.ethereum.org/EIPS/eip-20.

This is the effort I am working on.

eips.ethereum.org or ethereum.org/eips

It is critical that the GitHub repo is quickly connected to the published website. This is done now using GitHub pages. Hosting at ethereum.org/eips would require an Apache reverse proxy (or similar) to GitHub pages, or a different deploy pipeline.

I do not recommend moving the EIPs website because:

  1. The EIP editors and authors do not speak for the Ethereum project. So the EIPs should not be directly on ethereum.org.
  2. The extra infrastructure / devops to make it work will not provide incremental value.
  3. It took me a year to ask everybody to repoint their links to ERC: Non-fungible Token Standard EIPs#721 into https://eips.ethereum.org/EIPS/eip-721, along with all the other EIPs. It will be painful to ask them to move again. (This includes websites, patents, SEC filings, academic journals, etc.)

@fulldecent
Copy link
Contributor

@virgil Also, you do not have permission to remove GitHub.com/... from the Google index. Only GitHub has that permission.

@fulldecent
Copy link
Contributor

fulldecent commented Nov 12, 2019

I have some PRs ready to go:

ethereum/EIPs#2369
ethereum/EIPs#2370
ethereum/EIPs#2371

And other quick fixes while you're here

ethereum/EIPs#2372
ethereum/EIPs#2373


^^ These move in the right direction of SEO.

I think nothing more is in scope here and this issue can be closed as solved after the above are merged.


If we will go further, and I think we should, we can make a new issue to adopt this policy:

EIP numbers are assigned by the EIP editors at the request of EIP authors (merging a PR that creates a DRAFT). Until the draft is published, no reference shall be made to "EIP-####" or "ERC-####". Instead you may refer to "Issue ####" or "PR ####".

And then fix all existing text in /EIPS/. This will strongly incentivize people to make a high-quality document and get an ERC number before spamming the EIPS repository and starting a marketing campaign that "OMG I wrote an EIP, let's raise money". These premature marketing campaigns for pre-draft documents, which link directly to GitHub Issues are directly the reason why Google ranks GitHub issues before our intended (and higher quality) EIPS website.

@samajammin
Copy link
Member

Thanks for the replies @fulldecent. I have comments & questions on your recommendation against moving content from eips.ethereum.org to ethereum.org/eips.

The EIP editors and authors do not speak for the Ethereum project

I don't see an issue with that. The purpose of ethereum.org is to provide the best portal to Ethereum. In my mind, if we can improve discoverability of EIPs (a significant aspect of Ethereum & it's evolution), then that would be a valuable service to the community.

The extra infrastructure / devops to make it work will not provide incremental value.

Ignoring the "The extra infrastructure / devops to make it work" (which would be my concern 😄), you don't believe this initiative would provide incremental value from an SEO & UX standpoint?

It took me a year to ask everybody to repoint their links to ethereum/EIPs#721 into https://eips.ethereum.org/EIPS/eip-721, along with all the other EIPs. It will be painful to ask them to move again. (This includes websites, patents, SEC filings, academic journals, etc.)

I also don't see an issue with this - we could set up 301 redirects to the corresponding pages. My take from strictly an SEO standpoint is that the link authority of ethereum.org would more than make up for any loss of "link juice" from implementing 301 redirects. Or am I missing something?

@fulldecent
Copy link
Contributor

Well! If there's somebody that volunteers to do the work then things get easier. Do you have a proposal for how to host the code into the new place? I'm not sure how this deploy step would work in https://github.com/ethereum/ethereum-org-website/ Also I'm not sure why ethereum.org isn't just a static GitHub Pages or similar.

You have a great point. A FIRST step is that there should be a link from ethereum.org to the EIPs. I see that already exists. This addresses the link juice issue.

@fulldecent
Copy link
Contributor

Any action left for this issue?

@samajammin
Copy link
Member

Thanks for the nudge @fulldecent.

I'm not sure why ethereum.org isn't just a static GitHub Pages or similar.

It actually is a static site (built with Vuepress). It's quite similar to the Jekyll site that powers eips.ethereum.org in the sense that it generates HTML pages from markdown source files.

Do you have a proposal for how to host the code into the new place?

I don't have a fully fleshed out proposal at this point, though my hunch is that I could write a Travis CI script or a build a simple Github bot to copy over the markdown files from the EIP directory of the EIP project into a /docs/eips/ directory in the ethereum.org project). We could set up a Github webhook to trigger this process on each merge of the EIP repo.

From my current perspective, this content migration is still worth doing. We deployed my meta tag optimizations (ethereum/EIPs#2325) 3 weeks ago yet I haven't seen rankings improve. The current website (eips.ethereum.org) is still nowhere to be found when Googling "EIP [number]". As I outlined above, aside from pure SEO benefits, the primary advantages would be:

  • Increased awareness of EIPs & EIP process for new developers
  • Improved UX for existing Ethereum developers (e.g. simple site search by EIP number)
  • Potential for EIPs to benefit from the ethereum.org Translation Program

For next steps, I think I should discuss this with each of the EIP maintainers (primarily @Arachnid) to get their input on if this would be a valuable initiative. Once I've gathered their feedback (& assuming we agree it's worth pursuing), then I'd be happy to put a more detailed proposal together.

@fulldecent
Copy link
Contributor

@samajammin Please update this link to HTTPS.

Screen Shot 2019-12-21 at 22 05 06


Please accept this ethereum/EIPs#2446

It is is a quick fix. It can be extended in the future by adding this information to the bottom of every EIP.


Just showing you what else I'm working on.

Here is a list of people that think erc721 dot org is the authoritative website for ERC-721.

erc721.org-1backlinkperdomain-subdomains-live-22-Dec-2019_03-07-46.csv.zip

(only the first thousand)

My interest is in getting them to update this and link to the correct URL which is https://eips.ethereum.org/EIPS/eip-721

@axic
Copy link
Member

axic commented Dec 29, 2019

The most straightforward way to do it, is defining the Structured Data Markup, a JSON included into the source code.

<!-- JSON-LD markup generated by Google Structured Data Markup Helper. -->
<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "Article",
  "name" : "EIP 663: Unlimited SWAP and DUP instructions",
  "author" : {
    "@type" : "Person",
    "name" : "Alex Beregszaszi"
  },
  "datePublished" : "2017-07-03",
  "articleSection" : "Abstract Currently, SWAP and DUP instructions are limited to a stack depth of 16. Introduce two new instructions, SWAPn and DUPn, which lift this limitation and allow accessing the stack up to its full depth of 1024 items.",
  "articleBody" : "Motivation</H2> […]",
  "url" : "https://eips.ethereum.org/EIPS/eip-663"
}
</script>

There is already some of this included: https://github.com/ethereum/EIPs/blob/master/_includes/head.html#L34-L42

Here's a larger example: https://mincong-h.github.io/2018/08/22/create-json-ld-structured-data-in-jekyll/

It would be easy to extend the EIPs to support these fields, but would appreciate some guidance which fields make the most impact.

Update: I think "TechArticle" might be the best category for us: https://jsonld-examples.com/schema.org/code/article/techarticle-markup.php

@axic
Copy link
Member

axic commented Dec 29, 2019

@samajammin I would oppose moving eips from eips.ethereum.org to ethereum.org/eips. I do not see any upside, but see a lot of downsides. What is the benefit?

@samajammin
Copy link
Member

Sorry for the delayed reply on this! Appreciate you taking the time to review this thread & weigh in @axic.

The benefits I see are primarily laid out in my comment above (#343 (comment)) but to reiterate & add a couple:

  • Increased awareness & accessibility of EIPs & EIP process
  • Improved UX of the site
    • More exposure of EIP pages on ethereum.org will lead to more community members/developers proposing & implementing improvements
    • While nothing prevents us from implementing improvements on the current site, migrating would allow these EIP pages to share styles, components & functionality of ethereum.org (e.g. the site search feature would allow people to search by EIP number). With the help of some designers, we're also in the midst of drafting a style guide that includes updates to components & layouts to create a consistent & improved UI across ethereum.org. We could reduce the work of implementing site improvements by having all content on the same site & sharing those UI elements.
  • Translation Program
    • We could potentially translate EIP content more easily given that the ethereum.org repo is already synced up to a CrowdIn translation project
  • Improve "conversion" of developers new to Ethereum
    • The activity around & progress of EIPs can help signal to new developers the vibrancy of the Ethereum ecosystem. By exposing new visitors to this domain of Ethereum, we create a more compelling reason for them to join the ecosystem. Early exposure into EIPs & the standards creation / platform upgrade process shows them a roadmap of tangible ways to get involved with the community
  • Declutter EIPs repo (https://github.com/ethereum/EIPs)
    • There's already lots of activity (>400 open issues, >100 open PRs), moving UX/UI changes to a separate repo might keep this repo "cleaner"

I totally understand how this plan may be controversial & I can't guarantee this change would improve everything but from my current perspective, there's near zero risk of ethereum.org/eips performing worse in SEO than eips.ethereum.org currently does. If we see that as the primary goal, I think it's worth trying.

What are the downsides in your mind? It's quite possible there's many I'm overlooking, including risks outside of SEO performance.

@samajammin
Copy link
Member

@fulldecent thanks for sharing your update. I don't have the necessary permissions to edit that link in the EIP repo to HTTPS. I suggest you open an issue there or ping one of the maintainers.

@fulldecent
Copy link
Contributor

@samajammin you got it ethereum/EIPs#2487

@samajammin
Copy link
Member

@axic would you mind listing the downsides you see? Trying to understand the risks here. Thanks.

@jpitts
Copy link
Member

jpitts commented Apr 2, 2020

@samajammin I can see the rationale for making EIPs more accessible and findable. One thing to consider is the target audience of the main website. The EIPs are highly technical documents for use by protocol developers and dapp developers, probably more experienced with the tech than visitors to ethereum.org.

One approach may be to generate a page for each EIP, but with content appropriate for the audience of the website.

Example content:

  • TL;DR for the EIP
  • key links to the EIP GitHub page, EIPs page
  • related discussions

@jpitts
Copy link
Member

jpitts commented Apr 2, 2020

Going with the TL;DR pages approach brings in more community engagement; this is content and links which would need to be developed. It could greatly improve people's initial engagement with the information as well as a full EIP even with a good overview can be intimidating.

One side benefit of such an approach may be that Google picks up on the links, presenting a navigation when an user searches for something like "EIP-1" or "ERC-20".

@fulldecent
Copy link
Contributor

I have read all the EIPs. I don't think there is any way to make them usable for a non-technical audience.

Also I have talked with all the EIP authors in the past year. They are interested to publish something. It will be impossible to require them to rewrite a summary for a new audience. And even if they did, it will be written poorly.

@fulldecent
Copy link
Contributor

On the other hand, if you need one person to that actually can write the content (i.e. an actual editor role) then I can do that. It will be a bit of effort and I can write the pages so that it will explain every draft and final EIP and how it is important to the community.

@jpitts
Copy link
Member

jpitts commented Apr 2, 2020

One inspirational piece of infrastructure is "Simple Wikipedia" (https://simple.wikipedia.org), this is a simplified mirror of many Wikipedia pages. Looking up various topics in Simple Wikipedia proves the importance of having good editing on that content. TL;DR is challenging to write!

But in this case, TL;DR actually isn't the right term for what ethereum.org does. The content perhaps is more like a "executive summary". This would be really helpful to have for each EIP!


ethereum.org's summary for Ethereum (https://ethereum.org/what-is-ethereum/):

Ethereum is the foundation for a new era of the internet:

  • An internet where money and payments are built in.
  • An internet where users can own their data, and your apps don’t spy and steal from you.
  • An internet where everyone has access to an open financial system.
  • An internet built on neutral, open-access infrastructure, controlled by no company or person.

And Simple Wikipedia's TL;DR for Ethereum (https://simple.wikipedia.org/wiki/Ethereum):

"Ethereum is a system on the Internet where people can make deals." LOL

@samajammin
Copy link
Member

Good idea. Thanks for pushing the discussion forward.

Update on the latest around this.
A couple weeks ago I created a proposal to migrate EIP content to ethereum.org & presented this at the 3/11 & 3/25 EIPIP public calls. The response & feedback was mostly positive. We created an action item to investigate the implementation further, which I did:

  • I did a quick feasibility spike copying over EIP content to ethereum.org in EIP migration #913 (see preview here: https://deploy-preview-913--ethereumorg.netlify.com/eips/eip-1). I admittedly hit some unexpected quirks/complexities but the implementation all seems very doable.
  • I had a call with @Souptacular, @MadeofTin, @poojaranjan & @jpitts last week to hash out some of the specifics. That discussion surfaced additional considerations (e.g. the eip_validator ruby gem & need for XML feeds) that again, while totally solvable, also increased the complexity of this migration a bit
  • Multiple people have expressed discomfort with ethereum.org being the official home of EIP content. Inevitably there’s some political & perception factors at play. While most people seem to be for it & opposing concerns all feel addressable, I do think this makes the initiative less of an obvious home run than I initally thought it would be

My current thinking & proposal is to take an iterative approach to next steps:

  1. Launch the "Intro to EIPs" page on ethereum.org (Create an Introduction to EIPs page #831), then wait & see if that improves SEO for the EIPs site (which could take week/months to see SEO gains)
  2. Add site search to the EIP site (similar to the search recently added to https://blog.ethereum.org/search/). This could be a quick UX win for that site. Given that they’re both Jekyll sites, it should be pretty easy to mimic that implementation.

I welcome feedback & ideas around this plan. From that initial "Intro to EIPs" page (#831), we could easily build out additional pages (e.g. TL;DR / executive summaries for specific EIPs that @jpitts described). Or perhaps we eventually gain additional momentum behind the proposal to migrate the content entirely.

@samajammin
Copy link
Member

@fulldecent regarding your earlier proposals, specifically:

Update all links in this repo that link to the GitHub.com/... (I can do this)

I do agree it would be beneficial to update internal links. Looking at the EIPs website (e.g. EIP 1), there's a ton of links to the GH version of pages (instead of the eips.ethereum.org version of the page). If that's an initiative you have capacity to take on, I agree it would be worthwhile.

@fulldecent
Copy link
Contributor

fulldecent commented Apr 7, 2020

That update is already done. I have updated the links where possible and semantically equivalent. E.g. I have updated when an EIP was referenced directly ("this is extending ERC-20, see URL") and not when there was a different reference ("there was significant discussion on this issue (see GH issue 20) and we concluded that...").

Timewise, I did that several months ago.

@samajammin
Copy link
Member

@fulldecent awesome! Just to confirm my understanding of the difference w/ an example, looking at EIP 1:

Core - improvements requiring a consensus fork (e.g. EIP5, EIP101), as well as changes that are not necessarily consensus critical but may be relevant to “core dev” discussions (for example, EIP90, and the miner/node strategy changes 2, 3, and 4 of EIP86).

All the links in this section (& pretty much all the links I see in EIP 1) link to the respective Github page. Some like to the Github issue but some even link to the Github markdown page (which doesn't provide any additional context). Seems to me they could all link to the eips.ethereum.org page instead? At the least, all the links that reference the Github markdown page could be updated, ya?

@samajammin samajammin added the Status: In Progress Work is in progress label Apr 12, 2020
@github-actions
Copy link
Contributor

github-actions bot commented Jun 5, 2020

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days

@github-actions github-actions bot added the Status: Stale This issue is stale because it has been open 30 days with no activity. label Jun 5, 2020
@github-actions github-actions bot closed this as completed Jun 5, 2020
@samajammin
Copy link
Member

Given that https://ethereum.org/eips/ has been shipped, I'm going to leave this closed.

You can find the site search issue here: ethereum/EIPs#2607

@fulldecent
Copy link
Contributor

Looks good as deployed. As always, if you're looking for content and a project manager to lead ethereum.org so that it beats Hyperledger for attracting new people, and EF is supporting the project, then call me.

@fulldecent
Copy link
Contributor

Related --> ethereum/EIPs#2738

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature ✨ This is enhancing something existing or creating something new proposal 🤔 This is a proposal Status: In Progress Work is in progress Status: Stale This issue is stale because it has been open 30 days with no activity.
Projects
None yet
Development

No branches or pull requests

8 participants