vkbo / novelWriter

novelWriter is an open source plain text editor designed for writing novels. It supports a minimal markdown-like syntax for formatting text. It is written with Python 3 (3.9+) and Qt 5 (5.15) for cross-platform support.
https://novelwriter.io
GNU General Public License v3.0
2.01k stars 102 forks source link

New tag ideas #1708

Open xahodo opened 6 months ago

xahodo commented 6 months ago

I have a science fiction story in which considerable amounts of technology, which need explanation, is used. I also have several alien species which I need to describe.

It would be helpful if I would have had "technology" and "species" tags were available.

The technology tag could be used in other contexts as SF as well. It could, for example, be used to explain how a particular existing device works, such as a car (this could be interesting for a novel about a car mechanic, for example) or a digital lock (a novel about a burglar).

The species tag could also be used to store information about existing biology. A note on particular animals could be useful to an author.

Another tag I see a potential use for is the "magic" tag. Although this would only be useful in fantasy, it will make fantasy authors happy for obvious reasons. In fantasy it's also possible to use several species and different technology.

The "custom" tag has some issues. 1) it does not communicate what type of information is stored below it; 2) when you need multiple custom tags to store different pieces of information, things can get confusing.

Why is the "item" tag inadequate to store descriptions and uses of technology? Items are, in my mind, saved for specific instances of said technology (e.g. "spaceship 1" and "spaceship 2"), where the "technology" tag would describe how the spaceships would travel around.

vkbo commented 6 months ago

The Tags and References system is intended to help indicate story flow and balance between scenes. The idea is to help prevent story inconsistencies where a plot is advanced in the wrong order because you moved a scene, or the one gun in a mystery novel is suddenly held by two people at the same time, or in a story with alternating point of view, that the jumps make sense. The system was not designed to cross-reference every single detail of a story with notes. I would imagine a project getting incredibly cluttered if you do that?

The core tag categories are "characters", "plot" and "location". The "object" category is intended for cases where there is something you really need to track for the story to make sense, as the mentioned smoking gun. "Entities" are meant to track say companies and government orgs in a similar way you track characters. Timeline is intended to flag scenes in case you alternate between timelines within a plot, which is just a modification of tracking plot. So these are just modifications on the core categories for cases where it is important to separate them. I'm still uncertain whether it was smart to add the latter two categories at all.

The categories you propose here are distinctly different. They are for tracking genre story elements. Based on the description this is more about keeping your notes organised. I am not sure why these need to be tracked in scenes at all. It is at least not what the tags and references system was intended for.

The technology tag could be used in other contexts as SF as well. It could, for example, be used to explain how a particular existing device works, such as a car (this could be interesting for a novel about a car mechanic, for example) or a digital lock (a novel about a burglar).

The species tag could also be used to store information about existing biology. A note on particular animals could be useful to an author.

I can see the value in being able to find scenes where a certain story element is used so you can go through and check for consistency. I write SF as well, and I use the Custom category for tracking technology for that purpose for one or two items that must be consistent for the story to make sense, and which functionality is gradually revealed throughout the story. However, I don't track all technology. Especially the stuff that is just world building background technology.

Can you explain why you need to track all of this?

The "custom" tag has some issues. 1) it does not communicate what type of information is stored below it; 2) when you need multiple custom tags to store different pieces of information, things can get confusing.

Since the tags are free form, you can just use prefixes, as I've mentioned before. You can also create multiple folders for the notes to separate them. I don't understand why this is a problem. Do you really need to track so much information in a scene that this becomes unmanageable? Not all notes need a tag and must be referenced.

Based on several of your feature requests involving tagging, I get the impression you are constructing a very complicated web of tags and references. That would explain why you find it so difficult to get an overview with the current tools. I do plan to expand on the visualisation tools, but I think this is far too complex a use case for it.

Why is the "item" tag inadequate to store descriptions and uses of technology? Items are, in my mind, saved for specific instances of said technology (e.g. "spaceship 1" and "spaceship 2"), where the "technology" tag would describe how the spaceships would travel around.

There is no "item" tag, maybe you mean "object"? In any case, in my one story with spaceships they are tracked as locations, because that is what's important. They are places where stuff happens. The technology is described in the notes still.

vkbo commented 6 months ago

All that said, I'm happy to take suggestions for new categories, but they need to be a lot more fundamental than just variations of world building components.

One old suggestion that I want to implement in one way or another is a way to track time. Not the "timeline" that exists, which I do think was a mistake to add, but to track actual progress in time in the story. Like "Day 1", "Day 2", or dates, even fictional dates.

It is very unfortunate that the @time tag is tied up with "timeline", but I don't really know how to decommission it in a user-friendly way. Its intended functionality can easily be handled with regular plot tags. Maybe the best course of action is to re-purpose it as time tracking. I know most users think that's what it's for.

julichan commented 4 months ago

I have another idea conscerning new tags. Why not create a dynamic tag system ? We have static nodes today like timeline, object, characters, ect... We could create our own type of node and define the keyword tag that goes with it as well as propose a set of icons. This way people can create their own type of nodes with their own tag when the custom node/tag is not enough.

julichan commented 4 months ago

It is very unfortunate that the @time tag is tied up with "timeline", but I don't really know how to decommission it in a user-friendly way. Its intended functionality can easily be handled with regular plot tags. Maybe the best course of action is to re-purpose it as time tracking. I know most users think that's what it's for.

For a decomission, there is a simple way, just introduce a new tag name, have the old tag name replaced when you find that the new version of novelwritter is opening a project that was saved by version T or lower. you only lose the tag compatibility if someone use a lower version of the app than required but you already set a warning for that case.

vkbo commented 4 months ago

I have another idea conscerning new tags. Why not create a dynamic tag system ?

This has been discussed already. See #1556 for additional discussion on this topic. I don't want to open up the @keyword syntax because it blocks us from extending the reserved keywords list. It also significantly complicates a number of features and core functionality. Instead, we've been discussing additional ways to add custom meta data, using comment-like syntax. See #1784.

For a decomission, there is a simple way, just introduce a new tag name, have the old tag name replaced when you find that the new version of novelwritter is opening a project that was saved by version T or lower. you only lose the tag compatibility if someone use a lower version of the app than required but you already set a warning for that case.

novelWriter will never automatically edit your files. Only meta data is ever automatically converted when the project file format changes.

xahodo commented 1 month ago

How about this: By default NW doesn't know any tags (such as char, object, etc.). Instead, there's a window where they're defined, populated with sane defaults (the ones we currently have). The window could take 5 arguments per item: the tag name(s) (such as @char), the relevant root folder (Characters, for example), the associated icon (for the project tree), format for the tag (time/date, text, number, possibly others), and an optional short description of the tag.

This would insure backwards compatibility, while allowing people to create new tags or their own system altogether on a per project basis.

I feel this is sufficiently different to #1556 in a sense that this accommodates the current system and remains similar to it, while allowing for tremendous flexibility. This would also free you from having to think whether a new tag is actually needed; everybody can, in this situation, decide for themselves what tags they want or don't want.