# Standard way to submit forum competition results



## otsyke (Sep 2, 2011)

Hi guys, I don't know if any project like this already exists (are weekly comps calculated manually by a human? forum search didn't help), if it does just insult me, but do it gently 

I was thinking about a way of standardizing the results submit of the forum competitions for a single user, so that any client (qqtimer, prisma, cct, ecc.) can "easily" be a client for all the competitions available.
We define a standard for submitting nickname, times, event, ecc. so that any compatible server can handle them. Anyone can host a new competition as long as its server accepts the pre-defined format. I'd personally like to keep it simple; passing post parameters or an xml or json should be fine.

Advantages are obvious, integration in the current offline or online timers, time saved for people who hosts the competition, no human mistakes possibile, and of course we keep posting results on the forum for comments! The only downside I see is for developers who will need to develop a new "module" for their application and/or a new server for any competition (but i think most of the source should be reusable for both servers and clients if well coded).

Not mandatory but useful could be a place where a list of available competitions is mantained (wiki?). A client may also fetch this list and present it to the user with a short description of events, format, ecc. The list should contain the url for submitting results and getting the scramble for client convenience.

I also tried to write down a draft of needed functionalities:

*WHAT A REQUEST SHOULD CONTAIN*

competition id
event (222,333,444,555,666,777,SQ1,3BLD,4BLD,5BLD,MBLD,ecc.)
round #
nickname
times/scrambles
country (optional)
email (optional)
cube used (optional, just for statistics)
client used (optional, just for statistics)
notes (optional)

*WHAT A CLIENT SHOULD DO*

let the user choose the competition
fetch scrambles from server for event/round
collect times ^^
verify format (ao5, ao12, mo3, ecc)
build request in the standard way
send to server
understand response

*WHAT A SERVER SHOULD DO*

gives list of valid/available events and rounds for each comp based on current date (for rounds)
give scrambles in a standard way to clients
accept submits in the standard format
check request format
return standard error codes (for date expired, invalid format, already submitted requests, generic severe error, ecc.)
manage users, charts, points, rounds, dates, formats (ao5, mo3, ecc.)


ANY feedback is appreciated, please share your ideas about this, anything that comes to your mind. 
Anything missing? Do you think there's too much work to do?

EDIT: maybe software area was more appropriate


----------



## MatsBergsten (Sep 2, 2011)

Hmmm, I thought I posted here a couple of hours ago???

Anyway, I can answer at least one question. The result of the "normal/old" weekly competitions
are handled by a program (mine) but almost always manually adjusted (by me) because the 
program is far from perfect. A legacy from Arnaud who handled the competitions for a couple
of years ago is that the input format should be almost free (he handled it manually before it
became to burdensome).

Your scope seems a little bigger but perhaps the aim is a little high technically. 
Not all persons would like to just post via a form, (I for one).


----------



## otsyke (Sep 2, 2011)

MatsBergsten said:


> Hmmm, I thought I posted here a couple of hours ago???
> 
> Anyway, I can answer at least one question. The result of the "normal/old" weekly competitions
> are handled by a program (mine) but almost always manually adjusted (by me) because the
> ...


 
Thanks for your feedback 
I also wouldn't like to post my results via a form or in a certain format 

In my idea the timer itself (qqtimer or prisma to name the ones i use) takes care of formatting the data in the way the server expects it.
A user will just select the competition, then the event and then start solving. When he finishes his solves he clicks a button to submit the data to the server, but all the processing is done automatically by the software.


----------



## Mike Hughey (Sep 2, 2011)

I'm not sure how you would see this working in conjunction with the competition. Is the idea that the server would post the processed data to the forum, or is the idea that the person would still have to separately post the results to the forum in order to add comments, etc.?

Also, how would entries be done for someone who is not using a timer with a client plugin (a person using a raw stackmat, for instance)? Would they have to use a form?

I also worry about making updates; it seems like making changes after the first "post" for a competition could get complicated. You would want updates to show up in the database and also in any post that the user has made, and it seems like that would be hard to do automatically. If it's not done automatically, I would think it would be a real downside that results are not in sync with posts.

This seems like a great idea overall, but there are some complexities to it that seem hard to overcome to me.


----------



## otsyke (Sep 2, 2011)

Mike Hughey said:


> I'm not sure how you would see this working in conjunction with the competition. Is the idea that the server would post the processed data to the forum, or is the idea that the person would still have to separately post the results to the forum in order to add comments, etc.?



