์๋ช ๋์ง ์์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ค์นํ๊ณ WebExtensions Experiments API๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด ์ ๊ธ ํด์ ๋ Firefox ๋น๋๋ฅผ ๋ฐฐํฌํ์ง ์๋๋ค๋ Mozilla ๋ฐ ๋ฐฐํฌํ์ ์ ์ฑ ์ ๋ํ ์๊ฒฌ ๋ถ์ผ์น๋ก ์ธํด ์ผ๋ฐ Firefox ๋น๋๋ฅผ "Developer Edition" ๋ณํ์ผ๋ก ๋ณํํ๋ ๋๊ตฌ๊ฐ ๊ฐ๋ฐ๋์์ต๋๋ค. ๋์งํธ ์๋ช ์์ด ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Firefox์ ํ์ ๊ธฐ๋ฅ์ด ECMAScript ์ฝ๋๋ก ๊ตฌํ๋๊ณ ๋ชจ๋ Firefox ๋ฒ์ ์ ํฌํจ๋์ด ์์ง๋ง ์ค์ ๋ ์์ ๊ฐ์ ๋ฐ๋ผ ๋ฐํ์์ ํ์ฑํ๋๋ค๋ ์ฌ์ค๋ก ์ธํด ๋๊ตฌ ๊ฐ๋ฐ์ด ์ด์ง๋์์ต๋๋ค. ์์(โMOZ_DEV_EDITIONโ, โMOZ_REQUIRE_SIGNINGโ)๋ zip ์์นด์ด๋ธ โ/usr/lib/firefox/omni.jaโ์ ์๋ ํ๋์ ํ์ผ(โmodules/addons/AddonSettings.jsmโ)์ ์ ์๋ฉ๋๋ค.
์ ์๋ ์ ํธ๋ฆฌํฐ๋ esprima-python์ ์ฌ์ฉํ์ฌ ํ์ํ ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ AST๋ฅผ ํจ์นํ ํ jscodegen.py๋ฅผ ์ฌ์ฉํ์ฌ ์ง๋ ฌํํฉ๋๋ค. zip ํ์ ์์ ์ libzip.py(libzip์ ๋ํ ๋ฐ์ธ๋ฉ)์ ์ํด ์ ๊ณต๋ฉ๋๋ค. ํด๋น git ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ง์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ํ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ํ ํ์์ ๋ฏธ๋ฆฌ ๋น๋๋ ํจํค์ง์ ์๋ ์ข
์์ฑ ๋ฒ์ ์ ๋ํ ์ ํ ์ฌํญ "{", "==" ๋ฐ "~="๋ฅผ ๋ฐ์ธ๋ฉ ํด์ ํ ์ ์๋ unpin.py ์คํฌ๋ฆฝํธ๋ฅผ ์ฐธ๊ณ ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๊ธฐ๋ณธ ์ค์ ์ pip๋ฅผ ํตํด ์ํ๋ ํจํค์ง๋ฅผ ์ค์นํ ๋ ์๋ ๋ค์ด๊ทธ๋ ์ด๋๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru