Moving toward sustainability in our best practices

Hello all,

While we have several crosscutting concerns in mind in our development process (e.g., accessibility), the questions of sustainability is never mentioned explicitly.
This proposal does not aim at proposing concrete solutions, but to agree on the principle so that contributors can more easily take actions without having to argue on the basis.

Why

The internet currently produces approximately 3.7% of global carbon emissions, which are rising in line with our hunger to consume more data.
By making XWiki more sustainable, we have a chance to have a positive impact on all XWiki instances.

To be more concrete, the promises of sustainable development includes:

  • Reduced terminal obsolescence
  • Battery conservation
  • Reduced mobile data consumption
  • Protection of personal data
  • Faster loading times
  • Optimized referencing
  • Better accessibility

How

I propose to progress by studying the resources listed below (or any other resource), and to do individual proposal for each topic.
Note that in my opinion we are already good on several aspects (e.g., accessibility, minimizing css…) and for those we can consider that our current best practices are already enough, or we can improve them further.

Example of actions are:

  • introduce relevant metrics gathering to help decision
  • improve our best practices
  • propose/provide improvements to companies using XWiki in production (e.g., XWiki Standard does not rely heavily on images, but some instances can and could benefit from some tooling to make images smaller)
  • improve our design process to anticipate sustainability needs

Resources

Metrics

Online reading

Books

  • Sustainable Web Design - Tom Greenwood
  • Designing for Sustainability - Tim Frik

Conclusion

What do you think of making sustainability a crosscutting concerns of our development process, and to aim at incrementally progress toward a more sustainable XWiki?

2 Likes

In my opinion most of the promises of sustainable development are beneficial for us as a project and we work towards them already. However it’s lacking some documentation, and I think adding a new item on the dev.xwiki.org home page would be a good start. I know that at least this’d be really useful for the accessibility part :smiley:

As of now, except for a couple lines here and there, there’s nowhere to record our objectives and improvements related to accessibility without it feeling out of place or like a sidenote. I think having an “Accessibility” page that contains everything to know on the topic related to XWiki would be an improvement. As a crosscutting concern, it can be mentionned in a lot of pages, but having a hub to sum-up our intentions and efforts would be better.


As far as I understand optimized referencing is not something we are really aiming for, right?


I think that one of the first things we want to do is to settle on a formal definition of the “sustainable development” we’d like to reach. This choice in itself will rule out some topics, and if possible, I’d rely on a definition made by experts and/or a standard definition. If the definition you proposed is one of such, I’d like to know where it comes from so I can judge the bias on it and think about a potential oversight. It might be overkill, but this definition can become the fondation of an important facet in our development process moving forward, so I think it’s worth the time :slight_smile:


+1 to incrementally progress towards a more sustainable XWiki

Thank you for opening this proposal,
Lucas C.

Good idea, +1 for that.

One important note: IMO we should not aim just for XWiki to be more sustainable at runtime (ie less resource hungry basically) but also during its development phase (for example, I believe that our CI is probably quite resource intensive and there might be ways to reduce that while keeping the same quality level to the XWiki product).

+1 for you (or anyone interested) to research more about the topic and propose some tangible actions.

Thx

I doubt anyone is against using less resources in general, but It’s not very clear to me what you are exactly proposing.

Are you suggesting dedicating part of the roadmap to that ?

1 Like

For me the first step is to have it written somewhere so that we can’t ignore it.

Then, this could influence the decision process for future works. Some examples:

  • the default embedding of features relying on LLMs
  • the use of APIs only available on modern devices

Also, for now we tend to wish to use less resources, but we have no metrics to measure how we do in this regard which makes it difficult to effectively achieve that goal.

If we have the dedicated resource and some concrete actions to do, definitely.

1 Like

OK, so you are focusing more on adding a criterion to judge the design of future features and improvements than improving existing stuff ?

My point was more related to improving existing stuff, and the fact that it takes time, and just stating that using less resources is a priority is pretty useless without time dedicated to it.

It could also be used as a criteria to decide what to improve first indeed.

Since we don’t have proper financing for this kind of things for now, I’m focusing on avoiding to make things worse when we introduce new things.
But I believe if will be easier to raise some money to work on sustainability if we already started to think and work on the topic beforehand.

We do dedicate some time to improving performances of existing features (and I believe that this indirectly improves co2).

Anything added is going to make things worse. At best you can limit the co2 cost of additional features by making them performant. I don’t really see how we can keep XWiki being competitive and not add new features (like AI features).

A mitigating factor is our extension-based approach where new features are added as extensions that are not installed by default (and thus not used by users who don’t need them).

Working on having an XS distribution as small as possible is probably a good direction (in addition to being as fast as possible).

I haven’t read any doc related to green IT yet but I’m curious to understand what are our levers in addition to perfs & size (since I don’t consider limiting feature a real option).

