Multiple bible version wikis

I’m following up on the King James Bible wiki work I discussed some months back. I always planned on expanding this idea to cover other versions of the bible beyond King James. This is part of that effort.

I now have a handful of versions available:

A list of all generated files can be found in https://crosseye.github.io/TW5-Bibles/

These versions are generated out of a simple format found in Bible Super Search’s JSON bibles. In most cases, we need to do some custom manipulation of the input data, but the code for that has so far been very simple.

You can see this in https://github.com/CrossEye/TW5-Bibles. I won’t repeat much of the information from there, but this bit shows how I use my new tool:

To rebuild all the current wikis, run

node index all

Or you can regenerate a single version with, for instance,

node index AmericanStandard

This latter will log something like this to the console:

--------------------
Wrote "/path/to/TW5-Bibles/docs/AmericanStandard/raw.json"
Wrote "/path/to/TW5-Bibles/docs/AmericanStandard/enhanced.json"
Wrote "/path/to/TW5-Bibles/docs/AmericanStandard/tiddlers.json"
Wrote "/path/to/TW5-Bibles/docs/AmericanStandard/index.html"

Completed writing "AmericanStandard"

My immediate plan is to add a few more features to enable the creation of non-English versions. I will also probably try to create a few different templates for layout.

In previous discussions, I tried to make it clear that the goal was most definitely not to make feature-rich Bible wikis, only to build an extremely simple base to which others could layer on what they want. But I would love to hear what others think would make this more useful. Are there features clearly missing? Are there translations you would like to see handled? What else?

4 Likes

I’ve added my first non-English version: La Biblia Reina Valera Gómez. Since I don’t speak Spanish, the interface elements used an online translation tool. I would appreciate it if someone who does speak Spanish could confirm these values or suggest alternatives:

{
  "Chapter": "Capítulo",
  "Book": "Libro",
  "Books": "Libros",
  "Verse": "Versículo",
  "Contents": "Contenido",
  "TableOfContents": "TablaDeContenido"
}

(“Book”, “Chapter” and “Verse” are Tags, “TableOfContents” is a Tag used for a sidebar TOC, and its caption is “Contents”. “Book” also shows up in that TOC, but uses its caption, “Books”, for display.)

I also would like to know if there are better public domain Spanish translations. I picked this one mostly at random.

@DaveGifford: I would especially love to hear from you, if you happen to have time. Would you see this project as something that might eventually be useful? My idea is that these wikis would serve as the basis for tools people might want to build. So I want them to be fairly bare-bones. But I certainly want to know if there are essential features missing.

Hi Scott

Those are the correct values. Spanish doesn’t use Tabla de contenido as a title, just ‘contenido’, but from your description TabladeContenido is a background tag, so it won’t be showing.

The most commonly used public domain is Reina Valera 1960. I am not sure the story of the Gómez version.

This amounts to a lot of admirable work, and in a second language, so kudos to you. It looks like your next steps are chapters then verses. As someone who has also done long, tedious projects in TiddlyWiki, I can appreciate the work involved.

I tend to focus on creating content about the Bible rather than the Bible text itself, since there are plenty of apps and websites with the Bible text in Spanish, and even moreso in English. And the versions you are using are not in up to date language. So I wonder what your vision is, in terms of justifying the time involved. Having it in TiddlyWiki makes it easy to take notes and comments right in the context of the verse, so there’s that. Are there other advantages you can see?

I am more interested in seeing what other TiddlyWiki users could do with making inventive UIs for displaying notes alongside the Bible in different ways. Side-by-side isn’t great foir cell phones, and notes under the text separates verses from each other. Stretchtext to open up a notes area while reading the text would probably be unnecessarily messy. I always pictured in my mind a tiddler with the Bible text visible, and on hover over a word, or a verse, a window to click to add notes, which would appear in a slider under the verse. And in the slider contents, a way to make tabs for the kind of notes, in my case, separating by grammatical, word study, historical background, textual issues, literary features, themes and theology, etc. Others would want to organize them by words or phrases found in the verse. [edit: I didn’t finish my thought here: my point was going to be that while I can imagine something like this in my head, I think the results would be disappointing to me and too complex for others to use. Thus my interest in seeing what others come up with]

