How to decode/decipher Mozilla Firefox proprietary .jsonlz4 format? (sessionstore-backups/recovery.jsonlz4)
I'm trying to get a handle on Mozilla Firefox's proprietary file format .jsonlz4
, used, for example, for sessionstore-backups/recovery.jsonlz4
, but to no avail.
How do I get back my data, specifically, some long text I've typed in some textareas of a crashed session? It's my data!
firefox backup json session-restore jsonlz4
add a comment |
I'm trying to get a handle on Mozilla Firefox's proprietary file format .jsonlz4
, used, for example, for sessionstore-backups/recovery.jsonlz4
, but to no avail.
How do I get back my data, specifically, some long text I've typed in some textareas of a crashed session? It's my data!
firefox backup json session-restore jsonlz4
8
I wouldn't call the format proprietary. Granted, it's custom, not used anywhere outside Mozilla projects, but since the whole of Firefox—including the relevant (de)compression code—is free and open source, this format shouldn't be called proprietary. (P.S. I'm not talking of the branding, which is licensed differently.)
– Ruslan
Oct 4 '18 at 9:46
@Ruslan, but it is in fact proprietary — just because it's OSS doesn't make it non-proprietary, as there are zero standard tools to look into the content of these files, whereas all other files, even Java's JAR format, can easily be managed with 100% standard non-proprietary tools that are available in ports/packages of every decent UNIX system. OTOH, it is completely non-trivial to actually get back your own data from these.jsonlz4
files.
– cnst
Oct 6 '18 at 2:23
add a comment |
I'm trying to get a handle on Mozilla Firefox's proprietary file format .jsonlz4
, used, for example, for sessionstore-backups/recovery.jsonlz4
, but to no avail.
How do I get back my data, specifically, some long text I've typed in some textareas of a crashed session? It's my data!
firefox backup json session-restore jsonlz4
I'm trying to get a handle on Mozilla Firefox's proprietary file format .jsonlz4
, used, for example, for sessionstore-backups/recovery.jsonlz4
, but to no avail.
How do I get back my data, specifically, some long text I've typed in some textareas of a crashed session? It's my data!
firefox backup json session-restore jsonlz4
firefox backup json session-restore jsonlz4
asked Oct 4 '18 at 0:35
cnstcnst
1,16431637
1,16431637
8
I wouldn't call the format proprietary. Granted, it's custom, not used anywhere outside Mozilla projects, but since the whole of Firefox—including the relevant (de)compression code—is free and open source, this format shouldn't be called proprietary. (P.S. I'm not talking of the branding, which is licensed differently.)
– Ruslan
Oct 4 '18 at 9:46
@Ruslan, but it is in fact proprietary — just because it's OSS doesn't make it non-proprietary, as there are zero standard tools to look into the content of these files, whereas all other files, even Java's JAR format, can easily be managed with 100% standard non-proprietary tools that are available in ports/packages of every decent UNIX system. OTOH, it is completely non-trivial to actually get back your own data from these.jsonlz4
files.
– cnst
Oct 6 '18 at 2:23
add a comment |
8
I wouldn't call the format proprietary. Granted, it's custom, not used anywhere outside Mozilla projects, but since the whole of Firefox—including the relevant (de)compression code—is free and open source, this format shouldn't be called proprietary. (P.S. I'm not talking of the branding, which is licensed differently.)
– Ruslan
Oct 4 '18 at 9:46
@Ruslan, but it is in fact proprietary — just because it's OSS doesn't make it non-proprietary, as there are zero standard tools to look into the content of these files, whereas all other files, even Java's JAR format, can easily be managed with 100% standard non-proprietary tools that are available in ports/packages of every decent UNIX system. OTOH, it is completely non-trivial to actually get back your own data from these.jsonlz4
files.
– cnst
Oct 6 '18 at 2:23
8
8
I wouldn't call the format proprietary. Granted, it's custom, not used anywhere outside Mozilla projects, but since the whole of Firefox—including the relevant (de)compression code—is free and open source, this format shouldn't be called proprietary. (P.S. I'm not talking of the branding, which is licensed differently.)
– Ruslan
Oct 4 '18 at 9:46
I wouldn't call the format proprietary. Granted, it's custom, not used anywhere outside Mozilla projects, but since the whole of Firefox—including the relevant (de)compression code—is free and open source, this format shouldn't be called proprietary. (P.S. I'm not talking of the branding, which is licensed differently.)
– Ruslan
Oct 4 '18 at 9:46
@Ruslan, but it is in fact proprietary — just because it's OSS doesn't make it non-proprietary, as there are zero standard tools to look into the content of these files, whereas all other files, even Java's JAR format, can easily be managed with 100% standard non-proprietary tools that are available in ports/packages of every decent UNIX system. OTOH, it is completely non-trivial to actually get back your own data from these
.jsonlz4
files.– cnst
Oct 6 '18 at 2:23
@Ruslan, but it is in fact proprietary — just because it's OSS doesn't make it non-proprietary, as there are zero standard tools to look into the content of these files, whereas all other files, even Java's JAR format, can easily be managed with 100% standard non-proprietary tools that are available in ports/packages of every decent UNIX system. OTOH, it is completely non-trivial to actually get back your own data from these
.jsonlz4
files.– cnst
Oct 6 '18 at 2:23
add a comment |
3 Answers
3
active
oldest
votes
There's few Google results that actually result in doable solutions, but, as per https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/, the following appears to work most reliably:
in
about:config
, toggle thedevtools.chrome.enabled
setting from the default offalse
to a value oftrue
open Scratchpad from within Firefox:
- either with fn+Shift+F4 on a MacBook,
- or Shift+F4,
- or through the menu bar through Tools → Web Developer → Scratchpad
in the menu bar within Scratchpad of Firefox, change Environment from Content to Browser (omitting this step would subsequently result in errors like
Exception: ReferenceError: OS is not defined
at the next step)
use code like the following within the Scratchpad of Firefox:
var file = "/Users/…/sessionstore-backups/recovery.baklz4";
//OS.File.read(file, { compression: "lz4" }).then(bytes =>
// OS.File.writeAtomic(file + ".uncompressed", bytes));
OS.File.read(file, { compression: "lz4" }).then(bytes => {
OS.File.writeAtomic(file + ".uncompressed.stringify",
JSON.stringify(JSON.parse(new TextDecoder().decode(bytes)),null,1))
});
The final parameter to
JSON.stringify
handles how many spaces would be used at each line; putting 0 causes the whole thing to be printed on a single line, putting 1 splits the lines properly (putting 2 would create too much useless whitespace and increases the size of the file for little benefit)
click the
Run
buttonrun
fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify
from within the Terminal app
add a comment |
Unfortunately, due to a non-standard header, standard tools won't work. There's an open proposal to change that. Apparently the Mozilla header was devised before a standard lz4 frame format existed; it does wrap a standard lz4 block.
That said, the same bug report includes a few alternative methods. I'll list them briefly:
- Use the dejsonlz4 tool, which includes binary builds for Windows and should be easy to build on *nix
lz4json is a similar tool, but relies on an external liblz4 and is somewhat easier to build on *nix but harder on Windows (outside WSL)
- Use this fairly simple Python script: https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (requires the lz4 package via pip or your package manager) -- the script appears to be python3 but is trivially adaptable to python2
- There is a webextension available that should be able to open these. NB: while source is available, I have not verified it, and the permissions it requests are a bit concerning (especially the response to concerns)
- In theory, you should be able to strip the first 8 bytes (e.g. with
dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1
) and that should leave you with a valid lz4 block. Note that this is distinct from a lz4 frame. While most programming languages have libraries that can easily decode a block, finding a prebuilt tool to do so is more difficult, e.g. theliblz4-tool
package only accepts the frame format.
add a comment |
I was able to extract the URLs from the {profile-dir}/sessionstore-backups/recovery.jsonlz4 file using the following free online tool designed expressly for this purpose:
https://www.jeffersonscher.com/ffu/scrounger.html
The same site offers a similar tool for decrypting jsonlz4 files from the {profile-dir}/bookmarkbackups directory.
Also just found this, works flawless.
– lowtechsun
Feb 25 at 8:35
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1363747%2fhow-to-decode-decipher-mozilla-firefox-proprietary-jsonlz4-format-sessionstor%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
There's few Google results that actually result in doable solutions, but, as per https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/, the following appears to work most reliably:
in
about:config
, toggle thedevtools.chrome.enabled
setting from the default offalse
to a value oftrue
open Scratchpad from within Firefox:
- either with fn+Shift+F4 on a MacBook,
- or Shift+F4,
- or through the menu bar through Tools → Web Developer → Scratchpad
in the menu bar within Scratchpad of Firefox, change Environment from Content to Browser (omitting this step would subsequently result in errors like
Exception: ReferenceError: OS is not defined
at the next step)
use code like the following within the Scratchpad of Firefox:
var file = "/Users/…/sessionstore-backups/recovery.baklz4";
//OS.File.read(file, { compression: "lz4" }).then(bytes =>
// OS.File.writeAtomic(file + ".uncompressed", bytes));
OS.File.read(file, { compression: "lz4" }).then(bytes => {
OS.File.writeAtomic(file + ".uncompressed.stringify",
JSON.stringify(JSON.parse(new TextDecoder().decode(bytes)),null,1))
});
The final parameter to
JSON.stringify
handles how many spaces would be used at each line; putting 0 causes the whole thing to be printed on a single line, putting 1 splits the lines properly (putting 2 would create too much useless whitespace and increases the size of the file for little benefit)
click the
Run
buttonrun
fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify
from within the Terminal app
add a comment |
There's few Google results that actually result in doable solutions, but, as per https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/, the following appears to work most reliably:
in
about:config
, toggle thedevtools.chrome.enabled
setting from the default offalse
to a value oftrue
open Scratchpad from within Firefox:
- either with fn+Shift+F4 on a MacBook,
- or Shift+F4,
- or through the menu bar through Tools → Web Developer → Scratchpad
in the menu bar within Scratchpad of Firefox, change Environment from Content to Browser (omitting this step would subsequently result in errors like
Exception: ReferenceError: OS is not defined
at the next step)
use code like the following within the Scratchpad of Firefox:
var file = "/Users/…/sessionstore-backups/recovery.baklz4";
//OS.File.read(file, { compression: "lz4" }).then(bytes =>
// OS.File.writeAtomic(file + ".uncompressed", bytes));
OS.File.read(file, { compression: "lz4" }).then(bytes => {
OS.File.writeAtomic(file + ".uncompressed.stringify",
JSON.stringify(JSON.parse(new TextDecoder().decode(bytes)),null,1))
});
The final parameter to
JSON.stringify
handles how many spaces would be used at each line; putting 0 causes the whole thing to be printed on a single line, putting 1 splits the lines properly (putting 2 would create too much useless whitespace and increases the size of the file for little benefit)
click the
Run
buttonrun
fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify
from within the Terminal app
add a comment |
There's few Google results that actually result in doable solutions, but, as per https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/, the following appears to work most reliably:
in
about:config
, toggle thedevtools.chrome.enabled
setting from the default offalse
to a value oftrue
open Scratchpad from within Firefox:
- either with fn+Shift+F4 on a MacBook,
- or Shift+F4,
- or through the menu bar through Tools → Web Developer → Scratchpad
in the menu bar within Scratchpad of Firefox, change Environment from Content to Browser (omitting this step would subsequently result in errors like
Exception: ReferenceError: OS is not defined
at the next step)
use code like the following within the Scratchpad of Firefox:
var file = "/Users/…/sessionstore-backups/recovery.baklz4";
//OS.File.read(file, { compression: "lz4" }).then(bytes =>
// OS.File.writeAtomic(file + ".uncompressed", bytes));
OS.File.read(file, { compression: "lz4" }).then(bytes => {
OS.File.writeAtomic(file + ".uncompressed.stringify",
JSON.stringify(JSON.parse(new TextDecoder().decode(bytes)),null,1))
});
The final parameter to
JSON.stringify
handles how many spaces would be used at each line; putting 0 causes the whole thing to be printed on a single line, putting 1 splits the lines properly (putting 2 would create too much useless whitespace and increases the size of the file for little benefit)
click the
Run
buttonrun
fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify
from within the Terminal app
There's few Google results that actually result in doable solutions, but, as per https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/, the following appears to work most reliably:
in
about:config
, toggle thedevtools.chrome.enabled
setting from the default offalse
to a value oftrue
open Scratchpad from within Firefox:
- either with fn+Shift+F4 on a MacBook,
- or Shift+F4,
- or through the menu bar through Tools → Web Developer → Scratchpad
in the menu bar within Scratchpad of Firefox, change Environment from Content to Browser (omitting this step would subsequently result in errors like
Exception: ReferenceError: OS is not defined
at the next step)
use code like the following within the Scratchpad of Firefox:
var file = "/Users/…/sessionstore-backups/recovery.baklz4";
//OS.File.read(file, { compression: "lz4" }).then(bytes =>
// OS.File.writeAtomic(file + ".uncompressed", bytes));
OS.File.read(file, { compression: "lz4" }).then(bytes => {
OS.File.writeAtomic(file + ".uncompressed.stringify",
JSON.stringify(JSON.parse(new TextDecoder().decode(bytes)),null,1))
});
The final parameter to
JSON.stringify
handles how many spaces would be used at each line; putting 0 causes the whole thing to be printed on a single line, putting 1 splits the lines properly (putting 2 would create too much useless whitespace and increases the size of the file for little benefit)
click the
Run
buttonrun
fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify
from within the Terminal app
edited Oct 9 '18 at 4:57
answered Oct 4 '18 at 0:35
cnstcnst
1,16431637
1,16431637
add a comment |
add a comment |
Unfortunately, due to a non-standard header, standard tools won't work. There's an open proposal to change that. Apparently the Mozilla header was devised before a standard lz4 frame format existed; it does wrap a standard lz4 block.
That said, the same bug report includes a few alternative methods. I'll list them briefly:
- Use the dejsonlz4 tool, which includes binary builds for Windows and should be easy to build on *nix
lz4json is a similar tool, but relies on an external liblz4 and is somewhat easier to build on *nix but harder on Windows (outside WSL)
- Use this fairly simple Python script: https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (requires the lz4 package via pip or your package manager) -- the script appears to be python3 but is trivially adaptable to python2
- There is a webextension available that should be able to open these. NB: while source is available, I have not verified it, and the permissions it requests are a bit concerning (especially the response to concerns)
- In theory, you should be able to strip the first 8 bytes (e.g. with
dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1
) and that should leave you with a valid lz4 block. Note that this is distinct from a lz4 frame. While most programming languages have libraries that can easily decode a block, finding a prebuilt tool to do so is more difficult, e.g. theliblz4-tool
package only accepts the frame format.
add a comment |
Unfortunately, due to a non-standard header, standard tools won't work. There's an open proposal to change that. Apparently the Mozilla header was devised before a standard lz4 frame format existed; it does wrap a standard lz4 block.
That said, the same bug report includes a few alternative methods. I'll list them briefly:
- Use the dejsonlz4 tool, which includes binary builds for Windows and should be easy to build on *nix
lz4json is a similar tool, but relies on an external liblz4 and is somewhat easier to build on *nix but harder on Windows (outside WSL)
- Use this fairly simple Python script: https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (requires the lz4 package via pip or your package manager) -- the script appears to be python3 but is trivially adaptable to python2
- There is a webextension available that should be able to open these. NB: while source is available, I have not verified it, and the permissions it requests are a bit concerning (especially the response to concerns)
- In theory, you should be able to strip the first 8 bytes (e.g. with
dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1
) and that should leave you with a valid lz4 block. Note that this is distinct from a lz4 frame. While most programming languages have libraries that can easily decode a block, finding a prebuilt tool to do so is more difficult, e.g. theliblz4-tool
package only accepts the frame format.
add a comment |
Unfortunately, due to a non-standard header, standard tools won't work. There's an open proposal to change that. Apparently the Mozilla header was devised before a standard lz4 frame format existed; it does wrap a standard lz4 block.
That said, the same bug report includes a few alternative methods. I'll list them briefly:
- Use the dejsonlz4 tool, which includes binary builds for Windows and should be easy to build on *nix
lz4json is a similar tool, but relies on an external liblz4 and is somewhat easier to build on *nix but harder on Windows (outside WSL)
- Use this fairly simple Python script: https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (requires the lz4 package via pip or your package manager) -- the script appears to be python3 but is trivially adaptable to python2
- There is a webextension available that should be able to open these. NB: while source is available, I have not verified it, and the permissions it requests are a bit concerning (especially the response to concerns)
- In theory, you should be able to strip the first 8 bytes (e.g. with
dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1
) and that should leave you with a valid lz4 block. Note that this is distinct from a lz4 frame. While most programming languages have libraries that can easily decode a block, finding a prebuilt tool to do so is more difficult, e.g. theliblz4-tool
package only accepts the frame format.
Unfortunately, due to a non-standard header, standard tools won't work. There's an open proposal to change that. Apparently the Mozilla header was devised before a standard lz4 frame format existed; it does wrap a standard lz4 block.
That said, the same bug report includes a few alternative methods. I'll list them briefly:
- Use the dejsonlz4 tool, which includes binary builds for Windows and should be easy to build on *nix
lz4json is a similar tool, but relies on an external liblz4 and is somewhat easier to build on *nix but harder on Windows (outside WSL)
- Use this fairly simple Python script: https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (requires the lz4 package via pip or your package manager) -- the script appears to be python3 but is trivially adaptable to python2
- There is a webextension available that should be able to open these. NB: while source is available, I have not verified it, and the permissions it requests are a bit concerning (especially the response to concerns)
- In theory, you should be able to strip the first 8 bytes (e.g. with
dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1
) and that should leave you with a valid lz4 block. Note that this is distinct from a lz4 frame. While most programming languages have libraries that can easily decode a block, finding a prebuilt tool to do so is more difficult, e.g. theliblz4-tool
package only accepts the frame format.
answered Oct 4 '18 at 1:16
BobBob
45.8k20139173
45.8k20139173
add a comment |
add a comment |
I was able to extract the URLs from the {profile-dir}/sessionstore-backups/recovery.jsonlz4 file using the following free online tool designed expressly for this purpose:
https://www.jeffersonscher.com/ffu/scrounger.html
The same site offers a similar tool for decrypting jsonlz4 files from the {profile-dir}/bookmarkbackups directory.
Also just found this, works flawless.
– lowtechsun
Feb 25 at 8:35
add a comment |
I was able to extract the URLs from the {profile-dir}/sessionstore-backups/recovery.jsonlz4 file using the following free online tool designed expressly for this purpose:
https://www.jeffersonscher.com/ffu/scrounger.html
The same site offers a similar tool for decrypting jsonlz4 files from the {profile-dir}/bookmarkbackups directory.
Also just found this, works flawless.
– lowtechsun
Feb 25 at 8:35
add a comment |
I was able to extract the URLs from the {profile-dir}/sessionstore-backups/recovery.jsonlz4 file using the following free online tool designed expressly for this purpose:
https://www.jeffersonscher.com/ffu/scrounger.html
The same site offers a similar tool for decrypting jsonlz4 files from the {profile-dir}/bookmarkbackups directory.
I was able to extract the URLs from the {profile-dir}/sessionstore-backups/recovery.jsonlz4 file using the following free online tool designed expressly for this purpose:
https://www.jeffersonscher.com/ffu/scrounger.html
The same site offers a similar tool for decrypting jsonlz4 files from the {profile-dir}/bookmarkbackups directory.
answered Feb 3 at 4:54
MikeOnlineMikeOnline
1363
1363
Also just found this, works flawless.
– lowtechsun
Feb 25 at 8:35
add a comment |
Also just found this, works flawless.
– lowtechsun
Feb 25 at 8:35
Also just found this, works flawless.
– lowtechsun
Feb 25 at 8:35
Also just found this, works flawless.
– lowtechsun
Feb 25 at 8:35
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1363747%2fhow-to-decode-decipher-mozilla-firefox-proprietary-jsonlz4-format-sessionstor%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
8
I wouldn't call the format proprietary. Granted, it's custom, not used anywhere outside Mozilla projects, but since the whole of Firefox—including the relevant (de)compression code—is free and open source, this format shouldn't be called proprietary. (P.S. I'm not talking of the branding, which is licensed differently.)
– Ruslan
Oct 4 '18 at 9:46
@Ruslan, but it is in fact proprietary — just because it's OSS doesn't make it non-proprietary, as there are zero standard tools to look into the content of these files, whereas all other files, even Java's JAR format, can easily be managed with 100% standard non-proprietary tools that are available in ports/packages of every decent UNIX system. OTOH, it is completely non-trivial to actually get back your own data from these
.jsonlz4
files.– cnst
Oct 6 '18 at 2:23