• hackweek january 2022


    It’s time for the next foodsharing Hackweek!

    Because of the Corona measures, we’ll be meeting online.

    When - April 25th to May 3rd, 2020

    Where - Online: Jitsi, Slack, Mumble…

    We will discuss, program, give lectures to each other, and make foodsharing better together.

    You can also participate for a few hours, it is worth it regardless of your own technical knowledge. The Hackweek is for both supporters and developers.

    Let’s do this. Matthias and Tilmann in a former Hackweek

    Read more →
  • Today's outage: post mortem

    this is a quite technical walkthrough of the process of finding the cause of todays outage. It is targeted to other server admins, so that we can learn from each other.


    It’s 9 o’clock in the morning, I got my porrige and a coffee ☕, ready to watch the tagesschau, but my laptop prompted me with “foodsharing is down!!1!1!” instead.
    dammit! but okedoki -> $ ssh dragonfruit.foodsharing.de

    First step always if we get an 502 Bad Gateway error: what does nginx say?
    $ tail -F /var/log/nginx/error.log

    2021/03/30 06:40:12 [error] 1625#1625: *914973060 connect() to unix:/var/run/php7-fpm-production.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2003:*****:29bd, server: dragonfruit.foodsharing.de, request: "GET /api/stores/31605/pickups HTTP/2.0", upstream: "fastcgi://unix:/var/run/php7-fpm-production.sock:", host: "foodsharing.de", referrer: "https://foodsharing.de/?page=fsbetrieb&id=31605"

    seems like php-fpm is down/unresponsive. After a restart it might work again, but lets have a look into the logs first to find out what causes the issue. but in non of the following sources yielded any hints

    • journalctl -ef -u php7.4-fpm
    • /var/log/php7.4-fpm.log
    • /var/www/production/log/php-error.log

    okay, let’s restart php-fpm: $ systemctl restart php7.4-fpm


    it works again! …. for a while… and then requests take forever … and then 502 errors again. Seems like something builds up. In which limits do we run here? Some research on that nginx error yields, that we might have too many sockets open. so lets temporary increase all limits we find, to see whether it changes something:

    • $ sysctl -w net.core.somaxconn=60000
    • $ sysctl -w net.core.netdev_max_backlog=60000
    • listen.backlog in /etc/php/7.4/fpm/pool.d/production.conf

    After another $ systemctl restart php7.4-fpm I had the feeling, that it might worked now a little bit longer, before we got the same error again.

    Loops of playing with more settings and restarting didn’t lead to more information.

    I already thought, that there could be an issue in the php code, but I deactivated already the beta ($ touch /var/www/beta/current/maintenance_mode_on) and there haven’t been any recent changes to production. Oke, but maybe there is really something somehow running long, stacking up open requests?


    After activating the slow log (request_slowlog_timeout = 5s in /etc/php/7.4/fpm/pool.d/production.conf), there are a lot of entries in /var/www/production/log/php-slow.log like

    [30-Mar-2021 10:32:08]  [pool production] pid 24884
    script_filename = /var/www/production/current/restApi.php
    [0x00007fae4ec14ef0] curl_exec() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php:40
    [0x00007fae4ec14e50] __invoke() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php:28
    [0x00007fae4ec14da0] GuzzleHttp\Handler\{closure}() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php:51
    [0x00007fae4ec14d00] GuzzleHttp\Handler\{closure}() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php:66
    [0x00007fae4ec14c20] __invoke() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Middleware.php:29
    [0x00007fae4ec14b70] GuzzleHttp\{closure}() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php:70
    [0x00007fae4ec14ad0] __invoke() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Middleware.php:59
    [0x00007fae4ec14a40] GuzzleHttp\{closure}() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/HandlerStack.php:71
    [0x00007fae4ec149b0] __invoke() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Client.php:351
    [0x00007fae4ec148a0] transfer() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Client.php:162
    [0x00007fae4ec147c0] requestAsync() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Client.php:182
    [0x00007fae4ec14730] request() /var/www/production/releases/42/vendor/guzzlehttp/guzzle/src/Client.php:95
    [0x00007fae4ec14660] __call() /var/www/production/releases/42/src/Lib/WebSocketConnection.php:28
    [0x00007fae4ec145d0] post() /var/www/production/releases/42/src/Lib/WebSocketConnection.php:37
    [0x00007fae4ec14510] sendSock() /var/www/production/releases/42/src/Modules/Bell/BellGateway.php:218
    [0x00007fae4ec144a0] updateFoodsaverClient() /var/www/production/releases/42/src/Modules/Bell/BellGateway.php:181
    [0x00007fae4ec14400] delBellForFoodsaver() /var/www/production/releases/42/src/RestApi/BellRestController.php:105
    [0x00007fae4ec14360] deleteBellAction() /var/www/production/releases/42/vendor/symfony/http-kernel/HttpKernel.php:157
    [0x00007fae4ec14280] handleRaw() /var/www/production/releases/42/vendor/symfony/http-kernel/HttpKernel.php:79
    [0x00007fae4ec141d0] handle() /var/www/production/releases/42/vendor/symfony/http-kernel/Kernel.php:195

    aaah, apparently the calls to our websocket chatserver take ages.

    let’s deactivate them for now in src/Lib/WebSocketConnection.php, and tada🎉 foodsharing.de runs smoothly again!

    Manual request confirmes that the request runs forever: curl -v


    a look into its log yields

    $ journalctl -efu fs-chatserver
     error: Error: This socket has been ended by the other party                                                                                                            
         at Socket.writeAfterFIN [as write] (net.js:455:14)                                                                                                                 
         at /var/www/production/releases/31/chat/node_modules/tedis/build/core/base.js:83:26                                                                                
         at new Promise (<anonymous>)
         at Tedis.Base.command (/var/www/production/releases/31/chat/node_modules/tedis/build/core/base.js:78:16)                                                           
         at SessionIdProvider.fetchSessionIdsForUser (/var/www/production/releases/31/chat/src/SessionIdProvider.ts:24:43)                                                  
         at runMicrotasks (<anonymous>)
         at processTicksAndRejections (internal/process/task_queues.js:97:5)                                                                                                
         at RestController.userIsConnected (/var/www/production/releases/31/chat/src/RestController.ts:26:28) {                                                             
       code: 'EPIPE'

    okay, lets debug this! whats happening in /var/www/production/releases/31/chat/src/SessionIdProvider.ts? wait the file doesn’t exist? we are already at release 42, but the chat server still runs on 31!

    Apparently it might be a known bug of tedis, the redis js library we use: https://github.com/silkjs/tedis/issues/49

    because I had no idea, how to analyze the state further and the error might be already solved in the newest release: I did a systemctl restart fs-chatserver and the chatserver responses properly.

    … at least for now. But that the tedis bug led to foodsharing.de being down included a chain of issues we should solve soon:


    the combination of each single issue was causing the outage.

    additionally findings

    Thanks to ansible, cleaning up all the mess due to the fiddling with settings is quite an easy task, but I will rather run the playbook tonight - who knows what unexpected side effects it will have :D

    Read more →
  • Hackweekend Autumn 2020 Review

    Blog post about the Hackweekend August 2020 - a review

    Read more →
  • Was in der letzten Zeit geschah... Hotfix, neue Teamliste, Internationalisierung


    There was a hotfix in June which solved multiple problems. Some of these were introduced in the last release or were longer lasting, pressuring issues.

    We are sending quite a few emails compared to our sending frequency, thus it takes some time until they arrive. This does not only affect emails for notifications but also for registration and password changes. There were many requests for the support asking why the expected email wouldn’t arrive. The priority of these emails was changed, such that they will be sent before other kinds of emails.

    If an email can’t be delivered, the corresponted adress gets added to a bounce list. We do not sent emails to these adresses. They now get a warning on their profile for being on the list with an explanation how to remove their adress from the list. There is also a more explicit explanation about the problem from the support in this article in German.

    There was a bug which saved a false gender when registrating. This is fixed now.

    New Team List

    There is a new team list in progress for the stores. It is implementend in Vue.js. Thereby is list is now much more mobile friendly. If you clicked on a person in the list before on a smartphone, their number was dialed. If you wanted to use any other option like viewing their profile, you had to go back to the browser.

    Furthermore are now those responsible for the store always on top of the list, even if they have a sleeping hat on. Thus they are found much faster now.

    Moreover it is not marked anymore if a person was or is an ambassador for a region anymore. Before the same color was used for both. Such labels can also reinforce hierarchies, even though they should not be important in that context.


    We have the first translations to English!

    Before, there was a DIY system to embed texts in the foodsharing website. Now we follow standards, such that it is easier for new developers to start and it will be less effort to implement a language switch.

    This means in more technical details that our project was adapted to the Symfony structure further. This includes a session variable in which the current language is saved and the file naming convention from Symfony. Thus we do not need our own translation helper and validation anymore, but can use Symfony directly.

    The old translations are changed ongoingly.

    Read more →
  • Hackweek Frühling 2020 Rückblick

    Blog post about the Hackweek May 2020 - a review

    [Felix] Before Hackweek, I wasn’t sure if I was going to participate, so unfortunately I didn’t engage in the preparation. This preparation started quite slow, but in the time before the Hackweek the program filled up with topics and initiated sessions. For me as a still-newcomer these gave the opportunity to listen, ask questions and learn.

    [Kristijan] The Hackweek is a joyful event for me to experience many of the active people live. Unfortunately Corona made this difficult. So it was all the more pleasant that there was an “online Hackweek”. Sessions were held in videoconferences, so at least we could see each other and contributed to a group feeling and a “we”. A nice and productive atmosphere was created and it was valuable to get feedback and new ideas for implementation. There were also funny sessions on actually serious topics, which made us loosen up.

    [Caluera] In the Hackweek we got a lot done, especially things that would otherwise get lost in everyday life. We also talked a lot about structures and made plans how we will deal with some topics.

    [moffer] The Hackweek has made a lot of progress, for me especially social aspects: Talking live with some people you only deal with through Gitlab or Slack. I also found the whole atmosphere positive. There was a lot of discussion, so there wasn’t much time for hacking - unfortunately for me the time was limited. However, I can imagine that such an online format could take place more often, since the orga effort (and possibly financial expenditure) is manageable. I would welcome that.

    [Chris] I was particularly enthusiastic about the sense of community despite the physical distance :) All in all, many exciting insights into very different areas, productive discussions and a user-oriented exchange, plus a flexible organization with more structure exactly where it was needed - I would definitely be happy about a continuation soon and hope for many new faces as well.
    So, you readers out there: next time, just drop in without obligation, drop by at some of the sessions and maybe get directly involved. Hackweeks are a great opportunity to get to know the team and the way they work - also and especially if you don’t do any programming yourself!

    Read more →
  • hackweek spring 2020

    ​ ​ ​

    It’s time for the next foodsharing Hackweek!

    Because of the Corona measures, we’ll be meeting online.

    When - April 25th to May 3rd, 2020

    Where - Online: Jitsi, Slack, Mumble…

    We will discuss, program, give lectures to each other, and make foodsharing better together.

    You can also participate for a few hours, it is worth it regardless of your own technical knowledge. The Hackweek is for both supporters and developers.

    Let’s do this. Matthias and Tilmann in a former Hackweek

    Read more →
  • Programmers at work in the Pott

    ​ ​ ​ On 15.02.2020, a few people from the foodsharing IT department met in Bochum to continue working on the foodsharing website. Here are reports from some of the people present: ​

    Read more →
  • Intermediate status of the Android App

    project objective

    We had considered that we needed an app to improve the manageability of food baskets for all users of www.foodsharing.de In the long run, all foodsaver functions will be built on this basis without replacing the website. Advantages of a smartphone app are the “sensors” that come with it, such as camera, GPS and positioning. We have yet to focus on the development of the Apple (iOS) App.

    This is what the chat currently looks like

    Read more →
  • foodsharing is finally Open Source!

    foodsharing is finally Open Source!

    What does that actually mean?

    This means that our basic principle for food (of saving and sharing) is now applied to the platform itself. Anyone can now view, download and modify the foodsharing code in the GitLab repository. But don’t worry, it’s always about a copy of our site and if someone plays around with the foodsharing code at home, it has no direct effect on what happens on foodsharing.de. On the other hand, it is not difficult to actually make changes to our homepage. To do this, the changes made at home simply have to be sent back to the source and updated together with our development team. Maybe you start by correcting a spelling mistake; maybe a new community comes along and starts with the complete translation into another language. The code is now open to everyone and change suggestions can be uploaded at any time.

    Most importantly, we’re now sure that our beautiful project won’t go to waste behind closed doors, but can be freely shared - and that’s what foodsharing is all about.

    But that’s not all: As an open source project, we have new opportunities to be supported, because all the programming we do now is obviously charitable. First of all this will pay off for the developers themselves, as we will apply for open source licenses for ‚helpful programs that make the development work easier‘. In the longer term, however, we can also apply for funding that is available for open source projects.

    The Hackweek in Wurzen was great! There even was a small celebration to celebrate Open Sourcing. For more detailed information about what’s going on in the development team, have a look at this detailed changelog entry.

    Wanna join and collaborate?

    Are you thinking about joining the volunteer team in their work with diverse tasks? Are you interested to try new things?
    Here you can find our Devdocs with some of the tasks we need support for.

    Read more →
  • Serverumzug

    Den Beginn des Pfingstwochenendes haben sich Chandi und ich ausgesucht, um uns allen die Freude an der Benutzung der foodsharing-Plattform zurückzuholen: Wir ziehen auf einen schnelleren Server um. Die Geschichte dazu möchte ich euch an dieser Stelle erzählen. Dieser Beitrag entsteht während des Umzugs - einerseits in Prokrastinationspausen, andererseits in Zwangspausen, während ich auf irgendetwas warten muss :-)

    Was viele vielleicht nicht wissen, ist, dass der Kern der foodsharing-Entwickler die Plattform nur sehr sporadisch nutzt. So kam es vor zwei Wochen, dass ich mal wieder auf foodsharing.de gegangen bin, um nachzuschauen, ob ein Bug dort bereits vorhanden war und ich mich dabei ziemlich genervt davon gefühlt habe, dass die Plattform extrem langsam ist. Wir wussten eigentlich schon, dass wir so langsam ziemlich am Limit unseres Servers sind, aber es selbst zu spüren, ist nochmal was anderes.

    Kurzerhand habe ich mich daraufhin freundlich und zurückhaltend an unseren Server-Sponsor Manitu gewendet und nachgefragt, ob wir - u. U. auch mit Zuzahlung einer kleinen Summe - einen schnelleren Server bekommen können, da sich unsere Nutzerzahlen aber auch die Komplexität unserer Anwendung stetig weiterentwickeln.

    Die Antwort kam nach wenigen Stunden vom Chef persönlich: Sehr gerne wird foodsharing weiter unterstützt. Ein Mitarbeiter schaut zeitnah mal, was sie uns aus dem Reste-Pool anbieten können. Meine Freude - und auch die im weiteren Team, mit dem ich die Nachricht schnell geteilt habe - war groß. Zwar wussten wir, dass wir mit Manitu als inhabergeführtem Unternehmen “Von Menschen für Menschen” einen guten Partner an der Hand haben, aber es ist wundervoll, auch nach so vielen Jahren weiterhin so eine Unterstützung und positive Kommunikation zu erfahren.

    Read more →
  • Summer Hackweek

    We held our second dedicated foodsharing hackweek at the start of July. The location was the same as our previous hackweek, in the lovely Kanthaus project.

    Again, we were mostly the regular people (Matthias, Tilmann, and me), but Chandi also joined again with a pleasing burst of motivation, and we had a new contributor, Theo, come down from Berlin for a few days.

    We got some really good things done, including:

    • getting all site JavaScript moved over to the new webpack environment
    • creating the first VueJS component
    • adding the first RESTful API endpoint
    • removing one whole layer of the database hierarchy
    • a shiny new and sleek README.md page

    Matthias and Tilmann ponder for a while

    Theo Symfony-wrangling in vim

    Read more →
  • New issue tracker

    Issue tracker now in foodsharing project

    Peter noticed, that gitlab supports private code with public issues. So here we go, we switched our foodsharing project to public and restricted the code access to accepted members.

    Please use the issue tracker inside now.

    Read more →
  • February Hackweek

    Last week we finished our first ever dedicated foodsharing.de hackweek!

    We tried out the new week long format last September at our foodsaving worldwide hackweek and found it gave us more time to focus on more substantial/abstract/architectural changes.

    We were a small team - with me, Matthias, and Tilmann focused for the whole duration, with shorter visits from other people:

    • Kristijan came and implemented the new communities overview pages with our new contributor Basti
    • Jörg came to meet the dev team and have some discussions about data protection topics
    • Chandi came and implemented a more secure password hashing algorithm (using Argon2i).
    • Basti came and fixed some requested issues like not listing the work groups on the details page reachable through the team page.

    Tilmann, Nick, and Matthias discussing some of the finer points of PHP

    Matthias, Chandi, Kristijan, and Tilmann in the repurposed silent working office at kanthaus

    Read more →
  • Switching to Deployer for Zero-Downtime-Deployments

    Dear readers,

    As we are progressing with the refactoring of foodsharing.de, we are creating the need for more management tasks to be executed at deploy time. For now, these are:

    • Invalidating template cache
    • Invalidating Dependency Injection container cache
    • Install/update external php packages via composer

    This is leading to a more and more inacceptable behaviour:

    Errors during deployment

    Read more →
  • E-Mail-Problematik bei foodsharing.de

    — UPDATE: Greensta continues to support us as before and we are not necessarily looking for a new solution here. If you’re still interested in helping out in this area, feel free to read more about what we do and then just get in touch via Slack on the #foodsharing-dev channel

    What’s going on with the emails at foodsharing?

    Well, we want to send about 1 million of them a month. That’s not so easy.

    Read more →
  • Was kann ich als foodsharing.de Beta-Tester tun?

    Schön, dass du die foodsharing.de Entwicklung als Beta-Tester unterstützen magst! Damit du das sinnvoll tun kannst, lass mich dir kurz davon erzählen, wie die Entwicklung arbeitet:

    Es gibt ein kleines Team von Entwicklern, welche in ihrer Freizeit mal mehr und mal weniger an der Entwicklung teilhaben. Die Entwickler versuchen einerseits, Fehler zu beheben und sind andererseits dabei, den Code so umzustrukturieren, damit er leichter les- und bearbeitbar ist. Zudem haben sie manchmal auch eine gute Idee, wie ihre eigene Arbeit (oder die von anderen) auf der Plattform vereinfacht werden kann. Diese setzen sie dann manchmal um, oder auch nicht (Dies nennt sich “Feature”). Dann gibt es die Kommunikation mit Nutzern der Plattform oder administrativen Stellen wie z.B. dem Vorstand: Von all diesen Stellen kommen viele viele Anfragen, die aufgrund gemachter Annahmen oder enthaltener Informationen in der Regel nicht attraktiv für Entwickler zu bearbeiten sind. Deshalb werden sie meistens einfach ignoriert. Wenn pro Woche in der Summe 30 Stunden in die Entwicklung von foodsharing.de investiert werden (1-20 Stunden pro Person), wird davon einiges für interne Kommunikation benötigt. Die reine Entwicklungszeit beträgt nurnoch wenige Stunden pro Woche. Soll davon nun auch noch etwas zur individuellen Kommunikation nach außen benutzt werden, so würden wir beim Stillstand ankommen.

    Read more →
  • 2017-10-18 Release notes

    Our first release using the new approach, yay!

    This release contains some important structural improvements, perhaps most significantly, we are now using composer for dependencies where possible, and running on php7.

    There are also a good number of smaller, but visible changes to the site, mostly bugfixes, but a few new features too.

    Many many thanks to all the contributors that made this possible (in order of appearance in the changelog):

    Nick and Matthias deploying the new release

    Read more →
  • We need your help!

    A nice agency has created a campaign for foodsharing which means we can spread the message about food waste prevention via social media, posters, and bags! How cool!

    The problem is that the campaign will not really explain the whole concept of foodsharing, but just direct people to the homepage, which currently is really lacking a general overview of how it all works.

    We actually have a new homepage concept ready, but the task is to incorporate it into the existing foodsharing.de homepage.

    Read more →
  • New contributor notes

    Hi there, new interested developer. This post should help you to get started in foodsharing development and answer your most urgent questions :-)

    For general participation in development, please join our slack channel #foodsharing-dev on the yunity slack.

    Read more →
  • A Plan?

    I started getting involved in the foodsharing software last October, I originally wrote: For now the task is breathe life into the development again.

    It has been progressing at a pretty glacial pace since then (but progress is progress right?) but recently there has been more interest in finding a clearer way forward from here. I get the feeling people are thinking the software is a lost cause by now.

    Personally, my frustration has increased as I see a ever growing list of issues in gitlab, not much clarity around switching to laravel, what to do with foodsharing light, how to progress open sourcing… etc.

    For some reason unknown to me, I cannot bear to give up!

    Read more →
  • Foodsharing-Development Infomail

    Wie sieht es mit der Weiterentwicklung von foodsharing.de aus? Wer ist denn aktuell daran beteiligt?

    Zunächst einmal als Übersicht eine Liste von Menschen, die aktuell an der Foodsharing.de-Entwicklung beteiligt sind.

    Read more →
  • Easter foodsharing hackathon

    The dust has just settled from our small hackathon this weekend.

    We welcomed the return of the original developer of foodsharing.de Raphael Wintrich having successfully applied for prototypefund.de funding. The rest of the small team being me and Matthias Larisch.

    Raphael and Matthias stare at a computer screen

    It’s no secret that development progress has been slow and we all sometimes wonder why we continue on the project, especially when we realised none of us actually use the website ;)

    However, the motivation to hold a hackathon came from Raphaels return to the project and my return to Berlin after some months travelling. I am still fully convinced this is a great platform, with a great community behind it, and without a doubt deserves more attention from the developer community.

    Read more →
  • New Year Progress Review

    We have a new year now and seems a good time for a little review of progress.

    Watching our attempt to kickstart the development of foodsharing.de has been fascinating for me. This stuff is tricky, and there is no guarantee of success.

    The starting premise was that the project is very worthwhile with a great community of foodsavers and there are no viable alternative software platforms. It’s too good to abandon!

    We achieved some key things:

    • docker based development environment setup
    • tests
    • CI system to build/test on each push
    • a clearer path for contributors to join (slack channel, public gitlab group)
    • new contributors
    • 45 closed issues
    • 82 merged merge requests

    Right now though, development has slowed again. This is OK, projects move in many cycles of rise and fall. If we give up as soon as things get tricky we cannot achieve much.

    Lets dig into some of the difficulties…

    Read more →
  • Wiki, Mumble und Mediendatenbank auf neuem Server

    Good evening, dear blog readers!

    For a few months now, we still had a server available on which Kristijan wanted to make some Wiki tests for the internationalization. But it wasn’t used in the end and therefore available for rescue.

    Read more →
  • How and why does foodsharing.de development continue?

    A lot of you may be asking yourselves, why was it anounced that there is no more development on the foodsharing platform when it is now continuing? Why is development on foodsharing even continuing, although there was this yunity project trying to provide a replacement platform? And then there is sharecy as well?

    Let me start with some words about me. I got to know foodsharing (then still lebensmittelretten.de) because I was seeing an ex-girlfriend interested on some foodsharing hamburg event in august 2014. Being a vegan for about a year, I was quickly fascinated of the idea of saving food and interacting with similar-minded people in the area, so I got into contact with Raphael Wintrich, the one who programmed the whole platform alone, at approximately the same time when I got my first foodsaver ID card.

    Read more →
  • Devblog now served via https/letsencrypt

    As we are still in the process of getting our tools and environment set up, this is a nice opportunity for me to as well look into gitlab CI and this blog system.

    If you may not have noticed, this blog is maintained in a gitlab repository , runs on the Jekyll static site generator and is written in markdown.

    Read more →
  • Introducing the foodsharing dev blog

    A lot has been happening with foodsharing development lately and we’d love to share it more widely and publicly now.

    We write from our developer perspective, so it will get technical at times, but should hopefully be interesting for anyone involved with foodsharing.

    Read more →