Thanks!

Thanks to the latest blog post by Adrian Roselli, I found out about the Web Sustainability Guidelines (WSG). This is still just a draft but it might be interesting to keep an eye on the initiative :slight_smile:
This could become a good resource for formalizing and keeping track of some of the sustainability improvement we make.

I confirm, it’s far from being a w3c standard but still a very good read!

The content of this blog post seems short-sighted to me. It may be true as of today but I don’t believe it’ll be the case in a couple of years from now (even a couple of months).

Very interesting. Also a lot of work to map each items to our practices. I’ve skimmed quickly and found that we had best practices/dev practices in place for all the items I’ve read. Now I’m sure we can do better on some and it’s likely that there are items that we don’t do properly yet.

I’d be interesting that we start a draft document on xwiki.org to map each item to our practices and define a rating of how well (or badly) we do on each, pointing to links where our practice is documented.

+1, sounds like a good starting point. Where do you think this page should go?
Btw, Sustainability Guidelines Archive - Sustainable Web Design looks almost identical to Sustainability Guidelines Archive - Sustainable Web Design but with a nicer UI.

Some though from the “RWEB, RGESN, GR-491, SWG, … Navigating the maze of frameworks and still delivering ecodesigned digital services” presented at Green IO Paris.
We mentioned w3c but, as of now it seems like it is not the most complete standard, so we might want to discuss which standard we want to follow.

The same talk propose the following steps to make sure rules are followed:

  1. filter to rule out irrelevant rules
  2. assign rules to people (or roles)
  3. prioritize (to only keep the most important rules)
  4. possibly customize rules to better match the project
  5. apply
  6. inspect & adapt (and imo this “inspect” step should be as automated as possible,as we do for usability).

PS: the slides set is here

To close this discussion.
After checking the list of sustainable development best-practices references listed in the screenshot above.
I ignored the very generic references.
Most of the remaining ones are in French, reducing the choice to:

  • W3C Web Sustainability Guidelines (WSG)
  • The Green Software Pattern which is way less complete than WSG

I also found https://www.sustainablewebmanifesto.com/ which is too generic for our needs.

In summary, W3C WSG is the best option we have currently, and I trust W3C to keep improving WSG.

So if you agree with this sustainable development guidelines choice, I propose to start:

  1. checking if the rules are applicable for us
  2. checking if we need to improve our best practices documentation
  3. if need be, finding somebody responsible for making sure the rule is followed
  4. opening discussions to prioritize rules (to only keep the most important rules)
  5. opening discussion to customize rules to better match the project
  6. proposing metrics to monitor if we are moving in the right direction

WDYT?

1 Like

+1 to have a page (in draft for now while we work on it) where we map each rule to what we’re currently doing.

Once it’s finished and agreed, move that page to an official sustainability page.

All sounds good. This looks like a role for a Sustainability Manager :slight_smile: (in the spirit of https://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices#HSpecialProjectRoles).

I also wanted to open a discussion in a different thread on a Performance Manager role (and the Sustainability Manager role would be for topics not reated to performance).

Thx for pushing this topic!

+1

I’ve started https://dev.xwiki.org/xwiki/bin/view/Drafts/SustainabilityBestPractices/# to keep track of our progress.

Thanks Manuel. I’ve only checked 2.1-2.4 so far but wanted to provide some feedback so that we align on what we want to achieve.

If I take https://dev.xwiki.org/xwiki/bin/view/Drafts/SustainabilityBestPractices/2.4%20Consider%20Sustainability%20in%20Early%20Ideation/ I see you mentioned “partially done”. I think we need more than this and to list:

  • what we do, with a link to the doc or results of what we do (ie we need to prove it)
  • what we’re missing, described

Partially done though stakeholders, but they are not actual users.

Note that there’s no concept of stakeholders on xwiki.org… However we have a rich process for participation and testing (see contributing page + dev process page where we mention the process: https://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices#HGeneralDevelopmentFlow + forum/chat links).

Ideas for the future:

Thanks for starting this! Do you want to continue and progress or is it open for anyone to fill it?

Definitely, the sub-pages are currently mostly copy of the rules, and personal notes.
I plan to complete them fully before doing the corresponding proposal.

Good point, I’ll need to rework this to make it less “XWiki SAS” specific.

Yes, I was considering moving to a more structured approach with XClasses and Live Data macros. But it was too time-consuming for a fist minimal work on a Friday afternoon :slight_smile:

Anyone is free to contribute, just please let me know beforehand, to make it easier to track our progress.

I’ve updated https://dev.xwiki.org/xwiki/bin/view/Drafts/SustainabilityBestPractices/2.4%20Consider%20Sustainability%20in%20Early%20Ideation/ to try to implement what I had in mind.

Let me know if it matches what you imagined.

Thanks!