There are so many limiting factors and tradeoffs to get it right…the financial cost of using a good modern translation, the time and energy available, the personal cost of other things that one could be doing in a finite lifetime, TiddlyWiki’s learning curve and limited market penetration that acts as a barrier to getting people to use it, the eventual slowness caused by file size, etc. I wish you well as you navigate that maze.

That is about all I can tell you for now. Blessings to you , Scott.

1 Like

The form factor is really nice and clean. I’ve avoided going verse-by-verse because of the overhead, but yours seems to function fine even on a cellphone.

Edit/add: If you add the official comments plugin, then you automatically have a way to annotate verses.

But, you can’t hover on a cellphone, can you? That seems to be your main interest, right?

According to the wikipedia article, Gomez is the 1960 version. But 1960 … as modified by someone who was referencing the KJV.

Great.

I would still like to get it right; this tag is still part of the visible interface. I’ll fix that soon.

That leads to a question I had intended to ask in the previous email. I’ve made all the tags dynamic per language, as well as text such as “Chapter 7”, and of course the book names. Should I do the same with field names? Obviously I have to leave the names title, tags, and text alone, unless there’s more to TW’s internationalization then I understand. But I have tiddlers that look like this:

title: 1 Juan
tags: Libro
book-seq: 62
seq: 31762
title: 1 Juan 4
tags: Capítulo [[1 Juan]]
book: 1 Juan
chapter: 4
seq: 31829
title: 1 Juan 4:7
tags: Versículo [[1 Juan 4]]
book: 1 Juan
chapter: 1 Juan 4
para: 3
seq: 31836
verse: 7

Amados, amémonos unos a otros; porque el amor es de Dios. Todo el que ama, es nacido de Dios, 
y conoce a Dios.

So I have field names such as book, chapter, verse, para, seq, and book-seq (that last may be detritus; I’ll check.) End users would presumably not care much about these fields, but people building atop one of these versions would be dealing with them. My initial feeling is that anyone dealing with that needs to know English well enough to work with the TW filter operators, macro/proc names, etc., so it might not be worth changing. The effort would not be huge; that shouldn’t be a factor. I just don’t know if it would buy us anything. What do you think?

I was just collecting from one site which has a fairly consistent format. These were the options for Spanish there:

  • Reina Valera 1858 NT
  • Reina Valera 1909
  • Reina Valera Gómez
  • Reina-Valera 1909 w/Strong’s
  • Sagradas Escrituras

But I’m guessing that there are other sites with many more options. They also don’t need to be public domain; any permissive license would be enough. But I’ve done no investigations into that.

It’s almost entirely speculative. At one point people were discussing some Bible-related wiki, and I got to speculating about whether a full Bible, with a tiddler for each verse, chapter, and book, would be small enough to load quickly and fast enough to use when simply clicking around. With some help in a few earlier threads, I was able to conclude that it’s quite possible. But I didn’t want to try to create the sorts of tools that were easy to imagine; I’m not a user of them and would almost certainly get them wrong. So what I wanted was to create a version as bare-bones as possible. I started with King James, because I’m guessing it’s the most widely known English version, and it was freely available. But the goal was always to add more, and to make it straightforward for others to add their own.

I have two big wikis I want to build/complete. One is personal, for my wife’s business. The other is the Periodic Table that I’ve shared here. Both had upcoming work that was clearly beyond my capabilities, so I’ve spent much time working on smaller project that might help hone my skills. To me, this is just another one of those. I am hoping to find some modern translations in various language, and, after working out the kinks in those, I will likely leave this alone. (Although I am tempted to create a plugin that works with these to allow user annotation without messing directly with the text. We’ll see.) But in the end I would think of these as variants of one edition, not particularly meant to used directly, but for people to build upon.

Mine too. I hope this gives people a leg up in creating such interfaces!

Yes, but for me a lot of this is just to prove feasibility.

I know nothing about that. Hmm…

Well, there’s always that. But so long as I’m having fun doing this, it’s not too much of a worry.

Here I’m in the enviable position of not particularly caring if people do use it. I hope it’s helpful, but I’m happy enough if I can get it in reasonable shape.

Well, right now, I seem to be generating wikis around 11MB; I think there’s a fair bit of wiggle room before I start running into issues.

Thank you very much for the help. This is great stuff!

… and as generic as I can make it!

I hope there’s not too much concern about tiddler-to-tiddler navigation. In my tests, it’s all fine, but I don’t have any really old environments or hardware to test with.

One of the things I left for someone else who wants it to build atop this is sequential navigation. I would expect readers to read at a Book or Chapter level, but they certainly could open a verse at a time. But at whatever level, there should likely be next/prev navigation. So 1 John 4:7 should point to 1 John 4:8, 1 John 4 should point to 1 John 5, and 1 John should point to 2 John. And backwards as well. But that, as they say, is left as an exercise for the reader.

Oh, that’s nice. I’ll have to play with it.

No, but in many situations, a long press will do the same.

It looks like you could just navigate by “seq” ?

The author of the WEB was suggesting something like $10k – without mentioning exactly what version (but I bet it was NIV) nor how many copies. The big “Z” is straight up a business-first company. But the ABS is a non-profit, and I notice that the GNB is available as a free app. So they might offer more lee-way.

It would work… sort of. The trouble is that it’s meant just for universal ordering across everything. For navigation, it would say that the next thing after chapter Genesis 2 is verse Genesis 2:1. It’s not difficult, to be sure, but adding it to the core went across the philosophy of YAGNI I’ve been trying to follow.

I’m curious where you found this out. I wouldn’t really know where to look. Nor do I know what ‘the big “Z”’ is.

WEB FAQ

Some won’t grant such permission unless they get a significant royalty (one publisher quoted me $10,000 + $10/copy distributed)

Talking about this. They hold the rights to the NIV in the States. I didn’t realise that there other entities hold the rights in the UK and EFTA.

Now that I’ve had a chance to try a few things, there are a few performance issues with having it broken out by verses. Probably only noticeable to someone who is not using it merely to browse chapters.

If I understand your structure, then the next verse in sequence will always be within 3 sequence numbers (hmm, or is there a 4th break between OT/NT ?).

So this code as a template can provide a link to the next verse. It could be rendered as a “next” but the point is the same.

I guess if someone was serious about verse-by-verse navigation, then it would warrant additional fields. (e.g. nextseq, priorseq).

\function get.TiddlerBySeq(seq:"1")
[all[tiddlers]]:filter[get[seq]compare:integer:eq<seq>]
\end

<$list filter="[<currentTiddler>tag[Verse]]">
<%if [<currentTiddler>get[seq]add[1]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] %>

{{{ [<currentTiddler>get[seq]add[1]]:map[get.TiddlerBySeq<currentTiddler>] }}}

<%elseif [<currentTiddler>get[seq]add[2]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] %>

{{{ [<currentTiddler>get[seq]add[2]]:map[get.TiddlerBySeq<currentTiddler>] }}}

<%elseif [<currentTiddler>get[seq]add[3]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] %>

{{{ [<currentTiddler>get[seq]add[3]]:map[get.TiddlerBySeq<currentTiddler>] }}}

<%endif%>
</$list>

Can you explain what you’re seeing as a perf issue? I used your code as a ViewTemplate for Verse tiddlers, and it seems to take a little long to save that template, but then everything seems to load quickly enough. I think if I did this sort of navigation, I might add some action to close the current tiddler when I load the new one.

That’s correct, and there is no break right now for OT/NT (perhaps one day, Apocrypha too!) But I’m not sure I would want to to depend on that. The seq-number is meant for sorting, but I would hate to be stuck with the exact current implementation in order to support navigation.

That’s great!

Is there a reason you didn’t do this, which seems simpler to me?:

\function get.TiddlerBySeq(seq:"1") [all[tiddlers]seq<seq>]

I tried a variant of it, and I can’t figure out why it’s not working:

<% if [<currentTiddler>tag[Verse]] %>
<$let
  a={{{ [<currentTiddler>get[seq]add[1]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] }}}
  b={{{ [<currentTiddler>get[seq]add[2]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] }}}
  c={{{ [<currentTiddler>get[seq]add[3]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] }}}
  next={{{ [<a>] [<b>] [<c>] +[first[]] }}}
>
  {{{ [<next>] }}}
</$let>
<% endif %>

But I think if I were to do this myself, I would try to use the combination of adding one to the verse, adding one to the chapter, and adding one to the book-seq field of the book. This feels more in keeping with the data.

Thank you for wonderful feedback!

Here are my thoughts on possible improvements - maybe not for yourself Scott but for others who wish to take this further:

  • (Already mentioned) previous/next buttons - which I would consider important enough to be part of your main showcase. I agree with the logic you proposed that the outcome of selecting previous/next, should depend on what you are looking at (e.g. a book, a chapter or a verse). Maybe there should just be three different buttons, which would be simpler in logic: previous/next book, previous/next chapter, previous/next verse. They should just be filtered to make the reader experience better.
  • A way to mix the different sources. The data structure looks to be identical for all four versions, but they would benefit from being able to mix in the same wiki, so the same verse can be read in multiple variants for example. This is not currently possible as the titles overlap.
  • More for future extension - a way to toggle the display of the verse number inline - maybe even on a new line. This is fairly straightforward as you have it noted as a field, and it could be rendered using only a small amount of wikitext.

Thank you. It’s great to see others’ perspectives! And these are wonderful suggestions.

You may be right. But there is at least one good argument against including them: I don’t know how people might use this. It’s easy not to notice that these are primarily data wikis. There are a collection of verses, combined into chapters, further combined into books. The primary data is text, and clearly it can be read sequentially, but it’s easy to imagine other uses that don’t do so. For instance, a quiz tool with questions such as “Which Gospel quotes Jesus as saying, ‘I am the resurrection, and the life’?”, which on a correct answer opens the chapter or the verse, or perhaps a few verses surrounding the reference. That might have no need for verse-to-verse, or chapter-to-chapter navigation. Or someone who wants to build a wiki to track their favorite biblical quotations might have no need for the navigation.

My second concern is that there are so many different ways we might want to present navigation. Ezekial 2:10 is the last verse in its chapter. I could easily see any of these:

Ezekial 2:10

And he spread it before me; and it was written within and without: and there was written therein lamentations, and mourning, and woe.


< Ezekial 2:9                     ^ Ezekial                        Ezekial 3:1 >

or

Ezekial 2:10

And he spread it before me; and it was written within and without: and there was written therein lamentations, and mourning, and woe.


< Ezekial 2:9                                                       Ezekial 3 >
                                 (note link to chapter, not verse) -------^ 

or

Ezekial 2:10

And he spread it before me; and it was written within and without: and there was written therein lamentations, and mourning, and woe.


{prev verse) (prev chapter) (prev book)  | (next book) (next chapter) (next verse)
Ezekial 2:9     Ezekial 1   Lamentations |    Daniel      Ezekial 3       --- 

… and many others. So it’s challenging to incorporate just one.

Oh, that’s a fascinating concept I never considered. I can definitely see the appeal. I have a large four-version Bible with each version having its own half-page column on a pair of facing pages. When I was a Bible-reader, that was quite useful.

You’re right that the titles would have to change. I might want that anyway for another reason: nicer permalinks. I would rather link to #Ezekiel-2_10 than the current #Ezekiel%202%3A10, and it would be easy to extend that to, say, #kjv-Ezekiel-2_10. I’m still contemplating this, because it would require adding a caption and an override to the ViewTitleTemplate cascade. While I do that in almost every wiki I create, I want this one to be as simple as possible. So I haven’t made the call yet.

If I do that with the titles, the only other concern is size. Each version of the bible adds approximately 8 MB of content to our baseline wiki. I’m curious to try that, to see how well it operates with two or three different versions. But I would worry a bit about performance.

