-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Need to make editing and adding articles easier #1212
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
Comments
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? |
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: 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. |
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? |
Thoughts? @adamant-pwn @jakobkogler |
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.
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...
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.
I think it's actually a pretty strong model, as this is how some largely successful sites as OEIS and Wikipedia operate.
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.
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 :) |
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...
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? |
All right. Without debate, it sounds the following would be useful:
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 |
Upfront about me: So I'm will probably not gonna spend a lot of time promoting / creating merch / shipping shirts / ... About contributing being to hard: 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. 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. 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:
There are of course other incentives that don't cost money. Incentives also need to incentivise reviewers. The things that we probably can do, is to advertise contributing more. 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. |
I'm much late to the party but I would advise keeping money out of this. The moment you add money, you have a significantly more complicated money distribution system, some kind of funding source (out-of-pocket?), and the perverse incentive to create crappy ChatGPT articles. I would rather have fewer articles written by passionate volunteers than a flood of useless pull requests or an unorganized mess anyone can edit like Wikipedia. I've discussed incentives before and I think authorship or recognition is a good incentive. It could be something like listing the top contributors for the month or having a special page thanking major contributors. Something to make contributors feel recognized and symbolically rewarded. |
Articles are not being produced and the primary maintainers are unenthusiastic. They need to find successors otherwise this project is dead. As far as I'm aware the website is being hosted by @jakobkogler out of his pocket and he admits he's basically out of the project. This is an enormous existential threat to the website. Not to bee too critical but @adamant-pwn produces articles regularly for codeforces which seems to be a conflict of interest especially given many articles that could be translated (I'm assuming he speaks Russian based on nationality and I know he writes English well.) Given the primary maintainer @jakobkogler admits he's out and pays for the website and @adamant-pwn doesn't seem to view himself as the primary maintainer, this project/website is on life support. |
Personally, I was producing more dynamic programming articles after my intro to dp article, but I got discouraged and stopped cold when I saw this response. Thankfully someone else produced on based on mine. It kinda made me want to finish my Knapsack and Subset sum article because I believed it'd be better, but I digress. There needs to be a major effort to add maintainers/hand off the project. |
I don't think hosting a static site with barely any images costs very much. In fact, since the site is entirely static, it can be hosted for free with GitHub Pages. I'm not sure why it isn't.
As far as I'm aware he doesn't make money from either, and CF articles can easily be adapted for this site.
This is an informational wiki-like site, so doesn't require as much maintenance as a project with running code. It can be run pretty much indefinitely without issues like The only reason I don't volunteer to maintain this project is that I don't have the expertise to review new content. But I am willing to merge obvious fixes and maintenance work. |
You didn't really address the main points which is that @adamant-pwn is essentially lead maintainer despite likely not feeling like he is. Also, the person hosting the site is out of kind of out of the project. What happens if he switches bank accounts or something? It doesn't seem like there's a good long term plan for the site and certainly there's a lack of enthusiasm to do better. The lack of enthusiasm is unfortunately infectious. |
I don't know why you're concerned with a hypothetical situation. The site is still actively being maintained and committed to. It's a long term project that has has peaks and slow days. |
Well, it's not hypothetical. @jakobkogler availability is very limited at the moment, and I left Google, meaning that I can't spend my job hours on this project anymore, so I also have much less resources to dedicate to it. That being said, I agree that we need to add more maintainers, and Jakob also wrote that he's willing to support that by adding more people to the maintainer list, etc. Preferably it also includes someone with a drive to actually lead the effort, as I too would be happy to contribute and support new endeavors, but don't really have the capacity to do all or most of it on my own. So... Any ideas on what should be the next steps? First of all, @jxu and @mhayter any of you wants to join on the maintainer side? And in any case, any ideas on what would be the best way to try and find extra maintainers for the project? |
I am willing to join on being a maintainer and handling simple issues and pull requests (I was considering asking sometime). My algorithms knowledge is not enough to verify advanced topics, so there'll be a balance between checking every sentence and trying to get PRs merged. |
I'm happy to welcome new maintainer to the project. |
I've also made a call for contributors/maintainers on Codeforces, not sure how successful it would be though, I feel like there are not so much enthusiastic people for this kind of stuff recently. |
Thank you for heeding my call for more maintainers! I, too, could help with small typo-like errors. Yes, I agree that more maintainers should be brought on. It would preferable to get someone who is of the current lead maintainers level too (yellow or red in codeforces probably.) This website is well known (at the moment). I hope it can still grow. |
Also I'd like to commend @adamant-pwn for taking action on the post to codeforces! This is kinda what I thought should have happened at the beginning of the year (when @jakobkogler basically said he was out). Frankly, I kinda thought it'd have made most sense for him to have posted calls for maintainers after that. The funding of the site is still a concern in the longer term too if @jakobkogler is not really going to be involved. Is the architecture of the site available somewhere?(Especially the site needs re-host in the future.) |
Also I'd like to commend @adamant-pwn for taking action on the post to codeforces! This is kinda what I thought should have happened at the beginning of the year (when @jakobkogler basically said he was out). Frankly, I kinda thought it'd have made most sense for him to have posted calls for maintainers after that. The funding of the site is still a concern in the longer term too if @jakobkogler is not really going to be involved. Is the architecture of the site available somewhere?(Especially the site needs re-host in the future.) Heck, doesn't @adamant-pwn teach programming camps? Perhaps directly reach out to them(either if they'd want to maintain or give you leads). Most of those attendees will be stronger than @mhayter and @jxu in competitive programming. |
Hi @mhayter! I have sent you an invitation to join "Contributors" team of the project. You should have write access to repos when you join it. The reason I was reluctant to make external calls for maintainers is that, from my perspective, it is more important for a maintainer to be involved with the project than having a high Codeforces rating (which would also help, but I don't perceive it as something strictly needed, e.g. @RodionGork and @tcNickolas ratings are by no means high, but their contributions were essential to the project in the starting days). Also regarding reaching out to camp participants, I have a feeling that it is more likely to annoy people due to unnecessary pings or emails than attract more maintainers. E.g. I routinely ask camp participants whether anyone would like to set problems for future camps, and in most cases I simply get no replies. In any case, the call for maintainers is currently on Codeforces main page, so we can see what kind of people turn up, if any. I think blog post's reach would be broader than that of camp participants anyway.
We can theoretically switch to e.g. GitHub pages even now, and I plan to test it out on a separate branch. The only thing that really requires external hosting is the preview page, since it is dynamic and needs server-side scripting. But overall what Jakob told me is that hosting in essence is very cheap and doesn't put any burden on him financially. If we use some donations from https://opencollective.com/cp-algorithms (yes, there are already some, around ~30€ for this year), it should cover the hosting costs anyway. What I'm slightly more concerned about is that Jakob's currently the only person with the admin access to the current hosting setup and domain name. With the former, I think we can diversify the risks (and also get rid of most of the costs) by moving to GitHub pages, although their load times are generally worse than Firebase, so probably we should keep them as a backup options, rather than as the main host. In this regard, having a backup access to domain name could be more important than to the hosting setup. |
I've added @Kostero who wrote me after the CF blog as a new contributor, welcome! Also to make sure we have a backup options with hosting, we also have an independent mirror hosted on GitHub pages: https://gh.cp-algorithms.com/. We will be also using GitHub pages for previews of pull requests now, while the main site will keep being hosted on Firebase, at least for now, since the load times for end users are supposedly better from Firebase. But if we would really need it, switching to GitHub pages based hosting would be a matter of properly setting them up to use the main domain name. |
Good progress! Again how to deployment works and how the rendering works is unclear to me at least. Additionally @Kostero, could we get an introduction and how you see your role in this project? I guess my intro is that I was a USACO camp hopeful in highschool and became interested in algorithms again in the past few years but haven't officially competed in many years. I'm not super confident in very technical topics, thus why I wrote the "Introduction to Dynamic Programming" article. For now, I'll likely only be adjusting typos and perhaps critiquing issues or pull requests if I'm confident. |
Most of it is done via GitHub workflows. The static web pages are generated with Material for MkDocs in build.yml, and then deployed to Firebase (hosting for the main site) and GitHub Pages (for a mirror and pull request previews) in deploy-prod.yml. There are also some other things going on behind the scenes (MkDocs-specific setup and overrides, testing of certain code snippets, etc). In principle, someone enthusiastic enough (not me at the moment) could write about it on the wiki, which is underutilised. |
That's useful. I knew some of that but there's definitely new info for me there. Thanks! |
I still think asking for donations and making it clear to people that this is a volunteer/ad free website is important. Metrics would be nice. I put the site into traffic analyzers and we assumedly get 24k views a month? My dp article is ranked first page on Google now. How many readers are there? If we have a request article or asking for donations button/banner, I think it would be super useful. One analyzer claimed the website is worth $30k. If we could capture a fraction of that more contributions and more maintenance would be achieved. |
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.
The text was updated successfully, but these errors were encountered: