[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"doc-\u002Fabout\u002Fcontributing":3},{"id":4,"title":5,"body":6,"description":204,"edit":205,"extension":206,"meta":207,"navigation":208,"path":209,"seo":210,"stem":211,"vertical":205,"weight":212,"__hash__":213},"content\u002Fabout\u002Fcontributing.md","How to contribute",{"type":7,"value":8,"toc":193},"minimark",[9,19,24,69,73,87,95,99,134,138,146,150,158,172,176,179,190],[10,11,12,13,18],"p",{},"OpenSense is not open-source today (see\n",[14,15,17],"a",{"href":16},"\u002Fabout\u002Fself-hosted","self-hosted","), but parts of it are. This page\ndescribes how to contribute usefully.",[20,21,23],"h2",{"id":22},"whats-open-today","What's open today",[25,26,27,52,63],"ul",{},[28,29,30,34,35],"li",{},[31,32,33],"strong",{},"This documentation site."," The markdown source is in the\nOpenSense docs repo (GitHub URL pending — will be linked from\nthe footer of every page once the repo opens). PRs welcome for:\n",[25,36,37,40,43,46,49],{},[28,38,39],{},"Typos and grammar.",[28,41,42],{},"Translations into your language.",[28,44,45],{},"Corrections of regulatory facts (cite a source).",[28,47,48],{},"New hardware compatibility entries.",[28,50,51],{},"New troubleshooting cases (\"here is what I tripped over\").",[28,53,54,57,58,62],{},[31,55,56],{},"Hardware decoders and ESPHome YAML snippets."," The ",[59,60,61],"code",{},"decoders\u002F","\nsubfolder of the docs repo accepts LoRaWAN payload decoders,\nESPHome configs, MQTT bridge configs, etc. Send a PR with one\nfile per device, with a small README.",[28,64,65,68],{},[31,66,67],{},"Code Connect mappings"," between docs pages and dashboard\nfeatures. Useful once the dashboard is publicly browsable.",[20,70,72],{"id":71},"what-is-not-yet-open","What is not yet open",[25,74,75,78,81,84],{},[28,76,77],{},"The dashboard app.",[28,79,80],{},"The ingest service.",[28,82,83],{},"The rule engine.",[28,85,86],{},"The PDF rendering service.",[10,88,89,90,94],{},"These will open under a source-available licence in 2027 (see the\n",[14,91,93],{"href":92},"\u002Fabout\u002Froadmap","roadmap",").",[20,96,98],{"id":97},"how-to-file-a-bug","How to file a bug",[25,100,101,104,119],{},[28,102,103],{},"For a UI bug, include the URL, what you did, what you expected,\nwhat happened.",[28,105,106,107,110,111,114,115,118],{},"For a data bug, include the affected ",[59,108,109],{},"device_id"," \u002F ",[59,112,113],{},"channel_id"," \u002F\nevent ",[59,116,117],{},"id",". We will look up the server logs by request id.",[28,120,121,122,125,126,129,130,133],{},"For a security bug, ",[31,123,124],{},"do not file publicly",". Email\n",[59,127,128],{},"grande.chuvash@gmail.com"," with the subject prefixed\n",[59,131,132],{},"SECURITY:",". We will respond within 24 hours and disclose\nresponsibly.",[20,135,137],{"id":136},"how-to-ask-for-a-feature","How to ask for a feature",[25,139,140,143],{},[28,141,142],{},"Email or open an issue. Describe the operator situation. Do not\ndescribe the implementation; let us pick that.",[28,144,145],{},"Specifically what helps: \"the auditor asked X, I had to do Y by\nhand\". Specifically what does not: \"could you add a button that\ndoes X\".",[20,147,149],{"id":148},"how-we-make-decisions","How we make decisions",[10,151,152,153,157],{},"See ",[14,154,156],{"href":155},"\u002Fabout\u002Fprinciples","principles",". In short:",[25,159,160,163,166,169],{},[28,161,162],{},"Real, repeating customer pain → on the list.",[28,164,165],{},"Edge case requested by one customer → unlikely unless it is a\ncompliance issue.",[28,167,168],{},"Feature parity with $competitor → unlikely.",[28,170,171],{},"Speculative platform feature → unlikely.",[20,173,175],{"id":174},"acknowledgements","Acknowledgements",[10,177,178],{},"Several people have already contributed in the pilot phase:",[25,180,181,184,187],{},[28,182,183],{},"The Slovak ŠVPS inspector who walked through a mock audit with\nus before we shipped the HACCP report template.",[28,185,186],{},"Bratislava-based café owners who let us put sensors in their\nfridges and complained about every false alarm we cooked up.",[28,188,189],{},"The TTN community for hosting the LoRaWAN gateways we used to\nvalidate Efento integrations.",[10,191,192],{},"The product is better for the early feedback. Thank you.",{"title":194,"searchDepth":195,"depth":195,"links":196},"",3,[197,199,200,201,202,203],{"id":22,"depth":198,"text":23},2,{"id":71,"depth":198,"text":72},{"id":97,"depth":198,"text":98},{"id":136,"depth":198,"text":137},{"id":148,"depth":198,"text":149},{"id":174,"depth":198,"text":175},"Bug reports, doc fixes, hardware tests",null,"md",{},true,"\u002Fabout\u002Fcontributing",{"title":5,"description":204},"about\u002Fcontributing",995,"i4UGvu2lzX02H1h1Pmt0mM9OF5jnYw5KiyUiPThO5lo",1779022956614]