I have thought about a toggle, although I’ve thought more about just supplying multiple versions with different ways of showing such things. And I have another idea I’ll discuss below. I don’t know if you saw the previous discussion, but I went through several iterations on this. The wikis you see here are based on version 7, in which verses highlight on hover, with title text of the verse name and links to the verse tiddler. But version 5 had the verse numbers superscripted inline as links to the verse tiddlers. I have some fondness for each style. But the style I would really love to have is one I don’t know how to create. I have a mockup online. It looks like this:

Screen Recording 2024-07-28 183307

I know how to make the hovering behavior work. But I have no idea how to approximately align the verse numbers with the beginning of the verse. So that’s never gone further than this hard-coded demo.

The other idea I mentioned is that the various features we might want could simply be plugins. So to put together the basis for the version I want to create, I might grab the WorldEnglish version. add the Navigation5 and the VerseNumberHandler2 plugins. There would be some work to do to make them internationalizable, but I think that wouldn’t be too bad. I think if I pursue the navigation or the verse number design work, I will try to do it that way. The multiple-versions bit would take quite a bit more fiddling with the current design, but I might take that on at some point.


Thank you very much for some wonderful ideas!

I did figure it out. I needed to filter out empties:

<% if [<currentTiddler>tag[Verse]] %>
<$let
  a={{{ [<currentTiddler>get[seq]add[1]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] }}}
  b={{{ [<currentTiddler>get[seq]add[2]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] }}}
  c={{{ [<currentTiddler>get[seq]add[3]]:map[get.TiddlerBySeq<currentTiddler>]+[tag[Verse]] }}}
  next={{{ [<a>] [<b>] [<c>]  :filter[trim[]!match[]] +[first[]] }}}
<!--                          ^^^^^^^^^^^^^^^^^^^^^^^                                       -->
>
  {{{ [<next>] }}}
</$let>
<% endif %>

This is still not how I would want to do these. This technique won’t extend to Chapter and Book navigation. I figure whatever works for those would also extend to Verses. But it’s a working solution, and you can download the following and drag it onto any of the English versions (it would still need to be internationalized):

bible-verse-nav.json (1.8 KB)

All interesting stuff!

Thinking like Word, not TW, lineing stuff up, borderless dynamic table?

Keep up thr good work!

I think the normative (?) filter would be

+[!is[blank]]

The reverse navigation doesn’t work for the first verse of a chapter.

But, when I think about it, probably verse-by-verse navigation is actually seldom needed. Most verses need context.

The “tools” I have in my own and that are most used are those related to grouping (tags or fields for OT, NT, Major Prophets, Minor Prophets, Psalms, Psalm 119, Poetry). Selecting, marking, and dating verses, viewing selections for total verse numbers. Marking passages to skip. But that’s just me.

Oh, of course!

Yes, that was a minor typo, fixed here:

bible-verse-nav.json (1.8 KB)

While I agree, if I were to create nav tools, I would nevertheless do something like the above for book, chapter, and verse levels, just for consistency. But, especially for verses, I might try to work it out so that this navigation replaces the currently viewed tiddler in the story river. To me the sweet spot for navigation would probably be the chapter.

Did I miss the fact that you have your own bible wiki that you’re working on? Is it publicly available?

I should probably mark books with, at a minimum, OT/NT, and perhaps a similar breakdown as you have there.

Thank you for the wonderful feedback!

I’m not sure what you mean by this. Is that “borderless dynamic table” just the navigation footer? Something else?

Well tables to keepbstuff in line. Dynamic because i see people talking about it in relation to @Mohammad s plugin. See. I have no clue what I’m talking about. Roll eyes and move on! :smiley:

It’s a simple, non-inspiring, by-chapter, non-shareable thing. But it keeps records of things like “last time read”.

I have a dashboard to set up reading:

And a sidebar to save story lists:

image

Heh, heh. Just realised I had prematurely senior moment and need to redate that. A better version would create the date stamp automatically instead of having me type it. Oh well.

A tag-drop modifier to pick which kinds of tags are available:

Tools

image

Bible themes/topics

image

I’ve also got my annotate plugin in there, though I seldom use it. You wouldn’t need that for your verse-by-verse version of course. I also have an older clumsier system that used macros to annotate sections that I need to back out sometime.

2 Likes