Similar to what the Rust community is doing with #Rust2018 right now, I’d like to write down my personal Nextcloud goals for 2018.
Stabilize and extend Mail
Last year I primarily worked on the Mail app. While we’ve achieved a lot, there are still some missing feature you would expect from a mail application. The app has become more stable, IMO due to a stronger focus on writing automated tests, both for the back-end and the front-end.
My goal is to continue this direction and make Mail a well-integrated, stable and general-purpose email client for Nextcloud.
In 2017, I started to develop a little CLI helper to help me with managing, signing and publishing of Nextcloud apps. As it has shown to be very helpful to me and a few others, I’ll continue my effort on improving the Nextcloud app maintenance experience.
That means I’ll try to add automated GitHub release uploads that push the app archive as an GitHub release asset and thus eliminates the only remaining manual step in the process of publishing an app release with Krankerl.
Furthermore, I’d like to add a few checks that verify that the app is valid, like running a XML
schema validation check for the
Help others write high-quality apps
Developing and maintaining several apps has taught me a lot about the ups and downs of Nextcloud app development. To help other people in our community, I’d like to share my experience.
Writing a Nextcloud app is fairly straight forward if you know some PHP and have a basic understanding of how PHP apps work. From my personal experience in writing my first apps, I do remember that I sometimes struggled with the software design and architecture and something like best practices were’nt provided anywhere.
To help others (especially newbies in the Nextcloud world), I’d like to publish a few guides on Nextcloud development related topics like
- App architecture and design
- Testability and test strategies
- Improve code quality with the help of php7
- Continuous integration best practices
- Development environment recommendations
- Front-end best practices
Work towards a component library
Our design team is working very hard on unifying app layouts and the overall design. However, apps still have to implement and adapt to design guidelines on their own.
To further unify the app ecosystem, I’d like to develop a component library for all the components we’ve got covered by design guides. Although I’m not quite sure yet, a library based on Vue could be a great start.
The main goal is to join forces on a common, well designed and tested component library so that developers can write apps more quickly and with less redundancy.
My last goal for 2018 is to keep my tasks at least as organized as they had been in 2017. Switching to a Kanban-like model to schedule my work load for Nextcloud tasks helped me develop a well-working pipeline to overlook issues and PRs I’d been working on. Thus I’ll continue to use a GitHub project¹ for all my tasks. This also allows others (not only my coworkers but also anyone in the community) to see what I’m focussing on right now and if/when a feature/bug is being worked on.
¹ Unfortunately, only organization members can see the project.
Update 2018-03-06: added references to new blog posts. Update 2018-09-18: added references to new blog posts.