I've been asked how I visualize nodespheres working, so here's my mental image. To avoid confusion, I'm using the following definitions:
- A nodesphere is a conceptual thing, a superset of writeups in the same way an ordinary node is a superset of writeups, one per noder.
- A spheredoc is a special node listing the writeups in the nodesphere.
- A spherelink is a two-way link between a writeup and a spheredoc.
A nodesphere link ("spherelink") would be displayed to the average noder as JayBonci describes above -- in the title of the writeup, something like this:
(idea) by mblase
part of Everything FAQ (Prev-Random-Next)
Saige below suggested adding the links to allow navigation within the nodesphere, which seems an excellent idea. Of course, noders should have the option of disabling this display in their Writeup Display Options, but I think it should be on by default.
Each writeup would belong to no more than one nodesphere (or exactly one, if we consider the "null nodesphere" as actually existing). This forces things to stay logically organized; if each writeup can only belong to one node, then it should only belong to one nodesphere as well. If we allow two, then eventually someone will whine and complain that their writeup should belong to three, and so on and so forth.
JayBonci suggested that nodesphere creation should be a level power, and this seems well and good. However, I think that any noder should be able to add their writeup to a nodesphere (if its creator permits it -- more on this later). Otherwise, any user below the desired level would have to pester editors to do it for them.
Right above or below the writeup box there should be a text field, allowing the noder to enter the name of an existing nodesphere. The E2 engine should short-circuit with an explicit notice that the specified nodesphere does not exist (with a link to create it) or that spherelinking to it isn't permitted, but still let the writeup be added/updated:
Sorry, you don't have permission to add to that nodesphere. Your writeup has been updated.
Return to Things that don't work even after you've given them a proper thumping (thing)
OR
Sorry, that nodesphere does not exist. Your writeup has been updated.
Of course, I could let you create a new "Things that cheez me off" nodesphere. You can correct the capitalization or spelling, if there is a need.
[ Things that cheez me off __________] [ Create nodesphere ]
Return to Things that don't work even after you've given them a proper thumping (thing)
Like the writeup itself, the spherelink should be editable at any time by the noder--unlike node titles, it should not be solely the editors' ability to change a spherelink. However, content editors should be able to change spherelinks at their discretion.
Now, to actually creating nodespheres: a special superdoc similar to "Create a Node" should be created, call it "Create a Nodesphere". Only noders of the desired level should have access to create nodesphere documents ("spheredocs"), of course, although anyone should be able to view them. The spheredoc should be permitted to contain writeup-like content of its own. This is for the noder to explain what the nodesphere is about, or provide some other introduction.
Other noders should not be permitted to add content to a spheredoc the way they can to an ordinary node. This would change the one-to-many relationship between spheredocs and linked writeups into a many-to-many relationship. I can see that this might invite complaints from other noders, but it's logistically necessary. If a noder doesn't like a spheredoc's content, they can simply not spherelink their writeups to it or create another spheredoc with better content.
The spheredoc would then display a separator and list its spherelinks, hardlinking to them directly (and possibly to the parent node as well). The spheredoc's owner should be able to specify whether spherelinks will be listed in alphabetical order or by date added to the nodesphere. There are probably dozens of ways the spherelinks could be ordered, but those two should be minimally sufficient. (I can't think of a simple and uncomplicated way for the owner to reorganize them manually.) Perhaps for owner-defined organization, each spherelink would have a short select box or textfield next to it displaying a number, and they could change the numbers to change the order.
The creator should be able to specify whether they want anyone to add writeups to their nodesphere, or just themselves. Since others may be able to add to it, the creator should be able to remove any writeup from the list with just a click of a link.
While it's tempting to allow spheredoc creators to add descriptive information to each spherelink, I believe this would be a cumbersome addition to the interface. It would also be hard to keep up-to-date in nodespheres to which anyone can link. Besides, the writeup title and the writeup itself should be used to provide that information.
Nodespheres should be able to share titles with existing nodes, the same way superdocs and users can share titles with e2nodes. A search would turn up both results. For instance, if I wanted to create a "Brian Eno" nodesphere pointing to writeups about his albums, this shouldn't interfere with the existing node about Brian Eno.
Finally, nodespheres should be able to be members of other nodespheres. This allows categories and sub-categories for improved organization and keeps lists of spherelinks from getting too long.
It would look something like this:
The Everything Insult FAQ
(nodesphere) by mblase (print)
Friday, Dec 14, 2001 at 09:39:31 UTC
Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah.
Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah. Blah blah blahde blahblah blah blahdeblah blah.
Contents:
List spherelinks by:
( ) alphabetical order
( ) date added to the nodesphere
(*) the order I specify
[x] Allow other users to add writeups to this nodesphere
Edit your writeup
---------------------------------------
| Blah blah blahde blahblah blah |
| blahdeblah blah. Blah blah blahde |
| blahblah blah blahdeblah blah. |
| Blah blah blahde blahblah blah |
| blahdeblah blah. Blah blah blahde |
| blahblah blah blahdeblah blah. |
| Blah blah blahde blahblah blah |
| blahdeblah blah. Blah blah blahde |
| blahblah blah blahdeblah blah. |
| Blah blah blahde blahblah blah |
| blahdeblah blah. Blah blah blahde |
---------------------------------------
Link this writeup to the following nodesphere:
[_____________________]
[sumbit]
Benefits of this approach:
-
By enforcing a one-to-many relationship, nodespheres and their linked writeups are forced to stick to a single topic. The cases where this is a problem (for instance, a writeup describing two different things that happen to have the same name) will be rare. At the same time, implementing an interface for authors to add their writeup to multiple nodespheres would be difficult.
-
Any noder (of sufficient level) can create a spheredoc and add content to it, but once it exists, any other noder can spherelink their writeup to it (if permitted). So we might turn the Everything FAQ into a spheredoc to which only editors can add writeups, or someone might create a nodesphere of sushi recipies that anyone can add to. This permits great flexibility when desired and great control when it's not.
-
Spherelinking my writeup is as easy as filling in a single text field (and making sure it's spelled right). The other options I've considered are a pulldown menu, which would be impractical since the number of spheredocs will be highly variable; and a text field in the spheredoc, which adds an unnecessary extra step by sending the writeup author to someone else's document.
-
Only the writeup author, or an editor, can link their writeup to a spheredoc. If I want to "invite" someone else's writeup to my nodesphere, I have to notify its author with a /msg or convince a content editor to do it for them. Writeup authors should have complete control over their own writeups, including what node and nodesphere it's a part of.
-
The spheredoc has content of its own, as well as a list of spherelinks. Whether the spheredoc itself should be votable or not I leave open to discussion. However, it should not display softlinks, and softlinks should not point to it. There's no real need, since the spherelink is bidirectional and serves the same purpose.
-
The spheredoc's node_id number would be just another field in the writeup database table. Or, perhaps a separate dbtable containing a many-to-many relationship of spheredocs to linked writeups would be the most efficient. Exactly how the spherelinked node_ids should be tied to the spheredoc is a technical matter I leave to those more familiar with E2's inner workings. However, I expect it should be implementable in the same way softlink lists are.
Possible uses for nodespheres:
- List the albums by a particular band, and make each album a nodesphere to the individual songs.
- A single "cookbook" nodesphere, containing nodespheres with recipes organized by course or national origin.
- The Everything FAQ and Everything University might be recreated as nodespheres to make them easier to edit.
- A noder heavily into daylogging might create a nodesphere for just their daylogs and dreamlogs, automatically ordered by date.
- Any popular metanode could be re-implemented as a spheredoc to which others can spherelink, so it would continue to grow and remain current even if the creator isn't actively updating it.