-
-
Notifications
You must be signed in to change notification settings - Fork 811
Add 2025 Curtin Capstone End of Year Blog Post #705
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 45 commits
04ffc83
f1a205d
a1f7d87
896f080
3c19714
fe8096e
94aed66
30064db
7fc341b
7b472a3
0125304
21ee5db
2055fda
a756c84
ef7e6a5
67c534c
c2ae937
9b1ace0
a052ad7
ae8a906
34fc15d
cdd9ace
56634dd
f34e9bb
0eb4a9a
5c971a4
fb8dd18
2059ee9
d788e39
4281bc4
82b1b31
f2ff3f7
b1fe800
e749f8e
a050569
3a7ed06
c3949ec
f4192d4
2c38fca
896840d
3b08ab2
87d6ecf
43b3d6c
ddb4959
4d0d8ed
bf8dfe1
619a6c0
0855fe1
926112d
019f054
3b4989b
1aae529
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,112 @@ | ||
| title: 2025 Curtin University Capstone Project | ||
| --- | ||
| author: Curtin Capstone Team | ||
| --- | ||
| body: | ||
|
|
||
| Since February, a team of final year students from [Curtin University](https://www.curtin.edu.au) has been collaborating with the BeeWare Project as part of a capstone project for their degrees. This is a summary of the work they have completed. | ||
|
|
||
| # Curtin Capstone | ||
|
|
||
| Capstone is the final year project undertaken by students across all computing disciplines at Curtin University, including Computer Science, Software Engineering, Cyber Security, and Information Technology. It allows students the opportunity to work in teams on real-world projects in collaboration with industry partners, gaining practical experience and professional exposure before graduating. | ||
|
|
||
| This year our team has had the exciting opportunity to contribute to BeeWare for our Capstone project. | ||
|
|
||
| Meet the Team: | ||
|
|
||
| - Kavidu Abeykoon Mudiyanselagedara ([kavi2du](https://github.com/kavi2du)); Information Technology | ||
| - Callum Horton ([Stringer90](https://github.com/Stringer90)); Software Engineering | ||
| - Caydn Lee ([caydnn](https://github.com/caydnn)); Software Engineering | ||
| - Jaeden Mah ([JMah007](https://github.com/JMah007)); Computer Science | ||
| - Mitchell Pontague ([mEp3ii2](https://github.com/mEp3ii2)); Software Engineering | ||
| - Veronica Taniputra ([vt37](https://github.com/vt37)); Cyber Security | ||
|
|
||
| In the first semester, our team gained exposure to the BeeWare ecosystem through tackling a variety of small bug fixes within Briefcase and Toga, creating widgets for the web backend in Toga and completing small research tasks into the mechanisms within the BeeWare tools. More details about our first semester contributions can be found [here](https://beeware.org/news/buzz/2025-curtin-capstone-semester-end-blog). After this, the team split off into pairs to plan out larger deliverable contributions that would add or changes features within BeeWare. | ||
| It is these deliverables that the team worked on in the second semester. | ||
|
caydnn marked this conversation as resolved.
|
||
|
|
||
| ## What We’ve Worked On This Semester | ||
|
|
||
| ### Toga Web Testing | ||
|
|
||
| This semester, we delivered a functional prototype of a testing mechanism for Toga’s Web backend. This prototype addresses the problems identified in the [analysis we performed during our first semester](https://github.com/beeware/toga/issues/3545). The problem was straightforward: there wasn’t a practical, end-to-end way to run automated tests against Toga web apps running in the browser. Our prototype addresses this by introducing a structured communication bridge between the backend and the frontend, widget proxies, and DOM probes. This enables end-to-end tests that tests both widget logic and rendered UI. At this stage, the work serves as a proof-of-concept approach rather than a finished product. It demonstrates that the core approach works reliably, though additional features and improvements remain to be implemented. A [prototype implementation](https://github.com/beeware/toga/pull/3728) and [detailed handover report](https://github.com/beeware/toga/issues/3545#issuecomment-3425284525) have been delivered as part of this project. | ||
|
|
||
| ### Briefcase Web Development Optimisations | ||
|
|
||
| This semester, we have successfully laid the groundwork for web platform development mode support in Briefcase by making the `dev` command platform-aware, and implementing virtual environment management. We [refactored the core `DevCommand` architecture](https://github.com/beeware/briefcase/pull/2419) by introducing platform-specific `DevCommand` subclasses like `StaticWebDevCommand` to handle platform-dependent workflows). Next, we [implemented virtual environment management](https://github.com/beeware/briefcase/pull/2420) by introducing the VirtualEnvironment context manager tool, which provides isolated, configurable virtual environments for development mode, and [improved the tracking of virtual environment usage by the dev command](https://github.com/beeware/briefcase/pull/2495). We also [modified the handling of local Python assets](https://github.com/beeware/briefcase/pull/2498) so they are installed in editable mode. This work establishes the foundation for exposing the app assets to a development web server allowing the live-reload workflow, ultimately speeding up the web development process. | ||
|
caydnn marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### PyScript Briefcase and Toga Dependencies | ||
|
|
||
| This semester, we worked on redesigning the Briefcase static web build pipeline to implement a deterministic asset insertion system which replaced template-based asset management. The new system enables Toga and other toolkits to embed their configuration files and front-end resources directly [into wheel packages](https://github.com/beeware/toga/pull/3666) which the [new Briefcase functionality](https://github.com/beeware/briefcase/pull/2442) will extract and insert into static web files. The [web template received a redesign](https://github.com/beeware/briefcase-web-static-template/pull/21) which established specific areas for insertion. The [previous restrictions](https://github.com/beeware/briefcase/issues/2337) prevented Toga and other toolkits from taking full control of their front-end operations while working independently from Briefcase. The new system separates tasks while making maintenance easier and enables toolkits to manage their front-end components, with Toga now owning its own PyScript version, PyScript configuration and Shoelace HTML script. | ||
|
caydnn marked this conversation as resolved.
Outdated
|
||
|
|
||
| ## Lessons Learned | ||
|
|
||
| This year with BeeWare has marked many valuable lessons taught outside of the class environment. Each of us have now made significant contributions to an open-source project while meeting deadlines and attending weekly standup meetings. This process has allowed us to develop our skills in numerous ways. Below each of us will comment our individual lessons. | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### Kavidu: | ||
|
|
||
| Working with BeeWare was my first professional experience outside of university. This was a huge opportunity for me to have hands-on exposure to real-world software development work within open-source environments. I gained experience working with large community-based codebases through issue tracking and pull request management while teaming up with developers who used different time zones and technical expertise. | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| The experience helped me develop better abilities to work with others while improving my skills in team collaboration. The combination of weekly stand-ups and code reviews and asynchronous teamwork helped me develop skills to explain technical concepts simply and receive feedback positively while creating code that others could understand and expand. I developed better skills in Python programming, testing and I learned to create testable code that other developers could use to extend the project. | ||
|
|
||
| Moreover, working with BeeWare provided me with essential knowledge about open-source software engineering through its combination of technical and collaborative aspects. Throughout the process, I learned that the development of good software requires designers to create intentional systems while they must communicate effectively to build tools which enable others to continue improving the project after their contribution ends. | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### Mitchell: | ||
|
|
||
| One of the most valuable lessons from BeeWare came while implementing a virtual environment context manager for Briefcase. | ||
|
|
||
| During the planning and initial development, I was too focused on how this would work for the web development platform rather than on the actual design of the tool itself. My supervisor pointed out that this PR had applications in other areas within Briefcase and should be designed with those considerations in mind. | ||
|
|
||
| I had been thinking in terms of "what does the web platform need?" when I should have been asking "what capability does the system need?" This misunderstanding affected my initial timeline and resulted in a much longer development cycle than intended, but it taught me something far more valuable. The real insight was that development shouldn't be task-specific but tool-specific. | ||
|
|
||
| When working on something, it's not about what works for today's problem but what tool you're building that will work for any problem that emerges tomorrow. Good design means separating mechanism from policy: your tool provides the *how*, and each caller decides the *where*, *when*, and *why*. The goal isn't to predict every use case but to build tools that others can use as-is, without modification. | ||
|
|
||
| When someone needs virtual environment management six months from now in a completely different context, they shouldn't have to change your code—they should just be able to call it with their parameters and move on. Build it once so it works everywhere, not once per use case. | ||
|
|
||
| Ultimately, the best code is not the code that works today but rather the code that's still working unchanged a year from now. | ||
|
|
||
| ### Veronica: | ||
|
freakboy3742 marked this conversation as resolved.
|
||
|
|
||
| As this was my first experience contributing to a large, open-source project, I learned how the workflow fits together—navigating existing code, writing clear issues and PRs, and contributing changes with clear commits and messages. I also learned to keep my work visible, pushing incremental changes, even when not fully finished, with clear notes on status and next steps so reviewers can follow my progress. That was a shift for me, as I used to wait for “finished” work before committing. | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| Regular stand-ups, shared planning, and pairing on tasks taught me how to work effectively in a team. Through this, I developed stronger communication and collaboration skills and gained a better understanding of how individual contributions fit within a larger shared goal, especially when it comes to coding workflows. | ||
|
|
||
| I've improved my Python skills and gained real experience with Pytest and Playwright while working on the Toga Web Testing prototype. Most importantly, I learned how to design a cross-process system that bridges a pytest test runner to an app running in the browser, which gave me a much deeper understanding of both testing frameworks and web automation. | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### Jaeden: | ||
|
freakboy3742 marked this conversation as resolved.
|
||
|
|
||
| Beginning with limited python knowledge increased the learning curve for me however by reflecting at the end of this journey I can see the difference in skills I have gained. I am more confident and familiar now working on a project alongside other software engineers discussing ideas whilst maintaining professional communication practises via weekly standup calls and email. Working on Briefcase has taught me to simplify my code more. After regular code reviews from Russell, I realised my code was always more complicated than necessary and could often be simplified either by using in built python functions or functions already defined somewhere in the codebase that I wasnt aware of. | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### Callum: | ||
|
|
||
| Throughout this project, I learned that effective communication is one of the most important aspects of collaborative software development. Working on the same codebase as others required constant coordination to prevent overlap and ensure our work aligned technically and conceptually. Regular discussions and updates helped us avoid duplicated effort and made it easier to maintain a shared understanding of the project’s direction. | ||
|
|
||
| I learned that transparency, even when work is still in progress, is far more valuable than delaying updates. This also ties closely to the importance of maintaining visibility in an open-source context, where an up-to-date and traceable history of commits allows others to easily follow development and provide frequent, relevant feedback. Consistently sharing progress, even in small increments, made collaboration far more effective. | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| Finally, I learned the importance of handover reports and how essential they are for communicating the current state and future direction of a project. A well-written handover report provides clarity on what has been implemented, what has not worked as intended, and what areas require further development or refactoring. It also serves as a bridge for future contributors, ensuring that knowledge is not lost and that others can continue the work without repeating past mistakes. Through this process, I came to appreciate that clear documentation at the end of a project is just as valuable as the technical work itself, as it enables continuity and long-term maintainability. | ||
|
|
||
| ### Caydn: | ||
|
|
||
| This year has taught me how to work effectively within both a small team and a large open-source project. It's been very eye opening navigating the expectations and workflows that come with contributing to a community-driven codebase. During the first semester, I found that I didn't know how much to push or when to create a PR. This meant that Russell couldn't perceive work being completed and that I could not receive help in situations where I was stuck. With our semester 2 work, especially as we were working in pairs, I made it a goal to commit and push any slight change. This drastically improved our collaboration efforts. | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| I've also gained confidence and appreciation for modular architecture through working on the PyScript insertion system. Previously, having only worked on smaller codebases of my own or for group assignment work, I've never truly worked on multiple systems that would interact with each other. Having spent time reconfiguring dependencies within BeeWare, I've now learned the value of planning and researching before implementation. The untangling of Toga and the Static Web Template has been some of the most fun I've had within programming thus far. I'm looking forward to seeing how BeeWare continues to make use of and expand on this system. | ||
|
|
||
| Collaborative feedback and reviews from Russell, Malcolm, and the team, especially Kavidu, have undoubtedly improved our code quality and allowed me to grow as a software engineer. While initially scary to have frequent check ins with my code, I've now placed much more importance in these reviews. Not only does it allow you to gain insight into what may be going wrong, but more experienced developers tend to impart their wisdom upon you. For me, this now means I pay much closer attention to deep indentation as well as the readability and traceability of my written code. | ||
|
|
||
| ## Future work | ||
|
|
||
| While we have delivered significant changes within the BeeWare ecosystem, continued efforts will be required to complete our works. Each deliverable varies in terms of remaining tasks. For example, the PyScript Dependency Deliverable has only minor changes to remove backwards compatibility, while the Web Testing Deliverable has a few larger chunks of work needed to move the project from a 'proof of concept' to a complete, functional testing suite. Below we have summarised the remaining tasks related to our deliverables: | ||
|
freakboy3742 marked this conversation as resolved.
Outdated
|
||
|
|
||
| - In Toga, `web/src/toga_web/static/toga.css` will need to be converted to an insert. | ||
| - Eg: `web/src/toga_web/deploy/inserts/briefcase.css~css` | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There's two options here:
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I've added an opening paragraph at line 98. Did you need me to expand on it? :)
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So - that introductory paragraph is kind of half way to what I intended. My main issue is that the bullet point list is inconsistent with the rest of the text. After a lot of narrative descriptions, we've got a set of bullet points reads a bit like a first draft for the paragraphs that should be here. If the future work was as simple as "here are the four issues that need to be resolved" or "here are the 3 PRs that need to be completed", then a bullet list might be appropriate. Here we have a combination of short descriptions and links; some of which is duplicating content that are covered in more detail in the handover reports. Rather than duplicate the handover reports, this further work section should be giving a really high level summary of the work to be done, and then referring to those handover reports for more details. (Also some of the todo items have already been done :-) )
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Alrighty that makes sense, I'll see if I can get the team to update their sections for this. A few of us have exams tomorrow but we should be able to change this soon. For the Insertion system changes, would you like a similar approach but with a link to the remaining issue ticket instead of a handover report?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
No problems - your exams should absolutely take priority. If we can get this wrapped up by the end of the week, that would be ideal.
I'm not sure I follow you're referring to here. My original comment was intended as highlighting an issue with the entire "future work" section, not a flag on this specific bullet point. If there's a handover report, link to it, with maybe a very brief summary of the nature of the outstanding work; if the future work is just a ticket or two, link to those. To avoid content duplication, it might also be appropriate to remove references to the handover reports in the sections above, and consolidate them down in this future work section. |
||
| - Issue [#3822](https://github.com/beeware/toga/issues/3822) | ||
| - In Briefcase Static Web Template, `{{ cookiecutter.format }}/www/pyscript.toml` will need to be removed. | ||
| - Issue [#23](https://github.com/beeware/briefcase-web-static-template/issues/23) | ||
| - In Toga, continued development of web backend testing. | ||
| - Issue [#3545](https://github.com/beeware/toga/issues/3545) | ||
| - Draft PR [#3728](https://github.com/beeware/toga/pull/3728) | ||
| - In Briefcase, the following needs to be implemented for the `Dev Commmand` | ||
| - .pth File Parsing Utility (for making the editable installed packages directly accessible to the server) | ||
| - Allow the dev environment to support 3rd party package support | ||
| - Extend the editable install workflow to desktop platforms increasing developement workflow speed | ||
| - Implement a --live/--reload flag to automatically re-bundle changed .py files and refresh the browser | ||
| - Issue [#2334](https://github.com/beeware/briefcase/issues/2334) | ||
Uh oh!
There was an error while loading. Please reload this page.