I am looking at the post called Is Mike Mirzayanov dictator? at the moment. I'm reading through the comments, I'm looking at people's reactions, I'm reading Mike's replies, and... I am utterly disappointed.
I demand progress.
For context, I do believe Codeforces is the best website for competitive programming contests at the moment. I sincerely give credit to Mike for creating Codeforces and providing participants and contest authors a platform for interaction completely for free. I am confident that Codeforces is the most appropriate website for being the platform for sharing knowledge, exchanging tricks and methods, and collaboration between both contest participants, their authors, and coordinators.
Please consider this an open letter, for this is a will not of a single person, but of many individuals. Please consider signing it by stating so in a comment under the post, should you incline to do so.
I will start with a more personal note, an expanded reply to a [not yet] downvoted comment.
Even If he is a dictator, I am very much willing to live under his rule :)
This is quite a slippery slope. Once a project, a product, or a company achieves a monopoly, things stop changing drastically and improving as rapidly as they have been before.
This has happened to plenty of projects I enjoyed and to many people I idealized. I don't want this to happen to Codeforces as well, and I do not want its maintainers and developers to get drawn in self-delusion.
I'm fed up with people sweeping problems under the carpet. Bear with me.
Our benevolent dictator has said:
Is this too little for you? https://mirror.codeforces.com/blog/entry/88691 I do not think that you realize the amount of effort that is needed even just to maintain the infrastructure, host rounds, and do all the current work.
Let us examine the list Mike linked to.
Right. There are some gems like Edu. Sure.
But what about the rest? Suspend your belief in authority, stop staring and think about how you would implement this or that feature. About half of them certainly took less than a hundred lines to implement. Another quarter should have taken a few lines but presumably took more because of lots of legacy code.
"Pypy support improved" most likely was not simply "Pypy support improved". There have been many problems with PyPy in the past. It's plausible to imagine that this problem was connected to the sandbox as well. So why not write "fixed a bug in the sandbox" instead?
Then again, everyone runs 64-bit software these days, and I am fairly certain "g++ 64-bit supported" actually meant "I installed 64-bit MinGW and recompiled the sandbox for x86-64".
By the way, what sandbox does Codeforces use? I do hope it is something safer than PCMS invokers. We could theoretically take Mike's word for it. But hey, IOI isolate is open-source for a reason. You don't want participants to crash the invokers in the middle of a competition, or crack something and fake their scores. As of today, there are 78 issues on the repository, 26 pull requests, 365 stars, and 13 contributors. This means that at least 13 people have checked the code for security. That guarantees that the risk of a problem is small enough. Do we have that guarantee with closed-source Codeforces invokers?
But I digress. Back to the topic at hand, back to the list. I mean, yeah, that's nice stuff, yeah, right, that's a feature improvement, sure. But the way it is stated it is much more admirable than it should be. "Now a user can detach a mashup from a parent contest" is probably "I added a button that executes UPDATE mashups SET parent_contest = NULL WHERE mashup_id = ?
query". That most likely took less than an hour to implement.
Most of these features are low-hanging fruit. They were implemented not because people asked for that, but because the features were relatively easy to implement. That gives the developers a chance to deny the lack of progress, even though many participants and users don't sincerely believe in that.
People asked to handle cheating better. Where's that? Where's a form to report cheaters? How do I file an appeal if I am alleged of cheating?
Codeforces is, after all, possibly the largest submission dataset. What about releasing open data for people who'd love to train ML models or something to detect cheating with fewer false positives and negatives?
Now to a somewhat tangential question.
Polygon API is terrible.
No, Mike, you don't add more endpoints to it to account for more and more people's requests. Throwing gold bullion into a pile of crap doesn't make it any less crap.
Deprecate the API and start from scratch. There's a reason why developers prefer Linux to Windows, and the reason why developers will prefer the new API rather than the old API is the same. Patch APIs be damned.
Open the repositories. Yes, for reading and writing. You say there are many assumptions about the internal structure? Fine, do verify that these assumptions hold upon push, that's not that difficult. Let people automate stuff the way they prefer: via shell scripts, or sed scripts, or python, or whatever else they want to use, instead of forcing a particular API that a) doesn't have control over everything, b) no other program in the world uses.
And from Mike's comment under a blog with suggestions for, uh, blogs:
The remaining questions are much more complex. For some of them, work has been going on for a long time. In particular, I want to collect the “Codeforces golden fund” into a kind of catalog. I have already done quite a lot in this direction. Hopefully, there will be something to show soon.
6 months ago
In other words: a wiki-like platform, a place to collect and label learning material from Codeforces blogs will be available Real Soon Now.
Then again, only to confirm the theory of low-hanging fruit. Users are now alerted when commenting under an old post, which is point number one of the blog. Point number two is "Don't allow users to delete blogs", which is about as easy as the first one, but it wasn't implemented. Too boring or something idk I'm not Mike. The other points are harder than the other two and weren't implemented either.
The point is, when you make a changelog, you don't make up a big list of improvements. You don't look through the commit log and copy whatever looks worthy to the list. No.
You open the site, you click through the links, and when something catches your attention and you think "hey, how amazing is that, I can't imaging how people used this without that feature before", only then you add said feature to the changelog.
We're no investors. We can and do read and process the information we are given. We do notice delusions.
I am about to say something some people won't like, so I have to restate: please bear with me.
I admit I am prone to spur-of-the-moment decisions, and it is no wonder others are as well. I bet that's how most revolutionary started, I bet that's why Codeforces itself got popular. But at some point, you have to take a pause.
Not long ago, there were many projects not dissimilar to Codeforces. But the stars aligned so that your ideas matched with community demands, and that's why people decided to prefer Codeforces over other services. Many entrepreneurs don't understand this, and survivorship bias doesn't help, but. You got successful not because you figured out what people need and did the thing right. You got successful because you did the right thing at the right point in time. Accidentally.
The moral of that rant? You were right once, at some point, but that is no excuse to be certain you are right now. "Try doing what I did, that's not as easy as you might imagine" is no excuse to send off me and others now. Right, this is not easy, but that is not because we are worse developers or we generate worse ideas than you, that's because luck is unfair.
Android, Windows, Chrome may be worse than iOS, macOS, Linux, and Firefox, but somehow the former are getting more and more popular than the latter. That many people joined Codeforces does not imply Codeforces is a great enough platform.
It does not help that too many people see you as a god, people assume you are always right, and your comments and posts are supposedly more upvoted than anyone's on average. I am genuinely sorry to admit this post may be considered a contrastively cynical reply.
I'm fed up. Someone has to say it. MikeMirzayanov, be honest to yourself and the community. You were right once, you are wrong now. Don't make yourself and the improvements of Codeforces look better than they are. That post about the results of 2020? It's correct, it's valid, it's perhaps accurate, but it is not right.
I'm not going to be that guy who only points out mistakes. I want to help and provide solutions, just like many others here.
First and foremost, provide a platform for people who want to request features and submit bugs. A platform where the reports do not fade into oblivion with time, unlike Codeforces blogs. A GitHub or a GitLab repository should work at first.
Then start prioritizing. Publicly, perhaps. A Trello-like board, if I may. This will both stop us (as in the community) from repeating requests and asking you when you'll come to implement this or that and help you figure out what's considered more or less essential.
The happy ending we cannot hope for is for Codeforces to be released under an open-source, though perhaps a non-commercial license. I foresee the security implications, and while I am certain this issue can be overcome, I am all too aware this is an idyll at this point.
Sure, an idyll is unachievable.
But can we settle on a utopia?
I will add a little from myself moments that personally I am very much infuriated in the polygon and codeforces
1) Interface of the polygon is he not the ntuitive and at the same time there is no normal guide for him, all the scattered through the endless number of blogs or comments And to understand polygon for a beginner needs to spend a lot of time.
Therefore, I would like to would be to have the guide by polygon, and local tex.
2) There are tasks with subtasks, and there are a lot of troubles here. First, where is the gluing of subtasks, I strongly doubt, that the implementation of this function will take more than 100 lines, but it does not exist, and this does not allow us to solve the IOI format of tasks normally.
I can't say that I don't like it exactly, but I and almost all my friends can't stand the interface for such tasks, it's really unpleasant to use, even the Novosibirsk system will be 10 times more convenient than this, so it would be nice if someone makes a normal interface for tasks with subtasks
It is also very strange that you can't watch the result of execution on tests from the condition, it is very strange and inconvenient, and it would seem that if there is such a function for ordinary tasks, then it is clearly not difficult to turn it on
3) There are groups, and the following functions are very lacking:
It is very annoying that there is no setting that allows you to enable the ability to see the solutions of other people in the group after the contest or after solve the problems
Okay, you can't look at others, but you can't even look at your parcel from the profile submission which is very annoying.
4) Codeforces works very strangely, if there is only a pdf from the condition, I would like it to be able to display it on the site so that it does not have to be sent through the wilds of the system
I think that everything except 1 and 2.2 is done in no more than 100-200 lines, so I would like such functions to be implemented.
И очень сильно бесит, что после написания комментария на английском тебя сразу перекидывает на английскую версию
1) is this guide normal? (I intuitively clicked to first google link)
Okay, I didn't know about this, thank you)
why is this downvoted, someone who changes their opinion after learning about new info is NOT downvote-worthy
But it was created not by anyone of Codeforces team and you found this link on Google, not on the main Polygon page. This tutorial is good, but an official one would be better
I, dshindov, agree with the points from this open letter.
I, Renedyn, sign this open letter
clown
piece
full agree
I wonder how much time you've spent on this blog)
i had read this blog before checking comments
I, Ormlis, sign under this open letter.
You are not Ormlis.
You're lying. Ormlis is my fake
Yes, there are so many things wrong with codeforces. Even though its the best cp website, but still its needs to stop being a mess. Just look at codechef, their UI is much better than codeforces.
Ahhh...and the blogs, what to say about them. If i dont comment "Oh thank you Mark for the beautiful codeforces and polygon platform" I would get downvoted as shit. Grow up kiddos.
Are you serious? The codeforces ui is way better than codechef ui
Codeforces has the best ui among all cp platforms, period.
Atcoder looking kinda cute tho~
downside of Atcoder is that you can't see friends standings and colors in problem name box for AC/WA verdict. Few more downsides are there. But can't deny the fact that problem statements there are pretty short, crisp and to the point without 1 page story. I won't argue on which is better, I feel like every platform is Orz in its own way.
As for me, short statements without interesting stories sounds more like a downside. A contest is much funnier to solve if there is a good legend in each problem, not just a strict mathematical description.
I agree but only if the legend is really good — not trying to be funny when it is not, not overly silly and not needlessly long. Sadly there are a lot of offenders to these points.
I didn't have the chance to join as an official participant but Hello 2019 is definitely my favorite contest legend-wise. The theme is about the most triumphant members in our community with some funny puns regarding to their handles.
The rating system of codeforces has a bias favoring speedsolvers. As an obvious example, a contestant who quickly solved problems A and B will have a better score than another contestant who quickly solved A and took a lot of time solving C. This is different from AtCoder.
Having long fancy stories in problem statements makes speedsolving of trivial Div2A problems noticeably longer on a relative scale. Also big walls of text discourage even taking a look at harder E, F, G problems during contest time.
You can see friends standings on AtCoder. Just 'friends' are known as 'favs' there. For example, you can go to https://atcoder.jp/contests/abc212/standings and click on the "Customize" icon in the top left corner. Then tick the "Show favs only" checkbox and you are done. Adding favs works in the same way as on Codeforces, you just go to someone's profile and click on the star icon there.
What do you mean? There is a page, which lists all your submissions for an ongoing contest with colored AC/WA boxes.
I only dislike one thing on AtCoder: no system tests and really cheap WA penalties, which encourage trying various 'intuitions' instead of working on a provably correct solution.
Support for various programming languages is much better on AtCoder. Codeforces only provides decent support for C++, while many users of the other programming languages are artificially handicapped.
I think he's referring to the fact that the Tasks page has no colors (green/red for AC/failed).
This is useful because whenever you click on a contest on CF you immediately know which problems you solved already. Meanwhile, in atcoder, you have to click Results -> My Submissions -> Status:AC -> Search. A bit annoying especially for contests like the educational DP contest where you might need several sessions to go through all the problems.
Ah, that site where I have to scroll HORIZONTALLY through the Contest leaderboard? What are you talking about?
Their leaderboard is utter garbage:
for div 1 there are 4 empty columns, because it also shows the div2&3 only problems. That forces a horizontal scrollbar: that's just terrible UI design.
the order of the problems is random. Why for the love of god?
Everything about CodeChef is garbage, End of the story!
While specific points you mentioned may be good and useful ideas, I can't help but disagree with the premise of the blogpost. And I'm not even the person to defend CF — if you look through my comment history, you will easily see my frustrations with the platform (though most of it was from years ago, when the servers were terrible and there were more unrated than rated rounds).
As far as I know, Codeforces has a fairly small team. Even so, they manage to keep up a platform that has helped develop competitive programming more than anything else (yes, I'd say even more than IOI and ICPC). They have also managed to create the best problemsetting environment competitive programming has. Is it perfect? Far from it. But the best thing about Codeforces and Polygon — they're FREE.
As a member of our national committee for IOI, I can see how unrewarding it can be to fight for competitive programming. Most of us (and I'm sure Mike and the whole Codeforces team) could easily get a high paying job at some nice company and forget about competitive programming and the contestants. Yet, we still volunteer because we like the community and want to see it progress (though I do hope Mike is getting paid for his work at Codeforces),
I think Codeforces can do better, but I don't want the admins to quit because it's impossible for them to keep up with demands. I want it to grow so they can hire more team members so they can make it better. I'm sure it's possible since programming is one of the biggest industries in the world.
Until then, good work MikeMirzayanov, as always, thank you for the Codeforces and Polygon platforms. I'm happy as long as I can participate in a contest with nice problems with no server issues, and exchange my ideas with other likeminded people after the fact. Isn't that the core of competitive programming?
I won't disagree with you, for the Codeforces team has done amazing impressive work. As much as I see opportunities for improvement, I do not want Mike to quit running Codeforces or something--I'd better settle for the status quo than that.
But.
I want to have a conversation. Not the way it is now, when the team implements some features, report on that, and then we say "hey, great". This method works, after a fashion. But it doesn't let us say what improvement we'd love to see instead, it doesn't let us set priorities and correct course. That's what I'm aiming at, and I would love to help build this future among other certainly knowledgeable people here on Codeforces.
A conversation is fine and necessary, but it requires cooperation from both sides, and not blogs where one side calls out the other side and the first side is supposed to defend itself. I'm sure Mike would've liked to hear your opinions on how to make Codeforces better, without the tone of the blog.
I can see that you would like to help, so maybe that's the common thread we should agree on, to see how we can help Codeforces grow, ourselves.
That is the reasonable way to express an opinion and ideas, you're right. But people, myself included, have tried that before. It was either no reply or "nice idea" or "I'll implement that real soon now" all the time. I'm simply testing the waters by trying a tiny bit more audacious way of communication after the less contentious one has failed.
I am open to communication. It's just that no one has called back for a year.
And yes. I am advocating for a peaceful way and place to express my views and recommendations—that's what the post is about.
That's the opposite of not listening to users though.
Not really.
It was no reply much more often than anything, which is only reasonable because Mike obviously can't check every single comment for ideas, and there's no way to request features in a centralized way.
And then when there was a reply like "nice idea", it was the only message in a long while, without any report on implementation status or answering to questions or whatever.
I, Kon567889, sign this open letter
avevad signs this letter
I, Komershan, agree with purplesyringa and sign this open letter
There are some errors in argumentation here and there, so I can not sign each word of this letter.
BUT
I completely agree with the point of the letter and I, pavook, sign the letter.
Does anyone remember when every other Codeforces contest was DDOSed, had server errors, had infinitely long queue, or something similar? I think the improvement to the reliability of the system is the biggest achievement in the last year and you didn't even mention it in this blog.
Well, I don't think so. The last div2 had a very long queue (20+ pages of submissions on status page) for about half an hour at the beginning and one more time afterwards. Also, one of the last rounds was spoiled with codeforces (and some mirrors too) being down. Personally, I didn't notice any stability improvements in the last 3 years or so.
Yes, this situation with long queue is very painful. At least for me, because i can solve tasks, but i prefer ioi-style, so i often make some small mistakes. And when you are waiting about 15 minutes in order to ger your result, it's very bad. Especially, if it isn't AC, because you lost 15 minutes instead of 1
One thing that you might need to wake up about: I don't see how "i prefer ioi-style" implies "i often make some small mistakes"
Yes, you are right. But "i prefer ioi-style" and "i often make some small mistakes" are tied. I think, that without first one i wouldn't make "some small mistakes". Also, without second one there woudn't be difference between ioi and icpc for me (at least, i think so)
So you think people don't make small mistakes in things other than OI? That's what you seem to say with "without the second one i wouldn't make some small mistakes". Perhaps what you mean is that you're so good that without OI to stop, you'd make no small mistakes?
Potentially losing 30+ minutes due to a "small" mistake is bad regardless of if you have the time/penalty to spend on it or not. It might be the difference between hanging out without a medal and climbing to bronze/silver by having more subtasks. You're also underestimating the difference of ICPC being team-based.
You might think of replying "oh but I use 1 minute to fix a small mistake". No, you use 1 minute to fix a div2A-B small mistake usually. Sometimes you might take more time. That's even worse when the problem isn't easy, so in "ioi-style" expect to have more complex solutions and having to look for way more than 2 lines to find your mistake.
You mean like about half a year ago? Something like that certainly happened in the winter, pretty sure.
They say the last round had rather long queues.
I could give you more examples and links to particular rounds, but I won't, because I did mention there were some improvements. But that's not what I'm interested in talking about.
What I do want to say is that this is a straw man.
You do not dash an argument like this. Your point in no way answers any questions raised by the post.
It's not a strawman because I'm just making one point, not trying to pick your entire argument apart. I'm just saying that you're being pretty selective in focusing on some niche features instead of all the system improvements that you don't see because they're gradual.
Yes, system issues are still present sometimes, no question about that. They're just much rarer, and we have our benevolent dictator Mike to thank for that.
I, k1sara, sign this open letter
I agree with the points made here.
I, IUseArchBTW, signs this letter.
it felt genuine ... did not got some points though but the idea to improve codeforces is good imo...
I, N_LogN , on behalf of the Time Complexity Family, sign this open letter.
Thank You !
Oh, so you are $$$N \cdot \log(N)$$$? Name every Time Complexity.
I, princebelkovetz, agree with the author.
i am gonna tell this anyway since i am goona get down votes any way , you are not pay a penny to use this platform got it? it is a free platform unlike some vip platforms that have tons of funding and lots of developers. you do not like it? quit, go to any other platform that you think suits you well. no one stopping you from doing that.
the real problem here is the money, why do not you get it? even i can handle problems if i had enough fund, buy some 500K$ servers and there will be no long q , nor slow submissions and plus you can run AI models on it to detect cheaters, you think by writing some words and blogs and talking just exactly like "United Nations Human Rights Council" ,which only talking all the time can change the real matter? simple answer no.
so good luck on your dreams.
Right. There are donations but your point could be valid otherwise. But, hey, there's nothing stopping Mike from adding ads. If he doesn't have to resort to anything like that, it means he doesn't need to get said funding, or he gets along with what he has.
Exactly right: there is no one stopping me from leaving for another platform because there are no other platforms. I have stated this at the beginning of the post, and I will repeat this now: I am confident that Codeforces is the most appropriate website for competitive programming contests and the accompanying services.
I can, theoretically, create a service better than Codeforces. But Codeforces has the most important detail: people. No one will leave for a platform they don't know. A known devil is better than an unknown angel, they say.
It... doesn't work like that. Horizontal and vertical scaling seldom work well enough, throwing more money at problems does not always fix them.
You're one of those who think that making an AI model is like saying "bang, bang, you're an AI model", huh?
Maybe yes, maybe no. One wouldn't know if I hadn't tried. This is a precedent. If it works out, we've just got better Codeforces. If it doesn't? Hey, maybe someone will create a new platform and base on this post to invite people to check it out.
All the best to you too. Wish you'll start trying to changing things someday.
I_love_geom signs this letter
It will be annoying to have a meaningful discussion in comments because of all the "I signed" comments. Isn't it enough to upvote the blog?
No.
Upvotes are badly detached from reality. When you see the number +245, it's just a number for you. You think of it as 'someone liked this idea' or 'might be a worthy post to read', not 'this many individuals read the post and agreed with the idea'.
Some people will upvote the post without reading it because I might look like a good guy. Others will downvote it because they disagree with the tone or because they didn't like the intro picture. And then there are a few people who did not just click a button but wholeheartedly supported the post, and spent their time writing a comment and not even just copying a template. That demonstrates there are real people behind the scenes, and it shows who exactly likes the idea. It doesn't allow you to just ignore the post.
And then there are downvotes. If someone thinks I am wrong, they can just downvote the post and go on, and I wouldn't be able to find out why they didn't agree. But if they have to write a comment, they will have to come up with an argument, and if they do come up with an argument, there's a chance I may prove them wrong and get a person on my side.
How would any of that be possible without supporting comments?
Also iirc a GM upvote counts for around +10 so it's quite a bit inflated.
I, Krauze, dont sign this comment
Errichto Did you even read the blog completely???
U don't need to read the whole thing if u know that it doesn't deserve your time.
So they posted changelog for polygon just in hour after this post
Nothing's perfect.
Yes, but together we can actually bring anything closer to the ideal
I've heard complaints about polygon and perhaps it needs change, but as far as the codeforces interface, it works perfectly fine right now for me and probably most people, so I don't feel much urgency for change. I think there is a small minority like you who truly care about most of the requests, to me most of them sound nice but I would also be fine if they never existed. The most important thing of all is just reducing queue during contest.
Honestly polygon is an amazing platform. You know it's good when setters on other platforms like Codechef are being asked to use it instead of their own system.
as someone with professional experience, I saw enough such "low-hanging fruits". Even if they're really low-hanging — for example, there's a lot of stuff I'd like to improve in my company's project, but who will close my pending tasks then?
Also, I refuse imagine what's going on in ~15 yo project, developed by students, very likely with no CI/CD pipelines, etc.
Sorry but this entire blog is very ignorant.
As someone with professional experience, I assume you should know about something called customer feedback as well as the ability to communicate with your customers. No, this blog doesn't ask the CF team to build every feature we request but rather to have an official place for us to make such requests and have some meaningful discussions.
Ironically, you're ignoring the main point and cherry-picking a specific sentence just to call the whole blog ignorant.
Why so many upvotes? It's the worst blog I've ever read.
I, Eason_AC, sign under this open letter.
All I need right now is to be able to see full test cases.
it will be great to see all the test cases but it is not always good for learning because you should try to know the bug first
Wonderful Idea!
I, peltorator, DO NOT sign this open letter
Most of your points are absolutely legit but I really felt like your post is passive-aggressive. I really dislike that you're saying "oh I like Codeforces, don't get me wrong" and in the next sentence giving it a hard time. I'd like this kind of discussions to be collaborative, not confrontational.
If this is your only concern, I am afraid the question is on more of a political ground now.
The tone felt passive-aggressive because it was such.
I would love to resolve this problem better. Except that it doesn't work.
I'm not the only person who has had similar ideas. There were many posts and comments on this topic before. It was either no reply or "nice idea" or "I'll implement that real soon now" all the time. The most peaceful methods have failed; I'm resorting to touch more hostile ones.
World politics is a delicate balance of carrots and sticks. Pacifism doesn't work for a reason: if you remove sticks, the laziest will stop paying attention to carrots as well.
When a person does not see the need to listen to others and you do want them to listen, you have to apply leverage. My leverage? I am against using violence for no reason, but there have to be sticks, and the least violent online equivalent is exactly that—passive aggression.
According to Wikipedia,
Changing the complete structure is much more like a job of a large team of developers.
Isn't building Codeforces more of a lifetime achievement. Also, if you see other competitive platforms, they are either similar or worst than Codeforces.
Even though many features added in the results of 2020 blog require less coding, but on a production code, even adding small features requires a lot of effort. And not to be mention, the list wasn't small.
But yeah, I accept, this is something Codeforces can work on.
If I am not wrong, I think using Codeforces API, one can easily get this, or maybe one can do web scraping.
I tried something like that once, tried to scrap blogs for analysis and archiving. It took me more than a week and I still didn't have all the blogs downloaded—the rate limits are way too low. Can you imagine how much time downloading submissions from a single round will take?
My bad, I didn't knew this about scraping.
Mike still hasn't commented :/
sus
There IS such platform for Polygon: https://github.com/Codeforces/polygon-issue-tracking/. You can submit the issues about Polygon here, though much time may pass before someone responds to your issue and fixes it. I didn't see such issue tracker for Codeforces.
AFAIK the Codeforces sandbox used some hacks around 32-bit Windows kernel and didn't work for 64-bit, so this feature might be not that simple as you think. I can't find the corresponding comment now and I may be wrong.
It's not that simple to obtain a database of Codeforces solutions currenly. It's impossible to do via Codeforces API, so you might take something like BeautifulSoup and parse the submissions from good old HTML. And even if you do that, you won't go very far. Rate limiting will allow you to download only about a hundred submissions in five minutes, so imagine how much time it will take to download all the submissions even from a single contest.
As for cheater detection, there was a contest about that, and the winner's solution is AFAIK used now to detect plagiarism. As far as I understand, it doesn't use either ML or some advanced parser which helps to understand the semantics of the code deeply, so there is a space for improvement. [By the way, it would be nice to have a way to obtain many Codeforces submissions from a single task for research purposes :)]
I stand corrected. First and foremost, provide a platform for people who want to request features and submit bugs, and which is checked from time to time.
Meh. I can't help but imagine it's so hacky it can break accidentally. I hope I am wrong.
Right. If that was possible, I'd do that myself already. That's why I'm asking if maintainers are willing to provide the database.
Damn, I haven't seen it. Thanks for the link, I'll take a look.
I just really want native dark mode and a way to minimize comment threads (like on old reddit.) Being able to contribute pull requests would be really nice, even if just for the front end site if there's security implications for being able to see how contest code is sandbox executed.
i have a dark mode extension that works really well on cf compared to other sites, but a native one would certainly be great
this is probably not gonna do anything but i, kaislash., sign this letter
I disagree that you have to use such passive agreesive tone. That I think wastes a lot of entropy and brings in emotions which are not necessary. Modern politics does not have to rely on emotions.
I, talant, sign this open letter.
I, Siberian sign this open letter.
I, Andreasyan read tags.
Author it not on the right platform, why has he chosen competitive programming if he's better in writing fiction)
I do agree with the main point that settling for whatever we have is no the way and that the changelog while huge is not impressive at all
Yet, I suppose the resource of the dev team is far more scarce than we would like it to be
I, -is-this-fft-, do NOT sign this open letter.
Frankly I do not see a reason to demand so much or to be fed up. The way this letter is written sounds like something is very wrong. But is there? What is the actual problem here? Updates are not frequent enough? Not a big deal IMO. I think there are currently no major problems with the platform (which can't be said about some others like TopCoder) and generally speaking, Codeforces meets user demands. Any further development is simply things that are nice to have. Yes, I'd very much like to disable blog deletion, but it's not that important.
I'd also like to remind people that Codeforces is not a monopoly; other platforms do exist and the competition is reasonably healthy.
You , -is-this-fft- won't sign because you didn't read the blog completly and also you an't the CEO of GOOGLE , FB , AMAZON!!
lmao
Wherever this goes from here, I'd sincerely like to thank Mike for providing this amazing platform. Not everything is perfect. I'm not opposed to betterment but give a man credit for what he has done throughout till date
I don't think this is a good conclusion. I have contributed in several projects but this doesn't mean that I have checked the code base of each project and assure that there are no security problems.
Perhaps. But even that is better than completely closed-source software, right?
Why do you care about the safety of the sandbox? Isn't that mostly important just for stability?
You don't need a DDoS if you can just send a malicious submission and bring down a testing server... (or, possibly, all of Codeforces; possibly destroying a lot of data in the process) (of course, that could also be used to cheat by modifying testing results, but it's unlikely that somebody who gains access actually does that)
What LuchkinVyacheslav said, mostly.
If the sandbox can be bypassed, and thus arbitrary code can be executed under the runner user (no idea how it is implemented in reality, but this is a plausible assumption), then an attacker can:
I, ace_loves_xq, sign this open letter
It may be a little more complicated than that.
Install the 64-bit MinGW locally for testing and discover there are five incompatible implementations. Also discover that "MinGW" is stuck in 2008 and you need some other build instead which works in a completely different way. Study that. Study differences between the implementations. Spend time benchmarking
printf
/scanf
/cin
and checking howlong double
I/O is supported. Make a call and choose the compiler. Install the compiler in a testing machine just to find out it now clashes with some older compilers or does not work without a specific Visual Studio installed because reasons. Work arond. Discover that the compiler now works, but some executables do not run or crash because of DLL hell. Work around. Automate the installation and uninstallation so you can install it to multiple machines. Try rolling out. Some machines do not have enough disk space so you end up with partially broken installation which you cannot uninstall. Spend time re-imagining these machines and fixing your installation scripts so they handle out-of-disk-space errors. Try again. Now it hopefully works.Sure, it may be as easy as several hours. But it may be not.
No it does not. There are 15 contributors, 9 of them only have a single commit under 10 lines of code: some sandbox-related stuff, compiler compatibility fix, CI config, leak fix, documentation fix, Makefile fix, options parsing fix, default value update, a new
--no-default-dirs
option. Only two of these actually change some code non-locally.Another 4 contributors have 2-3 commits each: documentation fixes (one, two, three, four), Makefile&build&CI fixes (one, two, three), leak fix, new
--fsize
flag, some sandbox-related stuff. Only the last two are about code changes, and the--fsize
flag addition looks trivial and does not require deep understanding of the sandbox or Linux security models.Now we are only left with two contributors who have 19 and 125 commits each. Two-three others have touched some sandbox-related code, but very locally and only once. Not a terribly impressive audit record.
Are you sure there are no places in the code which may suddently break because a value can now be
NULL
? Are you sure there are tests which cover all mashup manipulation scenarios which can catch such places? Do all of your functions always work as expected if I pass themnullptr
?Who is going to read all these forms, appeals, and communicate with contestants? While I understand the frustration, including users into moderation is not a technical problem. It's a huge managemental project. Facebook did not solve it, Twitter did not solve it, Quora did not solve it, no website ever did. It's a constant stream of complaints, angry reports and, if you're big or important enough, legal traps. The "where are user reports" question is immediately followed by "why are my reports are not acted upon in months?".
I do neither. I use Windows and I despise switching to new APIs all the time.
It may be very hard. Do you always have all your internal assumptions and invariants nice, tidy and ready to turn into checks? What is a valid file name? What about
con
? How to avoid accidentally committed binaries? Which SVN properties to allow? What if they (likesvn:ignore
) can break some Polygon internals which were usingsvn add .
orsvn status
? At the same time,svn:ignore
is very useful for local development.Again, not a technical problem, it's a big community management/dynamics decision with unknown repercusions. It's hard to make a qualified decision here.
Once again, not a technical problem. A platform requires moderation and constant upkeep. A widely known platform will be used for bug reports, spam, promotion, holy wars, cheating reports, accusations, or all of the above. Any decision announced in advance will be studied under a microscope and torn up by the crowd, and then again once it's actually implemented. So why bother communicating if you're getting roasted anyway?
Of course, there are transparent projects, but making decisions/discussions public is a huge undertaking and requires lots of resources to communicate clearly.