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

Need to make editing and adding articles easier #1212

Open
mhayter opened this issue Dec 19, 2023 · 8 comments
Open

Need to make editing and adding articles easier #1212

mhayter opened this issue Dec 19, 2023 · 8 comments

Comments

@mhayter
Copy link
Contributor

mhayter commented Dec 19, 2023

The current way to add articles and to make edits is onerous on contributors. This website is a valuable resource but I feel that it runs the risk of becoming irrelevant to something like geeksforgeeks (though the quality control there can be an issue) as it doesn't turn out articles fast enough. The translation progress is still only 85% though it's been years.

Additionally, when I was trying to write a DP overview, I noticed that most basic dp examples are not on the website. In my view this is an enormous hole in the website. This likely will cause people to search elsewhere (and forget about cp-algorithms.com) I, myself, already sort of fell into this situation.

In order for the project to remain relevant, we need to lower the barriers to entry to contribute and/or increase the number of people who want to contribute.

@adamant-pwn
Copy link
Member

Thanks for bringing this up! As I understand it, the goal of CP-Algorithms always was to prioritize quality over quantity, to ensure that we do not end up in the state of GeeksForGeeks, which seems to have a quite poor reputation in terms of content quality.

Of course, some measures to increase the number of contributors would be welcome, but we should be careful in what exactly we do. So, before doing any actual change, we should consider whether the inconvenience is real, and whether fixing it will, indeed, bring more contributors to the website.

That being said, could you please point to some specific parts of the contribution process that make it seem onerous? Do you have some suggestions on what could be done better?

@mhayter
Copy link
Contributor Author

mhayter commented Dec 20, 2023

First, I do believe that the high quality and curated nature is the primary selling point of the site. To me, the site is a high quality living book for competitive programming.

I'm not sure the solutions, but I can identify problems. (I can give possiblities.).

One easy one might be to make simple changes wiki style or something but require larger changes to undergo approval.

Many trivial changes are useful but inaccessible as people dont want to login and/or don't know how to use github.

Competitive programming overselects for high school and college students. Many of these people don't know git but do know competitive programming. They are likely an untapped resource.

Another problem is that there is no real incentive to create/translate articles. The current process is done out of the goodness of people's hearts. This unfortunately is not a good model. It's not how people work.

There likely needs to be a stronger incentive to put in significant work.

