Introduction to Add-on Development

There isn’t a walkthrough for JPM, but you can use this method to test your restartless add-ons in Firefox. Even better, you can also move to the WebExtensions API.

There are other ways to run unsigned add-ons, which are listed on this page. I don’t know if there’s a way to make jpm run work with them.

Thank you Jorgev; I will investigate those options. As side notes:

  • I’m creating a side-bar add-on, so I’m pretty sure I can’t use the WebExtensions API, at least yet (please let me know if I’m wrong).

  • I’ve tried some of the techniques such as setting xpinstall.signatures.required to false, but since I’m using 48, I don’t think that specific technique will work.

That’s correct. There’s a bug filed for it, but no real progress so far.

You would need to use the unbranded builds, also explained in the wiki. It’s best/easiest to do your testing in Developer Edition, though.

2 posts were split to a new topic: Issue “format not supported”

Thanks for the post. I am looking for a good tutorial on reading input from HTML panel, store and retrieve the input. e.g. user entered list in the script. What are the possible ways to do this?

I joined the tb-mailing list but that seems to have died now and maildev digest has taken it’s place but there seems to be no more help for tb developers. I read just recently that legacy non bootstrapped extensions are not to be supported so I looked around and there is NO help that I can see that is accessible to upgrade a legacy non bootstrapped extension to a restartless one. I would really love to see one basic example of each type… one on changing the main display and one on changing the messaging display. I looked through a stack of addons and MOST are not restartless. It seems that addons are really not supported any more.
Blessings

A post was split to a new topic: Allow an extension to configure Firefox security devices

A post was split to a new topic: Add-on corrupt error message

A post was split to a new topic: Using imports

I would like to develop a Firefox addon to provide a much better password manager than the existing ones. The problem is that the fundamentals of Webextensions are not all provided in one place, concisely.

When I try to follow the documentation, I get errors like “TypeError: can’t access dead object” and “DebuggeeWouldRun”. All these errors are obscure, poorly documented, and have source file locations in utility programs instead of in my extension code. More importantly, I can find no postings that teach what to do and what not to do, except for a few very obscure cases that do not appear relevant to what I’m trying to do.

It has been a very frustrating few days, and I feel that I still cannot get the basic functions to work: sending a message from background to foreground, or vice-versa, and so forth.

And I have not yet discovered a forum where I can get help in finding my bugs, bugs that I could have avoided easily if the documentation were complete. I’m not criticizing any person, but the idea of documenting fully any system or feature, in this case Webextensions.

I’ve been referred here, and I’m hoping to find answers to my many questions.

Can anyone give me advice as to how to proceed? Should I post my buggy code in one of these forums? Should I post tiny test cases that malfunction? Is there a wonderful document somewhere that I should read?

The main place for documentation is MDN, but you’ve probably seen that already.

You can create new threads for the individual issues you’ve run into, in this forum. The community is generally very helpful.

I can tell you from my own experience that reading a lot of MDN is the best way to learn about web-extension / JavaScript development and to avoid errors. Every time you want to use some API, read the MDN first. It’s well written and updated (I’ve never seen such a perfect documentation).
Try to read as much as possible, not just Anatomy of an extension.

Thank you, it is good advice and this is indeed my primary source of information. But it is not complete. Using code similar to MDN generates various errors, not usually in the part that MDN explains, but in the parts concerning which it is silent.

For example, I get frequent “dead object” errors. These are apparently caused by a Firefox mechanism to ensure that there are no memory leaks in extensions/addons. But I am not saving window, document, or any other DOM nodes in a global variable, so in this case as in many others, the documentation is not sufficient to write correct code. I have been experimenting for days and still have not found what I am doing wrong.

I feel sure that when I get help and find my current bugs I will be in a better position to read and experiment to solve my future bugs. But right now I have a very big learning hurdle, and the forums are very slow to help because there are so few people who really understand this stuff.

I have to agree with those who have said that a lot of the documentation for the current system of add-on development is disjointed and incomplete which is in complete contrast to the documentation for basic javascript and html.

For the past few years I’ve been trying to teach myself how to create browser extensions and even managed to make one and have it published (it’s a basic repurpose/edit of various examples). Now however I’m working on one from scratch that I want to be available in both desktop and android versions of Firefox and have so far failed completely to find a way of being able to test it in the android version.

I’ve got a fully working desktop version and am happy with how it works on that but when I tried to follow the Developing extensions for Firefox for Android guide I ran into a majoe roadblock.

I’ve got Node.js and web-ext set up without a problem and even got Android Studio installed but when I try to install Firefox for Android I run into the problem of not being able to find a way to run the Android Emulator so I can install the Android version of Firefox in it.

One of the reasons I chose Firefox to develop in was the excellent documentation for desktop sites and the support for add-ons in the android version. If anyone can point me to a simple, clear and current tutorial on how I can test android versions of add-ons I’d be very grateful. Please note I’m a completely self taught programmer in my 60s (it helps keep my remaining braincell working) so don’t expect earth-shattering stuff :wink:

2 Likes

Tensmoor, I agree with your assessment of the incomplete documentation, although I am unfamiliar with the Android part. For that problem, you might try installing BlueStacks (www.bluestacks.com), a nice standard Android emulator. I have no idea whether Firefox Webextensions works with it, though. Best of luck.

I am 73 and I keep busy with my computer, too. I worked on a Webextensions project to create a unique kind of password manager, and I got used to asynchronous programming using Promises, but the asynchronous communication system and other basics of Webextensions are in my opinion poorly designed and hard to debug and I had to abandon my project or else lose my mind with frustration. I really don’t have much approval for the work of the Webextensions designers. I like to design my systems software cleanly and usably and document fully. I can’t recall that I ever received a single bug report on my released software during my 40 year career. Such success in creating reliable software is possible. But it requires accepting all sorts of odd inputs without breaking, and that requires skill in unit testing and fixing bugs before continuing with coding.

2 Likes

That tutorials about How to develop a Firefox extension is so helpful.

finaly i found a good tutorial: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension

1 Like

This post and thread is worse than useless: it is misleading. If this is still a valid place for extension developers to discuss developing then perhaps this thread could be replaced or deleted? 2014 is a generation ago, after all.

Thanks for the nudge; I’m archiving this thread in favor of a new, up-to-date post. :wink: