Nikita and a summer of code

Thomas Sødring tsodring at oslomet.no
Wed Aug 9 14:03:08 CEST 2023


A brief overview of recent development initiatives.

Developing Nikita is an ongoing process, and unfortunately I cannot work on the codebase full time as I have teaching and other responsibilities.  Development can, at times, require prolonged undisturbed development sprints and that kind of time is something I don't get very often.  This year I took an early summer holiday so when I came back I had 4 weeks of undisturbed time to give to nikita., and I really enjoyed the time to focus on code. During the summer, I decided to prioritise finalising the upgrade to spring boot 3 and to clean some of the old stuff out of the code. The spring boot 3 upgrade was a lot more difficult than I thought, but we got there in the end! After that I spent some time cleaning the codebase and there was a lot of unnecessary "stuff" in the codebase from early on. I reorganized the codebase to make it more logical, and it now follows a pattern that I think other Spring boot developers will like. There is still more work to be done on tidying the codebase. I would like to comment all methods and interfaces, and I also want to double-check the domain model. Most programmers know that this type of work is time-consuming and in some regards boring so it becomes difficuly to prioritise. The following post reminds me of the work that I have ahead of me.

https://jaredramsey.com/blog/20230808.html

I think that 1% is very important and something we need to invest in!  I also had a go at using TestContainers but had to throw in the towel and ended up disabling most tests in src/test temporarily as I need to understand this a little better. Furthermore, I also tried using generative machine learning to see if I could increase the test coverage of tests in the codebase. I used diffblue, and it does make tests, but I am not sure how useful some of the units were.  Also, I was not able to get diffblue to work properly with spring boot. However, I am not the only one, and I think my problems are similar to these persons (https://forum.diffblue.com/t/diffblue-cover-was-unable-to-write-a-spring-test/657/6). diffblue seems promising as it can generate *a lot* of boilerplate test code for me.  A few internal tests caught important changes during the spring boot 3 upgrade, so I am fully convinced we need more tests to future-proof ourselves.

Where is nikita now?  That is a difficult question to answer. My gut feeling is that we are at 85% of the code required to be a Noark 5 core, and we have been here for the last two years or more. Like the 1% example, I am left wondering how to prioritise the remaining 15%. The question I should ask is why haven't we managed to prioritise the remaining 15% already. It is like we are stuck in mud, but I think we just need to pick up and move on. My goal now is to start working with the runtest tool again and pick up the xfailures (expected failures) that are being reported. We also need to spend some time on the API spec and look at the fine details, as well as making sure that nikita and the spec are in sync. Perhaps, the reason I have not managed to prioritise the remaining 15% is that it requires a few hundred hours of undisturbed development sprints. I started the Spring boot upgrade branch last November and only finished it recently. The amount of concentration that was required and tracing across the codebase and continual new problems that appeared tells me that this kind of task is not something that you can just pick up and drop here and there. The cleanup work and restructuring will hopefully mean that later upgrades will be so difficult!

Thomas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.nuug.no/pipermail/nikita-noark/attachments/20230809/e8d24248/attachment.htm>


More information about the nikita-noark mailing list