-
Notifications
You must be signed in to change notification settings - Fork 0
Meeting Minutes
- Meeting #1: September 29th - 10:00 AM
- Meeting #2: October 6th - 10:12 AM
- Meeting #3 - With Stakeholder: October 7th - 12:00 PM
- Meeting #4: October 7th - 12:30 PM
- Meeting #5: October 13th - 10:00 AM
- Meeting #6: October 20th - 10:00 AM
- Meeting #7 - With Stakeholder: October 21st - 12:00 PM
- Meeting #8: October 27th - 10:00 AM
- Meeting #9: November 3rd - 10:00 AM
- Meeting #10: November 8th - 11:00 AM
- Meeting #11: November 10th - 10:00 AM
- Yasmine Hilout
- Ali Fetanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Daigle
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
Absent:
- Justin Cheng
Note taker: Yasmine Hilout
-
Repository Structure:
- Team discussed how to structure the repository to include both documentation and app code.
- Decision: Create a dedicated folder for all documentation within the repository.
-
Software Architecture Proposal:
- Waiting for stakeholder approval on the Software Architecture Proposal.
-
Liability Documents:
- Stakeholder signed the liability documents
-
Jenkins for CI/CD:
- Discussion about whether to use the free Jenkins service or request the stakeholder to cover costs.
-
Risk Mitigation:
- Need to mitigate the risks (Data inaccuracy, interoperability issues, browser compatibility, Big Data Handling, User Adoption).
- What should we do now that this project is not part of the government funding? Risks are now not the same for User Adoption, it's more strictly research.
-
Project Funding:
- The project is no longer part of government funding, affecting user adoption risks.
- Decision: User and requirements will change due to funding withdrawal. Team needs to consult Rigby on next steps.
-
Work Package:
- Stakeholder expected to send the draft Work Package by Monday, May 30th. Once received, team will focus on finalizing documentation.
-
Issue Tracking:
- ScrumMaster (Sam) will upload issues, including user story descriptions, Story Points, Priority, and Risk.
- Team members assigned to issues: must document further details based on the Teacher's given example.
-
Documentation:
- Documentation completion deadline: End of the week.
- Louis will create an issue format template for consistency.
- Finish elements of Peter's Setup Document covering Legal and Ethical issues, Personas, Economic, Risk, Diversity statement, etc.
-
Milestone 1:
- Close Issues for Milestone 1 Today.
-
Tech Stack:
- Agreed on the overall tech stack.
- Uncertainty around database decisions:
- Do we need to implement a cache?
- Should we connect to external databases to complete datasets?
- Need stakeholder input to finalize the database approach
- Louis Villemure:
- Create a format template for issue documentation to ensure consistency.
- Samuel Wong (ScrumMaster) (Maybe others too):
- Upload issues with user stories, Story Points, Priority, and Risk details.
- Team Members:
- Complete documentation for issues assigned using the provided format.
- Focus on closing issues for Milestone 1 by the end of the day.
- Collaborate on completing Peter's Setup Document (covering Legal and Ethical issues, Personas, Economic Risks, and Diversity Statement).
- Yasmine Hilout
- Ali Fethanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Justin Cheng
Absent:
- Xavier Guertin
Note taker: Yasmine Hilout
-
Most of the documentation is defined, but missing Architecture Diagrams.
-
Gab, Xavier, and Sam created projects in GitHub. Now, the status for the board follows the ReadMe format:
- When you pick up the user story, whoever accepts the user story needs to write the acceptance criteria and break it down into tasks.
- SubTasks of a User Story can be done in parallel by multiple members.
-
Sam made a guideline for our documentation of tasks:
Task Documentation Guidelines -
User Story Labeling:
- Correct labels:
TA-reviewedandStakeholder Signed-Off. - We discussed if we should create an issue for the user story, then break down the tasks as subtasks, or create separate issues for each subtask.
- Decision: Create an issue for each subtask, label them as subtasks, and cross-reference them using the parent/child method. This needs further confirmation. Vote was 67% (6 votes) for split into subtask issues, 33% (3 votes) no splitting into subtask issues.
- Correct labels:
-
Sam will update the guidelines to reflect the cross-referencing format between the user story issue and the subtasks issues.
-
Gab created a wiki page for naming conventions:
Naming Conventions- We need to follow it to track changes across releases, commit conventions, and branch conventions.
-
Thibeault's Document:
Thibeault sent another document on Tuesday for our project:
Document -
In response to the document, a Final System Architecture was made and sent to the stakeholder on Tuesday:
Final System Architecture- This version includes the additional information we received from the Stakeholder's document.
-
Gab's Tool Proposal: Gab proposed using nx, a tool for creating monorepos, which might simplify the implementation of frontend (Electron, Next.js) and backend (Springboot), and improve versioning and dependency management.
- Vote for implementing nx by the end of the call.
- Everyone should read about nx and vote.
-
Issues in Repo:
Gab, Xavier, and Sam defined issues in the repository, as well as the work breakdown for iteration 2:
Work Breakdown for Iteration 2 -
Documentation Split:
We should ask CRIM if they have additional documentation requirements.
- Sam: Update guidelines to include cross-referencing.
- All: Review and vote on the use of nx by the end of the call.
- Yasmine: Ask CRIM about specific documentation requirements and clarify exactly who our users are and their goals during the upcoming meeting.
- Go to meeting with Stakeholder:
- Scheduled: Monday 7th October, 2024.
- Yasmine Hilout
- Ali Fethanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
- Justin Cheng
- Thibault Languillat (Stakeholder)
Note taker: Yasmine Hilout
-
UI and Interface:
- The stakeholder still needs to provide the UI and interface.
-
Datasets:
-
Question: How will we access the datasets?
- For past data: No API, we pull the datasets directly from them.
- For live data: We may be able to use live information (specifics unclear).
- The stakeholder will also provide the link to the dataset list they would like to visualize.
-
Question: How will we access the datasets?
-
Caching Mechanism:
- Question: How should the JSON data be renewed? Is there a specific criterion for data expiration?
- Answer: The datasets will represent past events, so no updates to the data will be required. However, if you want to re-request the download, that is possible.
- Note: The stakeholder mentioned that the pipeline to process the data might change, but not the data itself.
-
Documentation Requirements:
- Question: What type of documentation does the stakeholder want?
- Answer: Documentation should include architecture and class diagrams, along with in-code documentation.
-
Application Modes:
-
PAST EVENTS Mode:
- OGC API will be used for past events.
- Question: Who will create the dataset list?
- Answer: The stakeholder and several others will create the list of datasets.
- This is the endpoint from where we download the data (OGC description).
- Question: Will there be updates to this data?
- Answer: The data itself won’t change, but the data processing pipeline might.
-
SIMULATION Mode:
- Question: What data will be used for the simulation?
- Answer: Still uncertain about the data for simulation. He doesn't think it will be live, as live systems are slow to update. (For later…)
-
-
Dataset Delivery:
- Goal: The data will be cached on the local machine for the user.
- First-time Data Access: A JSON file will be provided with links to the datasets. The user will select what they want to view, and from there, the data will be displayed.
-
Personas:
- Question: Who are the primary users?
- Answer: The main personas will be researchers and data scientists who want to test and visualize algorithms, particularly for wildfire prediction.
-
Biweekly Meetings:
- Plan: Regular biweekly meetings will be scheduled going forward.
-
Dataset and UI Delivery:
- Question: When can we expect the dataset sample and UI?
-
Answer:
- A dataset will be provided in 2 weeks, but we might have a sample earlier than that.
- The UI requirements will be delivered by Friday.
-
Architecture Design:
- Before Implementation: The stakeholder wants us to provide a round of architecture design for review before we begin implementation.
-
User Stories Approval:
- After Drafting User Stories: We notified the stakeholder that we need to send the user stories to him for approval.
-
Application Deployment:
- Question: How will the app be deployed? Should it require an executable?
-
Answer:
- The app should be hosted but also work locally. The target users are basic users, software developers, and data scientists.
- We can create a script to start the app.
- Docker is also acceptable for deployment.
-
Next Steps:
- Next Meeting: We will get back to the stakeholder at the next biweekly meeting.
- Provide the stakeholder with our availabilities for biweekly meetings.
- Yasmine: update personas.
- Add Thibeault to our Github
- Yasmine Hilout
- Ali Fethanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
- Justin Cheng
Absent:
- Thibault Languillat (Stakeholder)
Note taker: Yasmine Hilout
-
Vote for NX:
- Team voted on whether to use NX for the project.
- Decision: We voted yes to use NX.
- All: Begin implementation using NX.
Attendees:
- Yasmine Hilout
- Ali Fetanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
- Justin Cheng
Absents:
- Louis Villemure
Note Taker: Yasmine Hilout
-
This week, the infrastructure for both frontend and backend was set up using Nx. However, Nx does not support Spring Boot. Unit tests for both frontend and backend still need to be configured; currently, only test files exist, but no testing dependencies are set up. The backend was built in IntelliJ and is functioning correctly.
Docker:
- Sam believes we do not need a Docker agent, neither locally.
- Pushing to the main branch in GitHub Actions will trigger a Docker Hub process that will containerize at every build, and we will download the images created from this containerization.
- We can upload it directly to the pipeline—a Docker pipeline.
- We need to verify if Docker is set up.
- GeoServer needs to be configured.
- Set up GeoServer.
- Set up SonarQube.
- Complete remaining tasks for the end of iteration 2.
- Respond to Thibeault’s latest requirements specification, including any questions.
- Yasmine Hilout
- Ali Fethanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
- Justin Cheng
Absent:
- Thibault Languillat (Stakeholder)
Note taker: Yasmine Hilout
-
Vote for NX:
- Team voted on whether to use NX for the project.
- Decision: We voted yes to use NX.
- All: Begin implementation using NX.
- Yasmine Hilout
- Ali Fethanat
- Gabriel Dubois
- Kade Keating
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
- Justin Cheng
Absent:
- Louis Villemure
Note Taker: Yasmine Hilout
-
Yasmine:
- Analyzed updated requirements with Phil and Sam, prepared questions for clarification.
- Updated Epics and User Stories in the Work Breakdown document to match new requirements.
- Completed the architecture diagram and uploaded it to the wiki.
- Started brainstorming UI inspiration for mockups with Phil.
- Drafted potential API endpoints in the API_Stakeholder document; needs review with Sam before project setup.
-
Sam:
- Reviewed updated requirements.
-
Ali:
- Encountered integration issues with GeoServer and the backend.
- Suggested setting up the backend before integrating GeoServer.
- Reviewed team documents.
-
Gabriel:
- Wants to ensure SonarQube setup is complete.
- Noted potential security threats in the Docker file.
-
Justin:
- Developed the deployment diagram.
-
Kade:
- Needs to start working on tasks this week.
-
Liam:
- Discussed CI/CD pipeline with Xavier.
-
Phil:
- Conducted research on datasets.
- Performed OpenLayer tests.
- Plans to work on the database with Sam this iteration.
-
Xavier:
- Set up Docker and PostgreSQL locally.
- Attempted to containerize PostgreSQL in Docker.
- Created SpringBoot components.
- Worked on NX Cloud with Liam.
- Set up SonarQube.
- Changed naming conventions.
- Sam mentioned the possibility of using a Dockerized version of GeoServer.
- Plan tasks for Iteration 3.
- Yasmine: Link issues to user stories in GitHub.
- Discuss PRs (Gab).
- Plan Iterations 3 & 4 for Release 1.
- Yasmine Hilout
- Ali Fethanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
- Justin Cheng
- Thibault Languillat (Stakeholder)
Absent:
- None
Note taker: Yasmine Hilout
Just before the meeting, the stakeholder addressed some of our questions about the updated requirements. We then asked for further clarification. Here’s a summary of the questions and answers:
-
First pull of data should be online, but after that, you wouldn’t need to download data anymore, correct?
- Answer: That’s correct, assuming nothing changes. If any information in the JSON file is updated, you will need to refresh the data. It would be a nice feature to only update the parts of the data that have changed. Most systems support partial downloads for such updates.
-
When you say a user selects a dataset:
- Does the user simply zoom in on a place on the map?
- Does the user need to enter a geographic zone to display corresponding satellite imagery?
- Or should the data start rendering when zoom is at a certain range?
- If so, what specific range should we start visualizing the data at?
- Answer: Until a dataset is selected, the interface should not display satellite imagery, as this will speed up the application. The dataset’s location should be marked with a pin on the map. The user can select it by clicking on the pin or choosing it from the side panel. If region-based selection is activated, the side panel should only display datasets corresponding to visible pins.
-
You replaced WPS with OGC API. What does that mean? Didn’t you say you wanted us to call your endpoint for data? Why are we fetching from OGC API?
- Answer: After consulting with my geo expert, we decided WPS is too different from our current standards, and it would be challenging to ensure compatibility. We will focus on OGC standards as we create compatible datasets. I plan to add my geo expert to the project next month.
-
Regarding "The option to reduce the list of datasets based on the current region should be managed by a toggle button"—is our interpretation correct?
-
Interpretation:
- Toggle on: Display datasets based on the current map region.
- Toggle off: Show all available datasets. If a dataset outside the current region is selected, the map will navigate to the relevant area.
- Answer: Yes, that interpretation is correct.
-
Interpretation:
-
Can multiple layers be displayed at the same time?
- Answer: Yes, multiple layers can be displayed simultaneously. For example, one layer could represent the burnt area geometry, another could show vegetation segmentation, and another ground temperature. Users should be able to select which layers are displayed and in what order.
-
Now that we’re using STAC items or WFS datasets, will we still use WMS and WCS?
- Answer: We may use WMS, but WCS won’t be used.
-
Regarding the dataset example from Nature article, what specific data would you want?
- Answer: All the information is relevant for wildfire prediction and management, though the dataset doesn’t follow our standard and can't be used as is.
- Dataset Selection: Each dataset will correspond to one fire event.
- GeoServer Compatibility: GeoServer is compatible with the OGC API.
- Offline Mode: In offline mode, users will work with the latest selected dataset.
- Config File for Data Scientists: A config file will allow data scientists to change datasets. Options include an edit button in the UI or direct manual edits in the config file.
- Send the stakeholder our mockups and architecture diagram.
- Await feedback from the stakeholder’s geo expert and the dataset endpoint.
Attendees:
- Yasmine Hilout
- Ali Fetanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Justin Cheng
Absents:
- Xavier Guertin
- Sam Wong
Note Taker: Louis Villemure
Yasmine worked on UI mockups, which have been broken down into tasks and assigned for implementation for release 1.
This week the team was unable to get much work in given the midterm examination period. Many team members are having trouble running the app locally due to dependency issues. Volume will pick up in the upcoming week.
Xavier set up docker and containerized frontend, backend, and db. Fixed Sonarqube quality gate issues and Nx cloud.
Liam has been working on CI/CD tests.
Louis and Ali worked on containerizing Geoserver. After a lot of trial and error, Ali was able to set up docker and was able to pull an image and run it locally.
Kade has been working on the presentation for the 1st release.
Justin has been working on setting up the unit tests for springboot.
- Finish any tasks from iteration 3
- Work on assigned tasks for frontend
- Goal is to have a ui prototype for release 1
- Yasmine Hilout
- Ali Fetanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
- Justin Cheng
Absent:
- Thibault Languillat (Stakeholder)
Note taker: Yasmine Hilout
-
Sam:
- Made a list of progress for release 1, focusing on what we’re going to be graded on. Finished his task for the loading screen.
- Created a document for the mockup to take notes.
-
Phil:
- Worked on UI tasks, refactoring a few things and addressing native language display for countries—looking to display in French/English.
-
Liam:
- Worked on UI for metadata and identified an issue due to nx cloud, adjusting the naming convention to avoid starting branch names with “#” to prevent CI failures.
- Left tasks for CI: connecting to the cloud and adding SonarCube for coverage files.
-
Ali & Louis:
- Found an image for GeoServer and are trying to integrate it into the Docker file, currently encountering initialization errors.
-
Kade:
- Finished the presentation for Release 1 but still has UI tasks pending.
-
Justin:
- Completed setting up JUnit for the backend Spring Boot and is available for new tasks.
-
Yasmine:
- Gave the stakeholder the latest mockup and architecture diagram. He replied, stating he would review them before the next meeting and mentioned that the synthetic dataset is ready, with the corresponding JSON file to be available shortly.
- Focused on developing the UI component and planned to work on the Available Datasets sidebar.
-
Xavier:
- Set up Docker and is creating a project for Docker configurations and images, having set up the frontend for team access.
-
Gabriel:
- Created a PR and started working on a UI task while coordinating with Justin to add a plugin for coverage.
- Decision: Rule: Set two people to do reviews. No PR should be reviewed by less than two people.
- Review feedback from the TA and stakeholder.
- Update the mockup and add it to the wiki.
- Ask Languillat for feedback on the mockup, including colors and search functionalities.
- Clarify PMS-136 terminology.
- Investigate if a progression bar is part of OpenLayers.
-
Additions:
- Show mockup of collapsed elements.
- Add a fullscreen button at the bottom right.
- Ensure components have collapse buttons.
-
Removals:
- Navbar.
- Copyright notice at the bottom.
-
Changes:
- Settings should include a factory button, reset button, language options, configuration settings, and a textbox prompt.
- Colors should match blue and grey similar to CRIM (stakeholder).
- Map component will be the parent with layers and available datasets.
- One week until release 1, with plans for a 30-minute video.
- Ensure testing and SonarCube report completion, improving code quality through testing and CI/CD.
- Backend implementation for datasets to begin.
- Prepare a good UI with dummy data, followed by backend work for available datasets and implementation.
- Yasmine Hilout
- Ali Fetanat
- Gabriel Dubois
- Kade Keating
- Louis Villemure
- Liam Deglais
- Philip Frattolillo
- Samuel Wong
- Xavier Guertin
- Justin Cheng
- Thibeault Languillat (Stakeholder)
Note taker: Yasmine Hilout
-
Q1: Endpoints:
- When we add an endpoint, do we need to flush all the other ones?
- If we don’t flush, does it mean we have multiple at a time?
- Should we be able to scroll through all the endpoints?
-
A1:
- There will be only one endpoint, which will contain all datasets.
- Initially, we thought all datasets from each endpoint would be in the database (local cache). He clarified that only selected datasets would be included.
-
Flowchart:
-
Setting Prompt → Modify API endpoint
- This tells the configuration file to request from the specified endpoint.
-
Save and Exit the settings
- Sends the API endpoint to the backend.
- Backend queries all the datasets' metadata from this API.
-
[Backend] Generation of Available Datasets
- [Frontend] Now displays all datasets.
- The user can click on a dataset to view its metadata.
-
Confirmation Button for full data retrieval
- [Backend] Pulls and displays the complete dataset (includes all events, temperature, etc.).
- Loading screen appears during data retrieval.
-
Setting Prompt → Modify API endpoint
-
Q2: Loading Bar:
- For visualizing download progress, when should the loading bar be displayed?
- When selecting an endpoint and uploading a dataset?
- Or, when selecting a dataset in the Available Datasets sidebar as it renders?
- For visualizing download progress, when should the loading bar be displayed?
-
A2:
- The loading should be a progression percentage, allowing the user to continue interaction while visualizing the rendering.
- This approach is akin to progressive or lazy loading (similar to games where the user can still interact while data loads in the background).
-
Endpoint Description:
- The stakeholder needs to update the endpoint description and will follow up on that.
-
Geoserver Usage:
- He will see if they will use Geoserver. Geoserver is for displaying large raw datasets, which may not apply to fire events.
-
Dataset Access:
- He just received the token to upload the synthetic dataset.
- Full dataset access will be provided on Monday.
-
Data Source:
- Original data comes from an external server.
-
Current State:
- Appears as if data is loaded from a local database, not a remote source.
-
Comments:
- Update the architecture diagram to reflect the external data source.
- Uncertainty regarding interactions between Controllers and DTO (Weaver) – likely, interactions will pass through the OGC API.
-
Action:
- We will update the architecture diagram accordingly.
-
Repository Entities?
- Our Answer: Repository entities are a standard part of Spring Boot functionality.
-
Parameter Representation?
- Our Answer: Endpoint parameters will be saved in JSON format in the controller.
- Improved UI display options.
- Editable JSON in the UI (future consideration).
- Simulation (prediction of future events).
- Dynamic rendering options.
- Yasmine Hilout
- Ali Fethanat
- Gabriel Dubois
- Justin Cheng
- Kade Keating
- Sam Song
- Louis Villemure
- Phil Di Fratello
- Xavier Guertin
- Liam Deglais
Note Taker: Yasmine Hilout
-
Create different environments
- Xavier will look into that.
-
Postmortem of Release 1:
-
Key Accomplishments:
- Overcame challenges by focusing on consistent elements and finalized essential components for the release.
-
Challenges:
- Liam emphasized sticking to a single structure, suggesting more consistency in tools.
- Improvement needed in planning.
- Discussed the necessity of Iterations 5 and 6.
- Liam advised maintaining a steady contribution pace with no spikes.
-
Key Accomplishments:
-
Discussion Points:
- Consider switching from MapTiler to GeoServer.
- Decision on refactoring:
- Do we confirm the use of Tailwind and stylesheets instead of allocating time for Tailwind refactoring?
- Plan to move away from styled components.
- Decide between refactoring to Tailwind or using CSS sheets.
- Film demo.
- Add iteration notes.
- Create release documentation for each iteration.
- Add a Dev Starter Guide to the README.
- Create issues for the upcoming iterations and share the Next Release Plan with the team.
- Yasmine Hilout
- Ali Fethanat
- Gabriel Dubois
- Kade Keating
- Sam Song
- Louis Villemure
- Phil Di Fratello
- Francis Charette-Migneault
- Justin Cheng
- Xavier Guertin
- Liam Deglais
Note Taker: Louis Villemure
-
We should definitely use PostGIS extension for Postgres
-
For our db, don't use strong mapping given that our dataset is subject to change
-
Sam raised a question regarding Geoserver's role in the backend and its ability to take on multiple requests. Francis mentioned that Geoserver is built for having multiple parallel requests and that we should not worry about it.
-
After the meeting we discussed with Francis that alternatives to Geoserver could be used (which Ali and Phil will be researching more)
-
Sam asked for what can be shown on the metadata sample, Francis responded any info that can help identify what will be displayed (area and dataset variables - this may be relating to datacube extension)
-
STAC
- Compliant with OGC service, except it combines features and assets - additional content to describe geospatial data (humidity, wind speed, etc.).
- Look into using PgStac, which is Postgres schema with functions for storing STAC collections and items in Postgres
- He also mentioned a mapping that needs to be done to datacube. This essentially is datacube related metadata that describes their dimensions and variables.
- In the demo of STAC colletions from another project Francis is working on at CRIM, he mentioned the stac-browser endpoint that shows a rendering of the datasets.
-
Discussion Points:
- Everyone has to do their due diligence in understanding STAC collections and items
- Francis mentioned that a docker image exists for STAC, we have to follow up and ask him exactly what he meant.