{"source":"https://contributable.vercel.app","licence":"CC BY 4.0","methodology":"https://contributable.vercel.app/methodology","v":2,"owner":"openfoodfacts","name":"openfoodfacts-server","updatedAt":"2026-10-11T05:37:37.725Z","coveredSince":"2025-10-04T15:04:11.004Z","facts":{"owner":"openfoodfacts","name":"openfoodfacts-server","description":"Open Food Facts database, API server and web interface - 🐪🦋 Perl, CSS and JS coders welcome 😊 For helping in Python, see Robotoff or taxonomy-editor","stars":1174,"forks":683,"archived":false,"isFork":false,"license":"AGPL-3.0","defaultBranch":"main","pushedAt":"2026-10-10T16:12:07Z","createdAt":"2013-11-04T14:23:24Z","topics":["food","food-products","perl","database","crowdsourcing","nutrition","recycling","allergies","allergens","environment"],"languages":{"HTML":15636055,"Perl":6136447,"Python":401364,"JavaScript":390051,"SCSS":180156,"Shell":110269,"CSS":55887,"Makefile":38190,"Dockerfile":11400,"PHP":6931,"XSLT":1899},"frameworks":[],"commits90d":615,"releases365d":30,"lastReleaseAt":"2026-10-09T13:17:06Z","gettingStarted":{"contributing":true,"codeOfConduct":false,"issueTemplates":true,"devcontainer":true,"cla":"none","channels":[{"kind":"slack","url":"https://openfoodfacts.slack.com/"}],"policy":null}},"metrics":{"computedAt":"2026-10-11T05:37:37.725Z","outsidePulls":{"cohort":{"n":283,"merged":226,"closedUnmerged":18,"open":39,"mergeRate":0.9262295081967213,"openShare":0.13780918727915195,"evidence":{"merged":[14525,14517,14510,14501,14496,14491,14489,14488,14487,14479,14478,14473,14470,14464,14456,14448,14443,14442,14438,14435],"closedUnmerged":[14519,14477,14471,14467,14361,14287,14281,14258,14248,14169,14138,14123,14101,14052,14048,13979,13915,13762],"open":[14527,14503,14502,14466,14454,14445,14444,14428,14402,14397,14396,14394,14392,14382,14299,14293,14288,14275,14257,14245]}},"firstTimers":{"n":25,"merged":20,"closedUnmerged":1,"open":4,"mergeRate":0.9523809523809523,"openShare":0.16,"evidence":{"merged":[14517,14479,14448,14443,14351,14325,14321,14282,14278,14270,14242,14220,14142,14095,14068,13892,13854,13827,13800,13778],"closedUnmerged":[13979],"open":[14392,14122,14055,14050]}},"year":{"n":765,"merged":570,"closedUnmerged":100,"open":95,"mergeRate":0.8507462686567164,"openShare":0.12418300653594772,"evidence":{"merged":[14525,14517,14510,14501,14496,14491,14489,14488,14487,14479,14478,14473,14470,14464,14456,14448,14443,14442,14438,14435],"closedUnmerged":[14519,14477,14471,14467,14361,14287,14281,14258,14248,14169,14138,14123,14101,14052,14048,13979,13915,13762,13746,13744],"open":[14527,14503,14502,14466,14454,14445,14444,14428,14402,14397,14396,14394,14392,14382,14299,14293,14288,14275,14257,14245]}}},"pullFirstResponse":{"n":283,"answered":261,"waiting":22,"medianHours":16.352777777777778,"p75Hours":53.7575,"within48h":0.7137809187279156,"within7d":0.8621908127208482,"curve":[{"hours":0.06166666666666667,"waiting":0.9964664310954063},{"hours":0.13166666666666665,"waiting":0.9752650176678445},{"hours":0.24055555555555555,"waiting":0.9575971731448761},{"hours":0.41555555555555557,"waiting":0.9363957597173145},{"hours":0.6225,"waiting":0.9187279151943463},{"hours":0.8147222222222222,"waiting":0.8975265017667843},{"hours":0.9213888888888889,"waiting":0.879858657243816},{"hours":1.0652777777777778,"waiting":0.8586572438162542},{"hours":1.1966666666666668,"waiting":0.840989399293286},{"hours":1.408611111111111,"waiting":0.8197879858657241},{"hours":1.5225,"waiting":0.8021201413427558},{"hours":1.6694444444444445,"waiting":0.7809187279151939},{"hours":1.7755555555555556,"waiting":0.7632508833922257},{"hours":2.1216666666666666,"waiting":0.7420494699646639},{"hours":2.3516666666666666,"waiting":0.7243816254416956},{"hours":2.941388888888889,"waiting":0.7031802120141336},{"hours":3.2391666666666667,"waiting":0.6819787985865717},{"hours":3.622777777777778,"waiting":0.6643109540636035},{"hours":5.348333333333334,"waiting":0.6431095406360416},{"hours":7.539444444444444,"waiting":0.6254416961130733},{"hours":11.111666666666666,"waiting":0.6042402826855116},{"hours":12.480277777777777,"waiting":0.5865724381625433},{"hours":13.53888888888889,"waiting":0.5653710247349814},{"hours":14.38111111111111,"waiting":0.547703180212013},{"hours":15.1875,"waiting":0.5265017667844512},{"hours":16.11916666666667,"waiting":0.5088339222614828},{"hours":17.18888888888889,"waiting":0.48763250883392106},{"hours":18.26361111111111,"waiting":0.4699646643109529},{"hours":19.785555555555554,"waiting":0.44876325088339114},{"hours":21.355,"waiting":0.43109540636042304},{"hours":22.770555555555557,"waiting":0.4098939929328614},{"hours":25.33277777777778,"waiting":0.3922261484098932},{"hours":29.234444444444446,"waiting":0.37102473498233146},{"hours":36.646388888888886,"waiting":0.34982332155476975},{"hours":40.58444444444444,"waiting":0.3321554770318016},{"hours":43.51083333333333,"waiting":0.3109540636042398},{"hours":47.05388888888889,"waiting":0.2932862190812717},{"hours":49.52027777777778,"waiting":0.2720848056537099},{"hours":52.004444444444445,"waiting":0.25441696113074175},{"hours":65.99805555555555,"waiting":0.23321554770317995},{"hours":71.12388888888889,"waiting":0.21554770318021177},{"hours":74.30555555555556,"waiting":0.19434628975264995},{"hours":93.40833333333333,"waiting":0.17667844522968176},{"hours":114.865,"waiting":0.15547703180211994},{"hours":160.23805555555555,"waiting":0.13780918727915176},{"hours":262.1322222222222,"waiting":0.11660777385158994},{"hours":367.3,"waiting":0.09893992932862176},{"hours":1629.5872222222222,"waiting":0.07420494699646632}],"evidence":{"answered":[14527,14525,14519,14517,14510,14501,14496,14491,14489,14488,14487,14479,14478,14477,14473,14471,14470,14466,14464,14456],"waiting":[14503,14502,14467,14454,14428,14397,14394,14361,14299,14287,14281,14169,14167,14166,14165,14138,14123,14070,14052,14051]}},"timeToMerge":{"n":283,"merged":226,"medianHours":47.76416666666667,"evidence":[14525,14517,14510,14501,14496,14491,14489,14488,14487,14479,14478,14473,14470,14464,14456,14448,14443,14442,14438,14435]},"issueFirstResponse":{"n":102,"answered":72,"waiting":30,"medianHours":117.48,"p75Hours":null,"within48h":0.3627450980392153,"within7d":0.5392156862745096,"curve":[{"hours":0.2411111111111111,"waiting":0.9901960784313726},{"hours":0.34055555555555556,"waiting":0.9705882352941178},{"hours":0.38166666666666665,"waiting":0.9607843137254903},{"hours":0.8683333333333333,"waiting":0.9411764705882355},{"hours":0.9711111111111111,"waiting":0.9313725490196081},{"hours":2.0547222222222223,"waiting":0.9117647058823531},{"hours":2.2416666666666667,"waiting":0.9019607843137257},{"hours":2.8075,"waiting":0.8823529411764708},{"hours":3.421666666666667,"waiting":0.8725490196078434},{"hours":7.515555555555555,"waiting":0.8529411764705884},{"hours":7.615555555555556,"waiting":0.843137254901961},{"hours":14.650555555555556,"waiting":0.8235294117647062},{"hours":17.22277777777778,"waiting":0.8137254901960788},{"hours":19.189444444444444,"waiting":0.7941176470588238},{"hours":19.351666666666667,"waiting":0.7843137254901963},{"hours":20.50583333333333,"waiting":0.7647058823529415},{"hours":20.645,"waiting":0.754901960784314},{"hours":21.10361111111111,"waiting":0.7352941176470591},{"hours":21.453611111111112,"waiting":0.7254901960784317},{"hours":24.283055555555556,"waiting":0.7058823529411767},{"hours":24.349722222222223,"waiting":0.6960784313725493},{"hours":35.700833333333335,"waiting":0.6764705882352945},{"hours":41.381388888888885,"waiting":0.6666666666666671},{"hours":43.776944444444446,"waiting":0.6470588235294121},{"hours":46.155,"waiting":0.6372549019607847},{"hours":49.08083333333333,"waiting":0.6176470588235299},{"hours":50.64694444444444,"waiting":0.6078431372549025},{"hours":54.833888888888886,"waiting":0.5882352941176476},{"hours":55.135,"waiting":0.5784313725490201},{"hours":70.38583333333334,"waiting":0.5588235294117652},{"hours":71.91,"waiting":0.5490196078431376},{"hours":75.58027777777778,"waiting":0.5294117647058827},{"hours":81.70861111111111,"waiting":0.5196078431372553},{"hours":117.48,"waiting":0.5000000000000003},{"hours":117.72611111111111,"waiting":0.49019607843137286},{"hours":125.33444444444444,"waiting":0.4705882352941179},{"hours":128.4061111111111,"waiting":0.46078431372549045},{"hours":183.5725,"waiting":0.4411764705882355},{"hours":247.155,"waiting":0.43137254901960803},{"hours":291.5036111111111,"waiting":0.4117647058823531},{"hours":293.6347222222222,"waiting":0.4019607843137256},{"hours":331.6458333333333,"waiting":0.3823529411764707},{"hours":359.9608333333333,"waiting":0.3725490196078432},{"hours":518.9252777777778,"waiting":0.35294117647058837},{"hours":521.0991666666666,"waiting":0.3431372549019609},{"hours":737.8394444444444,"waiting":0.3232323232323233},{"hours":845.5708333333333,"waiting":0.3120863810518984},{"hours":1528.3027777777777,"waiting":0.2681992337164752}],"evidence":{"answered":[14506,14505,14498,14455,14446,14433,14391,14386,14345,14344,14334,14328,14308,14300,14269,14231,14222,14215,14218,14468],"waiting":[14526,14523,14520,14516,14493,14492,14465,14463,14462,14461,14460,14459,14458,14457,14427,14421,14371,14346,14232,14139]}},"starter":{"counts":{"available":9,"claimed":3,"in-progress":0,"stale":20},"helpWantedAvailable":1,"issues":[{"n":9794,"title":"Move all images to the deleted folder when product is deleted without deleting individual images first","state":"available","label":"beginner","createdAt":"2024-02-13T11:13:14Z","updatedAt":"2026-09-12T18:06:49Z"},{"n":9603,"title":"Add a badge on an account to mention it's a producer account","state":"stale","label":"beginner","createdAt":"2023-12-28T12:28:46Z","updatedAt":"2026-03-08T20:59:25Z"},{"n":9312,"title":"Empty search produces weird download","state":"stale","label":"beginner","createdAt":"2023-11-13T20:53:30Z","updatedAt":"2026-03-05T08:54:33Z"},{"n":9012,"title":"Folksonomy Engine loads CSS and a font from CDNs","state":"available","label":"beginner","createdAt":"2023-09-17T13:20:18Z","updatedAt":"2026-08-21T08:01:33Z"},{"n":8191,"title":"Log key events of the web version of Open Food Facts in Matomo","state":"stale","label":"beginner","createdAt":"2023-03-13T15:50:36Z","updatedAt":"2026-03-27T10:41:29Z"},{"n":7848,"title":"Improve the map (packager code) knowledge panel","state":"stale","label":"beginner","createdAt":"2022-12-15T13:03:31Z","updatedAt":"2026-01-07T10:22:27Z"},{"n":7844,"title":"Misleading way to display packaging  \"Quantity of product contained per unit\" makes it appear being packaging weight","state":"claimed","label":"beginner","createdAt":"2022-12-15T09:00:57Z","updatedAt":"2026-07-23T05:59:18Z"},{"n":7748,"title":"Create a openfoodfacts-events section with high-level explanation and a link to the openfoodfacts-events API","state":"stale","label":"beginner","createdAt":"2022-11-22T10:50:40Z","updatedAt":"2026-02-10T01:45:30Z"},{"n":7520,"title":"NEW DESIGN - Bring back the inline editing of ingredients","state":"available","label":"beginner","createdAt":"2022-10-12T13:56:34Z","updatedAt":"2026-09-30T14:15:40Z"},{"n":7519,"title":"NEW DESIGN - Bring back the unselect image buttons","state":"stale","label":"beginner","createdAt":"2022-10-12T13:55:39Z","updatedAt":"2026-01-04T13:25:35Z"},{"n":7504,"title":"NEW DESIGN - We should try to avoid a blank when JavaScript is disabled","state":"stale","label":"beginner","createdAt":"2022-10-11T15:37:39Z","updatedAt":"2026-06-28T14:20:30Z"},{"n":7503,"title":"NEW DESIGN - We should try to display cards when JavaScript is disabled","state":"stale","label":"beginner","createdAt":"2022-10-11T15:36:59Z","updatedAt":"2026-06-28T14:16:57Z"},{"n":7500,"title":" NEW DESIGN - We should have nicer, looking titles, possibly reusing the ones in the install the app promo (and like in our presentations)","state":"stale","label":"beginner","createdAt":"2022-10-11T15:34:29Z","updatedAt":"2026-02-22T12:56:45Z"},{"n":7497,"title":"NEW DESIGN - The action menu should be on the left of the Open Food Facts logo when scrolling","state":"available","label":"beginner","createdAt":"2022-10-11T15:31:06Z","updatedAt":"2026-09-26T06:25:27Z"},{"n":7411,"title":"NEW DESIGN: Update tables styles according to Figma mockup","state":"stale","label":"beginner","createdAt":"2022-09-28T11:53:42Z","updatedAt":"2025-10-07T07:25:42Z"},{"n":7362,"title":"Turn product changes history into a knowledge panel table","state":"stale","label":"beginner","createdAt":"2022-09-18T15:21:10Z","updatedAt":"2026-03-16T02:50:41Z"},{"n":7343,"title":"Move inline JavaScript code out of `import_photos_upload.pl`","state":"stale","label":"beginner","createdAt":"2022-09-15T09:12:17Z","updatedAt":"2026-08-11T15:37:53Z"},{"n":7295,"title":"NEW DESIGN: remaining issues","state":"available","label":"beginner","createdAt":"2022-09-05T14:29:34Z","updatedAt":"2026-08-21T07:57:47Z"},{"n":7047,"title":"EMB codes are not included in the traceability codes autosuggest","state":"stale","label":"beginner","createdAt":"2022-07-11T08:56:44Z","updatedAt":"2026-01-25T05:50:59Z"},{"n":6927,"title":"Refactoring HTML/CSS and JS out of perl files","state":"stale","label":"beginner","createdAt":"2022-06-20T07:48:04Z","updatedAt":"2026-08-11T17:18:57Z"},{"n":6827,"title":"Make the NOVA/UPF knowledge panel clearer","state":"claimed","label":"beginner","createdAt":"2022-05-28T15:41:52Z","updatedAt":"2026-06-23T08:12:02Z"},{"n":6687,"title":"Those strings should be made translatable with placeholders","state":"stale","label":"beginner","createdAt":"2022-04-25T11:28:36Z","updatedAt":"2026-02-14T07:29:50Z"},{"n":6534,"title":"Allow for a photo comment to be passed with image upload API requests","state":"stale","label":"beginner","createdAt":"2022-03-31T16:39:31Z","updatedAt":"2026-03-08T17:09:42Z"},{"n":5529,"title":"🎯 What can I work on ?","state":"available","label":"beginner","createdAt":"2021-08-22T16:12:23Z","updatedAt":"2026-10-06T23:44:02Z"},{"n":5172,"title":"Add the search term in the result page","state":"stale","label":"beginner","createdAt":"2021-04-24T09:08:36Z","updatedAt":"2025-12-13T11:42:41Z"},{"n":2497,"title":"\"Comparison to average values of products in the same category\" is unclear","state":"stale","label":"beginner","createdAt":"2019-10-28T19:10:56Z","updatedAt":"2026-07-23T06:00:47Z"},{"n":1983,"title":"Ignore \"Produit inconnu\" in product name","state":"stale","label":"beginner","createdAt":"2019-06-23T16:48:46Z","updatedAt":"2026-07-23T05:39:15Z"},{"n":1770,"title":"The photo of the nutrition is not coherent in edit mode","state":"claimed","label":"beginner","createdAt":"2019-05-13T12:01:56Z","updatedAt":"2026-06-28T04:00:46Z"},{"n":1505,"title":"Better \"No product\" experience","state":"stale","label":"help-wanted","createdAt":"2018-11-13T14:06:05Z","updatedAt":"2026-08-11T18:24:35Z"},{"n":1288,"title":"Support EAN-13 for variable prices","state":"available","label":"help-wanted","createdAt":"2018-07-09T21:38:52Z","updatedAt":"2026-08-21T07:59:52Z"},{"n":1029,"title":"Swipe for pagination of search results","state":"stale","label":"help-wanted","createdAt":"2018-01-08T22:38:01Z","updatedAt":"2026-05-05T07:44:10Z"},{"n":1014,"title":"Add button that sends the barcode of a product to delete to a Slack channel","state":"available","label":"beginner","createdAt":"2017-12-21T08:54:34Z","updatedAt":"2026-10-06T23:37:29Z"},{"n":604,"title":"Add play store promo ","state":"available","label":"beginner","createdAt":"2017-01-06T12:21:23Z","updatedAt":"2026-08-21T08:27:46Z"},{"n":442,"title":"Create a Sitemap for ProductOpener","state":"stale","label":"help-wanted","createdAt":"2016-08-30T11:55:32Z","updatedAt":"2026-08-08T12:36:45Z"},{"n":21,"title":"Search -  \"Products search\" page generate maps using \"EMB code\" but use the term \"production place\"","state":"stale","label":"beginner","createdAt":"2015-02-06T14:48:58Z","updatedAt":"2026-07-23T05:58:10Z"},{"n":17,"title":"Search - Use the same words for criteria in \"Products search\" and in the product page (and edition page)","state":"available","label":"beginner","createdAt":"2015-02-06T14:09:52Z","updatedAt":"2026-09-29T10:28:47Z"}]},"responseWindow":{"hours":[2,0,0,0,0,0,0,2,27,18,6,6,7,24,19,23,41,1,7,3,12,9,1,0,0,0,0,0,1,0,0,11,13,19,11,4,19,2,5,5,4,1,8,7,3,10,2,2,0,0,0,0,0,1,1,5,9,21,10,8,12,12,7,22,6,1,3,1,14,0,2,0,0,0,0,0,0,3,1,12,13,8,6,10,9,8,3,8,11,9,0,1,2,0,0,0,0,0,0,0,0,1,2,4,6,20,11,1,9,11,1,7,4,3,1,5,4,3,0,0,0,0,0,0,0,0,1,2,3,9,16,10,8,9,4,2,1,1,0,1,3,2,2,0,0,0,0,0,0,0,1,3,11,6,11,4,7,0,0,2,4,2,0,1,1,1,0,0],"people":10,"replies":795},"activeMaintainers":17},"series":[{"week":"2025-10-12","opened":8,"merged":6,"answered7d":3,"activity":20},{"week":"2025-10-19","opened":8,"merged":7,"answered7d":6,"activity":75},{"week":"2025-10-26","opened":2,"merged":2,"answered7d":1,"activity":75},{"week":"2025-11-02","opened":17,"merged":16,"answered7d":17,"activity":80},{"week":"2025-11-09","opened":9,"merged":8,"answered7d":7,"activity":32},{"week":"2025-11-16","opened":10,"merged":8,"answered7d":8,"activity":95},{"week":"2025-11-23","opened":14,"merged":12,"answered7d":11,"activity":34},{"week":"2025-11-30","opened":20,"merged":12,"answered7d":15,"activity":85},{"week":"2025-12-07","opened":12,"merged":7,"answered7d":9,"activity":31},{"week":"2025-12-14","opened":15,"merged":7,"answered7d":7,"activity":42},{"week":"2025-12-21","opened":10,"merged":8,"answered7d":0,"activity":12},{"week":"2025-12-28","opened":1,"merged":1,"answered7d":1,"activity":23},{"week":"2026-01-04","opened":21,"merged":11,"answered7d":16,"activity":36},{"week":"2026-01-11","opened":16,"merged":10,"answered7d":14,"activity":51},{"week":"2026-01-18","opened":23,"merged":16,"answered7d":18,"activity":82},{"week":"2026-01-25","opened":19,"merged":13,"answered7d":15,"activity":41},{"week":"2026-02-01","opened":18,"merged":12,"answered7d":9,"activity":149},{"week":"2026-02-08","opened":30,"merged":23,"answered7d":20,"activity":83},{"week":"2026-02-15","opened":17,"merged":13,"answered7d":13,"activity":48},{"week":"2026-02-22","opened":45,"merged":25,"answered7d":38,"activity":114},{"week":"2026-03-01","opened":23,"merged":16,"answered7d":17,"activity":94},{"week":"2026-03-08","opened":12,"merged":1,"answered7d":5,"activity":40},{"week":"2026-03-15","opened":17,"merged":11,"answered7d":11,"activity":68},{"week":"2026-03-22","opened":19,"merged":14,"answered7d":17,"activity":55},{"week":"2026-03-29","opened":8,"merged":7,"answered7d":6,"activity":56},{"week":"2026-04-05","opened":7,"merged":6,"answered7d":6,"activity":83},{"week":"2026-04-12","opened":10,"merged":10,"answered7d":10,"activity":70},{"week":"2026-04-19","opened":4,"merged":4,"answered7d":4,"activity":51},{"week":"2026-04-26","opened":2,"merged":2,"answered7d":2,"activity":122},{"week":"2026-05-03","opened":11,"merged":11,"answered7d":10,"activity":109},{"week":"2026-05-10","opened":3,"merged":2,"answered7d":3,"activity":50},{"week":"2026-05-17","opened":6,"merged":6,"answered7d":6,"activity":86},{"week":"2026-05-24","opened":12,"merged":10,"answered7d":10,"activity":52},{"week":"2026-05-31","opened":17,"merged":16,"answered7d":17,"activity":79},{"week":"2026-06-07","opened":16,"merged":11,"answered7d":9,"activity":58},{"week":"2026-06-14","opened":14,"merged":13,"answered7d":12,"activity":64},{"week":"2026-06-21","opened":15,"merged":13,"answered7d":15,"activity":79},{"week":"2026-06-28","opened":21,"merged":20,"answered7d":20,"activity":165},{"week":"2026-07-05","opened":10,"merged":8,"answered7d":9,"activity":143},{"week":"2026-07-12","opened":6,"merged":4,"answered7d":3,"activity":63},{"week":"2026-07-19","opened":15,"merged":10,"answered7d":13,"activity":71},{"week":"2026-07-26","opened":49,"merged":37,"answered7d":40,"activity":204},{"week":"2026-08-02","opened":28,"merged":25,"answered7d":28,"activity":106},{"week":"2026-08-09","opened":20,"merged":16,"answered7d":18,"activity":71},{"week":"2026-08-16","opened":36,"merged":30,"answered7d":33,"activity":90},{"week":"2026-08-23","opened":27,"merged":25,"answered7d":23,"activity":111},{"week":"2026-08-30","opened":27,"merged":14,"answered7d":18,"activity":144},{"week":"2026-09-06","opened":21,"merged":15,"answered7d":17,"activity":142},{"week":"2026-09-13","opened":28,"merged":21,"answered7d":24,"activity":153},{"week":"2026-09-20","opened":40,"merged":28,"answered7d":36,"activity":169},{"week":"2026-09-27","opened":31,"merged":21,"answered7d":24,"activity":110},{"week":"2026-10-04","opened":29,"merged":12,"answered7d":18,"activity":100}],"trend":{"flag":"steady","recentMedianHours":18.306944444444444,"previousMedianHours":14.706666666666667,"recentN":128,"previousN":111,"openedThisWeek":29,"openedLastWeek":31},"programs":[{"program":"gsoc","slug":"open-food-facts","name":"Open Food Facts","years":[2025,2026]}]}