Arc Forumnew | comments | leaders | submitlogin
Ask AF: Language+forum design?
3 points by rocketnia 4250 days ago | 8 comments
Posting Arc code on Arc Forum is a good way to be sure that someone else can run the code, even when we're talking about speculative language design. I get the impression LtU has the same effect going on, but with Haskell as the assumed common language.

Before, we've wondered what kind of forum features would be good for Arc Forum. Things like having runnable, searchable examples so our code doesn't get lost to history.

But here's a spin on that: Suppose the forum software and its lingua franca language are being designed at the same time. What forum features do we want? How should that affect the language design? If you're reading this and you're already designing a language, do you already feel it's exactly the right language for this task?

I'm doing open-ended language design recently, without a single target language in mind. But I'd say I haven't considered any target language that would be up to this task!

Forums are not flat, the way the space of open source software projects tends to be flat. Some posts are responses to others, so they may benefit from tools to import or tweak the responses that came before, tools to demonstrate failing unit tests for previously posted code, and tools to demonstrate that new code passes previously posted unit tests.

There probably needs to be some amount of hackish metaprogramming support, for the purposes of meta-discussions about improvements to the forum language itself.

There's pressure to turn integrate this with a wiki IDE, but I personally consider that to be outside the scope of this idea. If we go too far down the path of generalization, we're not talking about forums anymore.



2 points by akkartik 4240 days ago | link

"Forums are not flat."

I've been thinking about this sentence for several days now. You're right, a forum shouldn't be flat. And a forum about code perhaps needs a dynamic, fluid topology.

An HN-style forum like this one can be traversed in a couple of ways. You could start with item?id=1 and continually increment[1]. You can also navigate the stories in reverse order from /newest and thence to clusters of comments belonging to them. Old-style forums like http://forums.linuxmint.com permit a third dimension/ordering for traversal: time of last post.

A dimension has the property that you can start at one well-defined end and travel in one direction and be sure you saw everything. This is a useful property, not because we expect users to do this very often (though some will) but because it hooks into our spatial metaphors for information in an intuitive way. We tend to have a sense of the neighborhood of a post[2], to place a mental bookmark on how far we've read. Above all, they help in browsing in search of a post.

Can we come up with new dimensions for a forum? Sometimes I find myself wishing we could see posts here ordered by the place in the arc codebase they are referring to, suggesting changes to, etc. Anarki we can actually make changes to, so perhaps there's a possible 2-D space of revisions + file + line number. I don't want to go too far off the deep end with the topological metaphors, but there's likely a useful 2D ordering for a forum.

Some dimensions can be more useful than others. File+line number isn't ideal because the ordering of functions is often arbitrary. Just space+time isn't ideal either because the same change may show up in many ways, and because changes close together in time may be utterly unrelated.

I'm not sure what the ideal dimensions are for our forum, but this idea bears experimentation. Imagine a forum where you can define new dimensions as 2 functions: one to convert a new post to a coordinate, and another to render a neighborhood[3] of coordinates. Now anybody could download the posts and sources, and experiment with different ways of browsing them. You could order the functions alphabetically or by types or other categories[4]. Or you could seek out an equivalent of the dewey system[5].

[1] rocketnia, you implicitly used this dimension in http://arclanguage.org/item?id=16675 :)

[2] Sometimes pseudo-neighborhoods can lead us astray; HN comments mentioning another story on the front page have a way of decaying in usefulness over time.

[3] http://en.wikipedia.org/wiki/Neighbourhood_%28topology%29

[4] Compare http://arcfn.com/doc/fnindex.html and http://arcfn.com/doc.

[5] http://en.wikipedia.org/wiki/List_of_Dewey_Decimal_classes

-----

2 points by rocketnia 4239 days ago | link

"You're right, a forum shouldn't be flat."

I thought I was making more of an observation than a suggestion. A forum has acyclic relationships that give it structure:

- "___ is a reply to ___" (establishes a forest of stars[1] or shallow trees, depending on whether people can reply to replies)

- "___ was authored after the typically expected period of editing for ___" (establishes a rather dense partial order)

Module systems are sometimes encumbered with the need to resolve cyclic dependencies. On a forum, with its already acyclic structure, it should be possible to avoid that complexity in the common case.

[1] http://en.wikipedia.org/wiki/Star_(graph_theory)

---

"A dimension has the property that you can start at one well-defined end and travel in one direction and be sure you saw everything. This is a useful property, not because we expect users to do this very often (though some will) but because it hooks into our spatial metaphors for information in an intuitive way."

While I see some value in that kind of pursuit, I'd like to even the field of discussion a bit. Humans may live in a low-dimensional world, but they move around, manage a changing environment, and maintain different levels of human-to-human association even within a single population[citation needed]. I think it's plausible that humans evolved to reason about both spaces and networks.

Maybe an interesting scientific-ish approach would be to look at what parts of the brain are involved in forum use. If there isn't enough activity on the right side of the brain, we could work on spatial metaphors. Once there isn't enough activity on the left side, we can go back to language-like metaphors. :-p

---

"Imagine a forum where you can define new dimensions as 2 functions: one to convert a new post to a coordinate, and another to render a neighborhood of coordinates."

I don't think it needs to be formalized that well yet. If the forum software is itself an open source project like Anarki, that should be stable enough for a small, dedicated community to experiment.

I bet once people can browse source code repositories with forum topic annotations on the side, it'll be a while before other features begin to appear necessary. If nothing else, the UI design and module system integration of these annotations would be finicky enough that the developers would have to chew on it for a while before they take on yet another revolutionary change. :-p

In a more secure and seamless model, well, I'd go with David Barbour's vision and say all state (e.g. the state of a project under development or the content of a discussion) would be hooked together using RDP, and individual state models would have continuous, idempotent interfaces that were designed for view composition and concurrent modification in the first place. The issue of designing forums for programming would naturally decompose into designing composition-friendly repository models, composition-friendly discussion models, the discussion of composition-friendly UI state models, and maybe some remaining issues with composing these models over RDP in practice.

-----

2 points by rocketnia 4239 days ago | link

I did a search for [spacial spatial], and they're both correct spellings. I only mention it because this link came up in the search: http://benking.de/Global-Change/spatial-spacial.html

I feel like that thought process is in an alternate universe to our programming-centric thinking, but it's exactly the same topic!

-----

2 points by rocketnia 4243 days ago | link

"I'm doing open-ended language design recently, without a single target language in mind. But I'd say I haven't considered any target language that would be up to this task!"

Actually, I'm a bit more hopeful than that now.

Hackability without breaking abstractions: One post can define a module, and another post can come along and define a different module in terms of the first one's implementation syntax. Maybe a module could do an import but then delete certain declarations by pattern-match and insert some new ones. Some declaration semantics could auto-erase earlier declarations, which is the same kind of feature that could be useful for REPL experimentation.

Fuzzy, living dependency resolution: Modules within a forum thread could refer to other modules in that thread by a simple tag system, which people could add and remove tags to after the fact. Underneath a unit test module, you could see a checklist of the implementations that satisfied it, and underneath any other module you could see a checklist of the unit tests it passed. Any post in the forum could refer to modules from other threads by using a slightly more cumbersome syntax, and this would be automatically cross-referenced at the original location.

Hmm, that's all I can think of for the moment.

-----

1 point by rocketnia 4241 days ago | link

"I get the impression LtU has the same effect going on, but with Haskell as the assumed common language."

I took a random selection of over ten LtU threads, and none of them had Haskell examples. Whoops. ^_^

A search for 10 Arc Forum "item" URIs turns up 7 which are part of a thread with sample Arc code and 3 which aren't. This isn't the same statistic, but it is telling. In this hypothetical forum+language design, the forum should be for discussing the language. Kinda insular. :-p

-----

1 point by akkartik 4241 days ago | link

Can you share the URIs you looked at?

-----

1 point by rocketnia 4241 days ago | link

I used http://www.random.org/.

For LtU, I did the selection a few days ago, and I didn't pay close attention.

For Arc Forum, I took exactly 10 random numbers from the range 1..16610:

http://arclanguage.org/item?id=12662

http://arclanguage.org/item?id=9559

http://arclanguage.org/item?id=12887

http://arclanguage.org/item?id=1797

http://arclanguage.org/item?id=14375

http://arclanguage.org/item?id=2434

http://arclanguage.org/item?id=7467

http://arclanguage.org/item?id=4338

http://arclanguage.org/item?id=10167

http://arclanguage.org/item?id=8296

-----

2 points by rocketnia 4243 days ago | link

A recent LtU thread features some forum design wishlists: http://lambda-the-ultimate.org/node/4578

-----