Vlad-Shcherbina / icfpc2018-tbd

1 stars 0 forks source link

We need a channel for #WorkInProgress or something #28

Open fj128 opened 6 years ago

fj128 commented 6 years ago

I want a Slack channel (or whatever we are going to use the next time) where I can see a post saying "I've implemented data_files.py that has a lightning_problem(n) function that gives you the data, you all should use it". And other similar posts.

Even with our disastrous failures to implement the necessary stuff, there was more failure on top of that, I remember @manpages being uncharacteristically rude about someone's code storing problems in several different ways while being unaware himself that we actually had had the right way to access problems for the past 12 hours or something.

It is impossible to restrict the main channel for any sort of on-topic discussion and offload off-topic discussions to specific channels (like "lightning", "solvers" or whatnot). The main channel is going to be chaotic, deal with it.

But I think that we could do with a channel dedicated specifically to announcements of new functionality in code that improves everyone's lives, as far as writing code specifically goes. Like, "Diff now has an operator for diff[axis] for axis in [0, 1, 2]". That kind of stuff.

Vlad-Shcherbina commented 6 years ago

I like this a lot.

I was unsure how much I should spam https://github.com/Vlad-Shcherbina/icfpc2018-tbd/issues/10#issuecomment-406808394 to get everybody who writes solvers to read it. It would be nice to have a place where I could post it once and be certain that everybody who needs it will see it.

It appears to me that it has better chance at working than earthdok's OKR document idea (#24). First, slack channel is more visible, you are reminded of its existence every time new announcement is made. Second, it's easier to remember to post functionality announcement because of the desire to get your stuff used by others. No need for "I'm off to bed" announcements.

It will be important to limit noise in this channel, it will only work if everybody can afford to read it.

fj128 commented 6 years ago

I think that we need a simple single-page wiki for tracking these things in addition to the channel. Github issues are wholly inadequate to the task IMO, they are too big and coarse and get everywhere don't provide a big picture. Actually not a wiki but README.md or another single file.

edit: so pretty much exactly @earthdok's OKR document idea (#24) lol

Something like

So basically a post in this channel more often than not corresponds to something getting an emoji checkmark (and possibly a new line, if you couldn't be bothered to add it before starting working on it) in that wiki page, with a link to the file where it was implemented and a description in a comment there.

Vlad-Shcherbina commented 6 years ago

To contrast with earthdok's OKRs, the emphasis here is on what's done, not on who is working on the stuff that's not done, is that correct?


My concern is the possible redundancy between this document and the source itself, assuming it's well structured and documented. Redundancy will result in this document being out of sync with reality. To avoid that, it should be limited to high-level overview that does not fit at the lower levels of the hierarchy.

How about this:

Advantages: no redundancy, and it encourages people to read the source (which is a useful habit because you can't document everything).

earthdok commented 6 years ago

My concern is the possible redundancy between this document and the source itself, assuming it's well structured and documented.

I'm somewhat confused by your comment. I think you're misunderstanding fj's idea as if e.g. "classes" should be the actual list of classes documented in the wiki page. Whereas the idea as I understand it is that is should literally say "classes". As in, "command classes have been implemented". You can't go any higher-level than that.

My concern was precisely that figuring out the status of a particular feature involved some combination of the following:

These are ordered roughly in the order of increasing annoyance. It should definitely be possible to get the big picture without having to read any code.

Vlad-Shcherbina commented 6 years ago

Ok, yes, if it does not repeat the layout of the source tree too much and does not list too many things that's fine.

Vlad-Shcherbina commented 6 years ago

Perhaps instead of scratch/production distinction we should think in three categories:

  1. Anything whatsoever. No constraints. That's what the scratch is meant for.
  2. Stuff easily runnable by anybody. This means no bash, no PowerShell, no Haskell, no operations on local files using relative paths, no exotic dependencies, etc. It could be readily run on any development machine, in the cluster, or packaged into the final submission if necessary. Examples include individual solvers, solver worker, the dashboard, submission script, test_all. Requirements: should work out of the box, optionally (where appropriate) should be covered by smoke tests so it's not broken by refactorings. Does not have to be extensively documented or tested.
  3. Stuff easily reusable by anybody. Examples include Pos, Diff, Command, the mysterious emulator state, the pathfinder, orchestrate2.py, data_files, pyjs_emulator, some of the solver_utils. Requirements: nice agreed upon interface, should be announced in the channel, should be mentioned in the overview doc, should have docstrings if not obvious, functionality should be reasonably tested.

Producton makes no distinction between 2 and 3, and probably no point trying to expess it in the source layout, but this could be useful categories in our heads.

fj128 commented 6 years ago

Yes, I meant that as literally what could be in that file at some point in this contest, word for word.

I think that coordinating work (who works on what) should be done in some transient channel, the purpose of the file should be more to give an overview of what's already done and what should be done in the near future.