-
Notifications
You must be signed in to change notification settings - Fork 128
[DISCUSSION] Site replatform alignment #412
Comments
Two questions for @zebateira, @cwaring and @andyschwab to discuss before proceeding (Ze will lead the conversation):
|
Okay, sorry to jump in here, I'm definitely not the one owning this piece of work so my opinions won't count for much -- but, I've been wondering very similar questions lately as I look at some other sites, and wondering where to ask them, so forgive me for taking the opportunity here. Some random and opinionated observations:
My takeaways from that are:
I'd love to listen in on whatever discussions come on these choices. I'll probably be doing some work soon that uses one of these families of tools, so I'd love to stay as aligned as possible. |
All good points, @warpfork ... please watch this space, but a few thoughts:
|
Quick notes here:
To clarify, the new Filecoin site uses Hugo. I am, though, comforted to hear that @warpfork's experience with Hugo mirrors my own. |
Regarding the first question Is VuePress still the right choice of platform, in terms of both functionality and consistency with our other top-level sites at PL?, here is my evaluation: Since the objective is to reduce context switching and overall consistency within our work, choosing a framework that can handle all types of use cases (main website, docs, blog, etc) is key. Because of this, I also explored the possibility of creating one single website repo that would encompass all of the projects: IPFS, IPFS Docs, IPFS Blog, other IPFS misc websites - something like this would need to be thoroughly planned and performed overtime, but beneficial I believe. And the best starting point would be the ipfs.io website. (This is how drand was done using VuePress). Note: big thanks to @cwaring for his initial research which inspired mine 🙏 Candidates
Note: considering the aim to reduce context switching, it felt natural to stick with vue frameworks - if using react is something we want to standardize, Gatsby would be my proposal. See here for a very detailed comparison table between Gatsby and others (including Hugo and Nuxt.js) - a lot of the metrics are not relevant for us here. Categories to evaluate
ProposalsI excluded Gridsome considering its small ecosystem and lack of maturity - it's promising, but not quite there yet. Option A - Nuxt.js npms.io scores:
Option B: VuePressnpms.io scores:
Option C: Gatsbynpms.io scores:
ConclusionI recommend both Nuxt.js and VuePress with a preference for Nuxt.js. I believe both Nuxt.js and VuePress would serve our use cases well, but Nuxt.js would be better. The reason for that is because although VuePress has been used successfully within PL, there are some caveats that steer me into thinking that Nuxt.js might be a better choice now: Maintenance & support, Configuration, Developer experience. First, it is a bit concerning that they have so very few maintainers that they can't guarantee bug fixes in the current latest version 1 of VuePress because they are developing version 2. There is some hope though with 3 releases so far since December, but still, this is something to watch out for. Secondly, even though in some use cases minimal configuration is good, it can cause some issues when we need something more custom. Doesn't mean VuePress can't do the job, it's just that it has not been optimised for those custom use cases and we might bump into roadblocks that cost a bit more time to go around even though you can accomplish the end result you needed. This might not be an issue for PL and IPFS specifically now or in the future, just something to keep in mind. On a last note, I did find Nuxt.js's documentation to be easier to read and follow, and the API more intuitive. Last thoughtsIn the case of migrating all the IPFS websites into a single website repo, Nuxt.js would be more flexible to handle all the use cases than VuePress.
This is something we should evaluate on another issue, but migrating to a monolith for most of IPFS websites (at least main website, docs and blog) would be a huge win IMO. So if this is something we want to pursue or at least have it within arm's reach, Nuxt.js will be more helpful I believe. React vs VueIf this is something debatable, there would a lot to be gained from using Gatsby over Nuxt.js considering support and performance are better.
|
Thank you, @zebateira -- this is extremely thoughtful, detailed analysis.
|
|
This is excellent, thanks for diving into this @zebateira!
This is something that concerns me about any framework we pick. Eventually, that framework will fall out of favour and/or maintainers will stop maintaining things. With that in mind: should we create our own framework/static-site generator? Creating our own solution comes with a bunch of overheads and is highly-non-trivial, but also has two major benefits:
|
@johnnymatthews That's a good point, but I fear that would push this work so far out of scope for accessibility as a near-term win that we'd have to shelve it entirely in order to be in line with the team's larger priorities. (We also know that we don't have the bandwidth to assigning a team to maintaining a custom platform.) If we feel that writing our own platform is a must, and worth postponing any work on ipfs.io until then, we can do so. That's a decision beyond my role, though. |
Thanks @zebateira! @johnnymatthews - I'd venture to push back a bit on your assumptions re benefits of building our own framework: |
@zebateira I don't want to position our work in a way that makes it only serviceable by a specific agency (should we continue to learn on agency support over internal development), but I'm curious to know whether Moxy -- and other agencies if you feel you have a broader sense of the market -- would be any better armed with boilerplates for one platform you've suggested versus the other. |
re building our own framework Even most agencies don't build their own framework because of the points all of you raised. However, to answer your question
We do two things to try to mitigate that issue as much as possible: choose a framework wisely and build a boilerplate. To choose a framework, we choose one that (A) is based on ambitious and clear goals that align with our own and (B) has a lot of maintenance support and sponsors (usually B follows A, and even contribute in B by contributing to it or sponsor it). Those are usually the main factors that indicate very good user adoption and continuous long-term support. Of course there's always a small possibility that it could all go to bust - but even if it does, since there is a huge community that also depend on the framework, there will always be a clean path out. |
Good question. At MOXY we have our own boilerplate Next.js with MOXY. And I'm sure we could find good Nuxt.js boilerplates, but I believe PL would benefit greatly by building its own boilerplate instead since the goals of the boilerplate would not always sync with PL's goals. |
Hmm... one of the assumptions we are making here is that the framwork needs to be vue, but considering that we want to use as much as possible off the shelf software, it might make sense to focus more on the ecosystem. Gatsby for example has a massive ecosystem and is based on react. |
Ah yes, there is another reason why I felt that we should use Vue. I'm sorry I didn't make it clear here:
I wanted to add that the fact that Vue seems to be the preferred one at PL, is also something to consider. I'll make this more clear by adding a third option C. |
Thanks for picking up the evaluation, @zebateira. I agree this is the right way to approach this in 2021, Vuepress has proven to be a great choice given the original deliverable of our documentation platform with other constraints at the time - even though we stretched it to deliver https://protocol.ai/ and https://drand.love/ it is not a one-size fits all solution and as noted the limitations start to show for large website structures. That said what @jessicaschilling has rightly pointed out the selection here should remain simple and accessible for the primary fact that we want to make sure our websites are easy to maintain, performant and quick to deploy for all teams. 🪄 A few important points we should consider:
Currently most of our web properties are built around Vue which I personally believe is more accessible than React for junior developers and simple applications, plus you get true single file components and we can reuse prior work from our current projects. So I would suggest we explore this path before a refactor to React etc. A primary goal for the framework/technology to get out of the way so that our web properties are more maintainable and accessible, which will empower people to contribute confidently. There is always a balance of power and flexibility that comes with frameworks, and I believe some constraints are a benefit – which is one of the attributing factors to why the simplicity of Vuepress has been successful so far. 💫 Where we are now:It was always a consideration that if we were to out-grow Vuepress that there should be a relatively simple path forward to port the content to a new framework. The trade-off is that we would need to rebuild and maintain the markdown pipeline and plugins that Vuepress provides out of the box, for this we need to evaluate the development necessary and whether the other requirements above can also be met without too much effort. Until now I have maintained most of these properties and helped others to self-serve along the way, so if we are to go further down the customisation route we will require more developer effort to support everything. I would first determine what we want to achieve and then how we are going to support it for long-term success with appropriate ownership. The resulting technology is just a tool to help us reach that goal and keep shipping 🚀 |
@cwaring thank you for the input 🙏 To refer the points you mentioned:
All good here 👍 all the options I proposed support this.
Most likely the Achilles tendon here, but it is something we were expecting to happen that we would need to help and fix - just as @andyschwab said, it will help the community as well to make more tech compatible with the IPFS gateway.
All good here as well 👍
All good here as well 👍 Additional notes
That is a very good point, and I agree that moving to Nuxt.js is a more straight forward path 👍 |
Is it correct to state that at this point, alignment seems to be congealing around using nuxt for replatforming ipfs.io?
If this is indeed correct: Since this replatforming doesn't involve much content at all, proposing that we use this as an opportunity to iterate on a boilerplate for nuxt + tailwind + Fleek and/or direct IPFS deployment. Would appreciate a weigh-in from everyone who's commented so far, particularly since we need to get a decision to Agency Undone for the ecosystem directory as well. |
I've written a comment here that compares Nuxt and VuePress (in the context of the IPFS interactive ecosystem) here: Quote of my comment for easy reference and discussion in this issue:
|
Thanks @orvn, great points and completely agree. I was writing this as your reply dropped in... It's still a matter of different tools for different jobs in my view, they all have their merits and should be selected based on the primary goals in mind. In the world of vue:
In the world of react:
We can create common ui by implementing tailwind, or equivalent atomic css framework - this helps with enforce some consistency and familiarity. note: root and relative path IPFS support is only possible in vuepress & hugo when I last evaluated this, if this remains a hard requirement then our options are limited without significant custom development and investigation. Alternatively we accept that most modern web apps require a fixed root depth it opens up our possibilities. For instance Next.js is powering Slate, despite this limitation because it helps us achieve our goals. Trade-offs.
From an end user perspective it is nice if the experience appears this way, however from a management and contribution perspective it is far easier to have separate independent repos that have their own issue queue and pr review process. For instance almost all the community activity goes on in the docs repo at the moment. So this should be considered if a decision is made to move in this direction. |
Also to add to what @cwaring and @zebateira mentioned. We've actually successfully used Nuxt on a couple of PL projects, both in static mode on IPFS, and as a full PWA with some feature rich functionality that required more than what could be accomplished on the frontend alone.
|
Per sync meeting 16 March: Reassigning this issue to @atopal @cwaring @zebateira in order for them to make an executive decision on how we are to proceed. @atopal would prefer the org as a whole align on React. Acknowledging that work is blocked until a decision is made. @atopal has acknowledged and approved that @orvn is researching possibility of root/subdomain support for nuxt, and that in order to keep Agency Undone work from being completely blocked, it may result that the ecosystem directory departs from eventual PL org standard. |
I apologize slinking away for a while as fireworks fly... I love the roundups of considerations, especially cwaring's post here. Big ups for things already looking widely agreed on:
There is at least one more consideration I'd like to throw into the ring that I haven't seen touched yet:
I also wanna comment that one of the constraints mentioned earlier seems like a nice-to-have to me:
Finally, I wanna put this on offer: some notes I scraped together myself recently while looking into static site gen tools: https://gist.github.com/warpfork/79edc135e049f1c43142a7e14c8beb31
All in all... Thanks for all the consideration ya'll are doing on this, and thanks everyone for sharing these notes on the thinking! |
We've just had a chat where we decided to move forward with nuxt on an experimental basis. We'll use that experiment to determine the possibility of subdomain support for nuxt. |
Thanks everyone for the great contributions! @zebateira excited to see what you come up with 🥳 |
Thanks all for keeping pushing forward on this 😊 |
@jessicaschilling sounds good 👍 |
@zebateira also I forgot to mention the nuxt content module which may be worth trying out as our markdown/content pipeline, it looks super powerful and could save a lot of custom dev time. |
Nuxt IPFS Module UpdateSome additional information to close the loop here:
|
Details in progress, but tldr: replatform existing site to VuePress in order to:
This is intended to be a "lift and shift" effort with minimal visual styling work.
Please contact @jessicaschilling with any questions in the meantime.
The text was updated successfully, but these errors were encountered: