It’s a classic libre software contributor story: Someone uses a tool, and adds to it a missing feature they want. Nextcloud contributor Bernhard Posselt got started this way and became a central member of the Nextcloud community.
He is based in Austria, studied Software Engineering, programs mostly in Java (Spring), and tries to find time to learn Haskell and Rust. Next step: Diving into Idris.
Like many, the first libre software he remembers using is Firefox. Later, Beryl (renamed Compiz) got him interested in Linux, before Windows Vista slowdowns fully pushed him over the edge: “Been toying with it for a bit and migrated fully after my new 2000€ Sony Vaio Laptop proved unable to run Vista at appropriate speeds”, he said.
The last step from user to libre software contributor was a small one for Bernhard: “I think it was sometime back in 2010 and 2011, when I wanted to migrate away from Google. I ran ownCloud for calendar and contact sync, but a decent RSS reader was missing. I took to IRC to complain about it in their channel, took a look at the linked repo, made changes, sent way too many pull requests, and got rewarded push access.”
News Reader
Like many libre software contributors, Bernhard got started as a student. At the time working on the Nextcloud News app as a student, to then take over development of the app as a volunteer for ownCloud a few months later. As a perfectionist, he quickly felt like the development model of, (in his own words) «writing templates with back-end code sprinkled in between», made proper testing harder than it needed to be. Eventually a solution was found: “I started working on a basic dependency injection container, middleware, database layer and controllers, later integrated into ownCloud. I know, don’t reinvent the wheel, but Symfony was not trivial to integrate and would have broken things in its way.”
When asked about the most challenging aspects of his work on the Nextcloud App, Bernhard retorts unexpectedly. Communicating with users is something that cost him a lot of time and effort. “Communication over text is by far the biggest challenge, followed by the tech stack. The app itself is pretty popular so there are a lot of feature requests. I rejected a high number of them because they are out of scope (e.g. Twitter API integration, a Yahoo Pipelines like way to filter feeds). It is very hard to communicate via text only. You get several essays into explaining why feature X won’t be implemented in avoiding hurting feelings of ideas rejected. They also put work into writing the issue, so that’s understandable.”
A lesson learnt: Asking of a single volunteer contributor to implement many features can overwhelm. “Adding features actually makes it harder to change or improve an app. You have very strictly consider implementation, and shove off as much as you can into third party additions. People are very lazy, yet very demanding. Many feature requests fit the bill of being solved using the well documented plugin API. Ultimately no one did anything with it, not even ask questions. I know not everyone is a developer, but somehow that failed.”
Joining Nextcloud
He joined the inception of Nextcloud, mostly due to being uncomfortable with ownCloud’s business model. “It was widely known that ownCloud was funded by venture capital. These guys usually don’t think long term, and cash out after a few years once growth declines, selling their shares to the highest bidder. Worst case scenario the new owner would have gone fully closed source, or crippled the libre software version. We all know what happened when Sun was bought by Oracle.”
Unfortunately, Bernhard’s migration wasn’t as peaceful as one could wish: “I got various angry messages on IRC telling me that I wasn’t allowed to move the repo since it belonged to ownCloud Inc. asking me to take down my ‘Nextcloud News’ titled app from the ownCloud store. I realized then that Nextcloud could very likely be cut off from the store altogether”. To the contrary, this contributed to his motivation to join Nextcloud, where he made his presence felt by building the missing store he was kicked out of: «I prototyped something that worked in a few days with Django, and got the basic store up and running in a month.”
Focus
Now in a very demanding job, and sporting two small kids, he has less leftover time for contributions. Still he does his best to keep active in the community. Wishes for the future: “Currently the server does not yet support nightly channels, making it harder to get quick feedback. The Cron system has a few race conditions sometimes preventing the feed update from running after an upgrade. Sometimes I’m wondering if people think about error handling at all. As for distributing things over the App Store: Things should be «easy enough» to get going. The certificate is obviously a bit of a hurdle, but well documented and in hindsight a good decision.”
Having brought countless improvements to Nextcloud – he then helped update outdated developer documentation, and added an app scaffolding tool (ocdev) now integrated into the store – Bernhard now focuses on what he considers the most essential part of his contribution: “Since my time is now very limited, I unfortunately had to give up working on the News app and only maintain the store. If you want to see further development being done on News, please drop by our issue tracker.”
Join us for an exciting weekend of coding, design, discussions, talks, and fun! Connect with the global Nextcloud Contributor Community and be part of shaping the future of Nextcloud.
See you in Berlin, Germany! 💙
Guardamos algunas cookies para contar los visitantes y facilitar el uso del sitio. Esto no sale de nuestro servidor y no es para rastrearte personalmente. Consulta nuestra política de privacidad para obtener más información. Personalización
Las cookies estadísticas recopilan información de forma anónima y nos ayudan a comprender cómo utilizan nuestro sitio web nuestros visitantes. Utilizamos Matomo alojado en la nube.
Matomo
_pk_ses*: Cuenta la primera visita del usuario
_pk_id*: Ayuda a no contar dos veces las visitas.
mtm_cookie_consent: Recuerda que el usuario ha dado su consentimiento para almacenar y utilizar cookies.
_pk_ses*: 30 minutos
_pk_id*: 28 días
mtm_cookie_consent: 30 días