rust-transit / gtfs-structure

Read a GTFS file
MIT License
56 stars 31 forks source link

App for GTFS data #128

Open maxwell8888 opened 2 years ago

maxwell8888 commented 2 years ago

I thought you might be interested in this GTFS viewer/editor app I made using gtfs-structure: https://github.com/spstreets/gtfs_manager. There is more discussion in the below forums: https://www.reddit.com/r/rust/comments/wy4col/druid_app_for_public_transport_data/ https://twitter.com/robinlovelace/status/1563099620926181376 https://xi.zulipchat.com/#narrow/stream/147932-chatter/topic/Public.20transport.20data.20viewer

I have a few questions and observations: 1) I forked the project so I could add some extra derives (mostly Clone I think). Would you accept a PR to include these kinds of things? 2) I found that some types don't match with the spec, eg some variable are optional in the spec, but not in gtfs_structures, and vice versa. What is the reason for this? I assumed it was something like you choose the types based on GTFS data you encountered in the real world, that don't necessarily comply with the spec? 3) I wanted to encode a small sample dataset as bincode which I could include with the app. I found that this didn't work, I assume because of the custom Serde impls you use, but not totally sure as I only have limited understanding of Serde. 4) In the future I would like to create a web version of the app, which means I will attempt to add WASM as a compile target for gtfs-structure.

Finally, I want to say thank you for your work on gtfs-structure, it helped a lot and the app wouldn't be where it is today without it.

Tristramg commented 2 years ago

Hello, this is amazing, congratulations! I’ll have a deeper look later, I’m curious (and scared :p) about doing UI in rust.

A quick answer to your questions. We can later discuss details in different issues or pull requests.

  1. Yes, absolutely!
  2. We were a bit sloppy. The ideal is to comply exactly the specification. For optional values that have a default value, it won’t be an Option<> but the default value (like colors) — that is a desired behaviour. Otherwise, it is probably a bug. I should take some time to go through all variables one by one before bumping to a 1.0 release
  3. Maybe. I understand the need. I’ll try to have a look at it
  4. This kind of things blows my mind (I come from an old school C++ background ;) )

Thank you for using the library, it is always very rewarding to see someone re-using our work, just publishing the source code is often not good enough.

maxwell8888 commented 2 years ago

Awesome, thanks for the enthusiasm :)

I think doing UI in rust is great since you can avoid all the complexity of modern web development, which seems to be the usual choice for UI. Especially for data visualization type work like this, where you might typically use Python, C++ (maybe only indirectly), and Javacript, Rust can replace all 3!

Thanks for your response to my questions, I'm taking a break from the project for a while but will create some issues and PRs when I return to work on it. Using default values makes total sense, I hadn't thought about that! That probably explains most, possibly all, of the descrepancies I saw.