Some incentives might be might be:
Prizes, merch, cash, tax write offs(I don't know how this project is structured.), recommendations, etc.

The site could perhaps solicit donations directly on the site. Sell merchandise. Perhaps sell a printed version of the site (a book). This money should fund bounties for articles.

Some competitive programming competitors are from countries with lower cost of living but also speak english and thus could afford smaller reward but could still be driven to produce articles. This is my impression of how geeksforgeeks gets articles. Their review process is obviously lacking (I don't think they have codeforces reds reviewing them haha.)

Having a reward for the reviewers would likely increase article review speed as maintainers wouldn't feel like reviewing is a burden.

These are just some preliminary thoughts.

@mhayter
Copy link
Contributor Author

mhayter commented Dec 21, 2023

This is not to point fingers. Please don't take offense:

An example of people not knowing how to use github/broken process I've seen is in the Issues section where people will suggest a change in code,but the response is "would you like to submit a pull request?" Then the reponse is silence or "I'm lazy" or "I'm not really good at github". And then nothing happens. Perhaps if maintainers and contributors had larger incentives to contribute, this would not happen.

In a more ideal situation, it would be nice to see the change to be done rather than outright rejecting the change until the proposer fixes it in exactly the way the maintainer would like. Yes I understand that this puts more burden on the maintainers' shoulders. This is likely why greater incentives are need to contribute both as a maintainer (I assume) and as a contributor. In fact, we know that a few attempted contributions that went stale were driven by hacktobest, an incentive which, I believe, is only t shirts. These went stale after October had past. Seemingly, with just t-shirts, we can incentivize people.

Maybe have a "I added an article" t shirt or "I translated an article" t-shirt could be a thing?

@mhayter
Copy link
Contributor Author

mhayter commented Dec 27, 2023

Thoughts? @adamant-pwn @jakobkogler

@adamant-pwn
Copy link
Member

One easy one might be to make simple changes wiki style or something but require larger changes to undergo approval.

I don't really know any easy way to distinguish between simple and larger changes in an automatic enough manner. Also, converting to a "true" wiki structure would likely require a large overhaul on how the site is hosted, possibly converting it to MediaWiki or a similar engine? I don't expect anyone doing it in a conceivable future.

Many trivial changes are useful but inaccessible as people dont want to login and/or don't know how to use github.

I'd like to make it more accessible, but IMO at least logging in is a reasonable requirement to propose a change. And, again, supporting anonymuous contributions and/or suggestions might require significant changes to how the site is hosted. I guess one way is via comments system, which was requested a lot, but was not implemented so far due to concerns that it may significantly increase moderation burden.

One other reason to not introduce comments is because the current intended way to raise awareness about a problem in an article is via "report a problem" button in the upper right corner of each article, that sends people to the form of creating new GitHub issue. Well, it also requires to create a GitHub account, but I don't think that simply creating and having an account requires any special knowledge about using GitHub...

Competitive programming overselects for high school and college students. Many of these people don't know git but do know competitive programming. They are likely an untapped resource.

But you don't need git to contribute. You can click on the "Edit" button in the top-right of every article on the website and make changes directly in the web interface of GitHub.

Another problem is that there is no real incentive to create/translate articles. The current process is done out of the goodness of people's hearts. This unfortunately is not a good model. It's not how people work.

I think it's actually a pretty strong model, as this is how some largely successful sites as OEIS and Wikipedia operate.

There likely needs to be a stronger incentive to put in significant work.

Some incentives might be might be:
Prizes, merch, cash, tax write offs(I don't know how this project is structured.), recommendations, etc.

The site could perhaps solicit donations directly on the site. Sell merchandise. Perhaps sell a printed version of the site (a book). This money should fund bounties for articles.

I'm generally open to the idea. It wasn't largely announced, but we did set up GitHub sponsor page and opencollective page that are linked in "Sponsor this project" section of the repo. Well, so far the results are non-existent, but also linking there from the site, announcing it more widely and setting up some bounties might also help with donations.

I think one point of concern when we discussed it with Jakob was that it's not really clear if introducing a system of bounties would actually help with increasing an amount of high-quality content. On the contrary, there was a concern that it might actually lead to the increase of low-effort contribution attempts of GeeksForGeeks level quality, which is why we're cautious about it.

Some competitive programming competitors are from countries with lower cost of living but also speak english and thus could afford smaller reward but could still be driven to produce articles. This is my impression of how geeksforgeeks gets articles. Their review process is obviously lacking (I don't think they have codeforces reds reviewing them haha.)

Having a reward for the reviewers would likely increase article review speed as maintainers wouldn't feel like reviewing is a burden.

For me personally, I think it's unlikely that we reach a level from donations at which a financial incentive for reviewing really makes a difference. So, on my side the problem is more due to general lack of resource (first of all, time) for reviewing stuff, rather than lack of financial incentive. And this should probably be solved by increasing the number of reviewers (currently it's really just me and Jakob), rather than introducing incentives for us two :)

@adamant-pwn
Copy link
Member

In a more ideal situation, it would be nice to see the change to be done rather than outright rejecting the change until the proposer fixes it in exactly the way the maintainer would like. Yes I understand that this puts more burden on the maintainers' shoulders. This is likely why greater incentives are need to contribute both as a maintainer (I assume) and as a contributor. In fact, we know that a few attempted contributions that went stale were driven by hacktobest, an incentive which, I believe, is only t shirts. These went stale after October had past. Seemingly, with just t-shirts, we can incentivize people.

I try my best to incorporate the stale change myself when it requires relatively low effort, or is critical. But again, the main issue is the general lack of time, and that it can't really be applied to issues like "we need a new article/new section about ...". As long as there is someone volunteering to actually write it -- sure, we can review it and try to add to the website. But the capacity of doing it on-demand is at the moment very limited.

Well, yes, stale contributions from hacktoberfest is a kind of failure on our side, and probably also strongly indicates that we need more hands in reviewing stuff...

Maybe have a "I added an article" t shirt or "I translated an article" t-shirt could be a thing?

I have no idea how it's usually done though. Is it typically managed by a third party that collects payments and prints/sends t-shirts?

@mhayter
Copy link
Contributor Author

mhayter commented Jan 6, 2024

All right. Without debate, it sounds the following would be useful:

  • Adding a solicitation for donation and/or sell merch on the website (Perhaps on banner?)
  • Incentivizing significant contribution (exclusive T-shirts?) could be useful. I've done a cursory design: https://sprd.co/mS5rDx6
  • Increasing reviewers and/or further incentivizing reviews

I've quickly researched the T-shirts and made a basic (not necessarily final) design https://sprd.co/mS5rDx6. It seems like the t-shirts cost $18.00 + shipping (international is available, but I'm not sure how customs works).

I was thinking that there could be 2 different designs: "Algorithm Translator" (Black) and "Algorithm Innovator" (White). Thoughts? @adamant-pwn @jakobkogler

@jakobkogler
Copy link
Member

Upfront about me:
As you can see from the time it took me to reply, I'm not focusing on this project any more. I still host the project, and from time to time look into it in order to fix some bugs, review some pull requests.
While I still love algorithms, it's not my main focus any more. My interests switched, and I'm also not actively compete / follow the competitive programming scene.

So I'm will probably not gonna spend a lot of time promoting / creating merch / shipping shirts / ...
Maybe somebody else is motivated enough, then I'm of course willing to support a bit. But I'm not gonna start a complete new thing.


About contributing being to hard:
As @adamant-pwn already mentioned, it's possible to contribute without knowing CLI Git. Contributing directly via Github is more or less similar like contributing to a wiki. And also for a wiki you need to register and login.

Also most of the "good" contributors are in some way a software developer, or want to go in that direction. Those people need to be familiar with Git anyways, and it doesn't hurt learning it here.


While incentives would increase the contributions a lot, it's not that easy as you are making it out to be.

Incentives like goodies/money will mostly attract people that want to the prices, and not people that care about the project.
We saw that over and over in the Hacktoberfest, most of the contributions are very minimalist or low effort.
People think "Hey, I can quickly earn a shirt in a couple of minutes", and then they create a PR with some copy-pasted text, some text generated by ChatGPT, PRs with just adding a single problem (that might not even fit), they miss important observations, don't follow our style, or just write in a very broken English. Those PRs take long to review, long to fix. This year we refused quite a lot of them.

Mostly those events bring a lot of work to us maintainers, some more exposure, but very little new good content.


That said, one the biggest problem for incentives are costs.
As you wrote before the target group of competitive programming are high school / collage students. Exactly those people, who don't have money to donate to such a project.

While it's already possible to donate to our project, we haven't made anything from it, and we also don't have any other income streams. Sending a shirt to a single contributor would actually double our expenses.

GeeksForGeeks on the other side is a company with revenue. They can give some incentive. Even if they loose some money by paying people for writing articles, they will benefit from the additional visitors on their website, and can advertise/sell their courses/certifications/...

The ways to collect money that I see would be:

  • Donations: I don't see that working, we don't have users that would donate.
  • People could sponsor a new article (e.g. if somebody would want to see a article about Dynamic Programming, they could donate towards that goal, and when the goal is reached somebody writes the article and gets that money or a shirt). Some bigger Open Source projects do that, although it's done usually for more complicated features, and I'm skeptical that it works in our case. I fear when there is a bounty of 20$, a lot of people will make PRs at the same time, some written with ChatGPT, some bad ones, ...
  • Adds: Nope, I hate adds. That's also a reason why I host the website out of my own pocket...
  • Merchandise: I have no idea how much money there is to make. I expect that it's not that much, if you don't have a big brand. E.g. you said that it takes around $18 to make a shirt (without shipping). If you want to make any margin, you need to at least increase the price to $20 or more. For such a pricey shirt, I at least expect some pretty cool logo/message on the shirt. Which means we need some graphics designer. Nobody will buy a shirt for $25 if it simply has the CP-Algorithms logo on it.
  • Sell a book: I don't think that the quality of the articles is good enough for a book. You need to clean up a lot, so that all articles have similar quality, similar style, don't miss important topics, ... So a lot of effort, that I'm not willing to do.
  • ???

There are of course other incentives that don't cost money.
E.g. giving attribution the person who did the work. @adamant-pwn added some features, that shows on the website which people contributed which articles. And it highlights new articles more.
So that people can take pride in contributing articles.


Incentives also need to incentivise reviewers.
During the times when we had the Hacktoberfest incentives, the work of us maintainers increased by a lot. And especially for bad PRs it takes a lot of time. On some PRs I think I spent more time reading/correcting a PR than the person took for creating it...


The things that we probably can do, is to advertise contributing more.
E.g. by advertising new articles on other forums, telling people that they can contribute, showing some "add new article" or "help review PRs" banners on the website, etc... Or telling people that they can become active maintainers of the project.

If there is a good other plan, I'm open to to support (I can add new maintainers to the project, give access to sponsoring accounts / ...), if somebody want's to take it in their hand. But I'm not gonna start advertisement campaigns, creating merch shops, ... on my own anytime soon.

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

No branches or pull requests

3 participants