In my idea the person posts separately to the forum for comments, after submitting an event. At the end of the competition the organizer posts the final results, calculated by the server.



Mike Hughey said:


> Also, how would entries be done for someone who is not using a timer with a client plugin (a person using a raw stackmat, for instance)? Would they have to use a form?



This could definitely be a problem, I thought almost anyone used a timer software instead of calculating averages by hand. In this case he should necessarily use a timer with the plugin, or if impossibile we can think of a server side interface for the organizer to manually add a few entries. Obviously if the most popular timers won't implement a plugin or if most people won't use them, this will not be useful at all.



Mike Hughey said:


> I also worry about making updates; it seems like making changes after the first "post" for a competition could get complicated. You would want updates to show up in the database and also in any post that the user has made, and it seems like that would be hard to do automatically. If it's not done automatically, I would think it would be a real downside that results are not in sync with posts.



In case of updates, i think (but it's my opinion) that it should not be possibile to update an event that has been already submitted. If I ended my 3x3 ao12 and submitted it, it should not be changed by the user because he already knows the scrambles. 
Updates to add an event, for example a 4x4 average after the 3x3, is done submitting subsequently the 4x4 avg (same nickname, same competition, same round, different event); this is the normal way, one should submit an event after another, not necessarily one event close to another in time. You can do 3x3 today, 4x4 tomorrow, and the rest another day. 
The post is a responsibility of the user, and should updated accordingly to submits but it should always be the user to do this. In this case only the submitted entries are valid, and the posts are in the forum just for comments.



Mike Hughey said:


> This seems like a great idea overall, but there are some complexities to it that seem hard to overcome to me.


 
You're probably right, also the weekly competition is an extreme example, it is probably more suited for "racing to sub-*" threads or other minor competitions.
I think I'll try anyway to implement something, then test it in some local competition with few users, an maybe if it all goes well I'll try it in some more complex scenarios.

Thank you.


----------



## Mike Hughey (Sep 2, 2011)

I rarely ever use any form of computer timer for big BLD. It's generally not practical; I usually use my stopwatch instead of a computer. So for the case of the weekly competition, I think I would often have some submissions that would need to be done through something else. I suppose I could go into a timer that allows hand-typed entries and submit them that way.

If you don't allow updating events after they've been submitted, I would think that would be a big problem for hand-typed entries. People will naturally make mistakes. Also, if anything goes wrong with the updating system, it would be a shame if there were no way to correct it. Since most timers do allow hand-typed entries, it's not like people can't cheat - we're relying on people to be honest anyway. So I'd prefer allowing updating submissions somehow. That wouldn't have to be easy to do, though - a form provided by the server to modify entries would probably be fine.

Oh, and if you're figuring people would post their results with comments separately from the submission, it would at least be nice to have some way to retrieve one's results from the server in a standardized format for posting. Did you have something like that in mind?


----------



## otsyke (Sep 2, 2011)

Mike Hughey said:


> I rarely ever use any form of computer timer for big BLD. It's generally not practical; I usually use my stopwatch instead of a computer. So for the case of the weekly competition, I think I would often have some submissions that would need to be done through something else. I suppose I could go into a timer that allows hand-typed entries and submit them that way.



That makes sense, I didn't think about big bld or about any other event that requires a lot of time. Hand typing the times is probably the best solution.



Mike Hughey said:


> If you don't allow updating events after they've been submitted, I would think that would be a big problem for hand-typed entries. People will naturally make mistakes. Also, if anything goes wrong with the updating system, it would be a shame if there were no way to correct it. Since most timers do allow hand-typed entries, it's not like people can't cheat - we're relying on people to be honest anyway. So I'd prefer allowing updating submissions somehow. That wouldn't have to be easy to do, though - a form provided by the server to modify entries would probably be fine.



You're right, we're relying on people's honesty anyway. Instead of refusing a second submission of the same event we could just overwrite the saved one with the new one. But since not all timers keeps an history of the solves, if anyone wants to edit the entry the day after, a web form is a solution that should be available anyway. In this case there's another issue, how to identify the user to allow him to modify only his entries. An accounting system is far from the "keep it simple" principle i hoped for, so it should be on people's honesty again.



Mike Hughey said:


> Oh, and if you're figuring people would post their results with comments separately from the submission, it would at least be nice to have some way to retrieve one's results from the server in a standardized format for posting. Did you have something like that in mind?



This is certainly easy to do.


----------

