Skip to content
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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fall release 馃崅 (Clockwork 6.0) #498

Open
36 tasks
itsgoingd opened this issue May 12, 2021 · 10 comments
Open
36 tasks

Fall release 馃崅 (Clockwork 6.0) #498

itsgoingd opened this issue May 12, 2021 · 10 comments

Comments

@itsgoingd
Copy link
Owner

itsgoingd commented May 12, 2021

This issue tracks the progress on the next major release (Clockwork 6.0), scheduled for Fall 2021.

Clockwork 6.0 will be the next major release introducing new features, improvements and focusing on polishing the overall user experience.

Must have

The most important changes most likely to make it into the release.

  • explore an event-based metadata format
    • currently we use a json-based metadata format where each request is represented by a single object with pre-defined schema
      • pros: very simple and straight-forward implementation, plain-text readable
      • cons: requires the whole object to be loaded in memory before writing out the json (very memory intensive), updating partial metadata would require re-parsing the whole json
    • a different idea would be to have an array of events like "database-query" or "log-message" with respective payloads
      • pros: events can be written as they are processed (probably in batches, very low memory usage), updating partial metadata is free
      • cons: more complex implementation when both writing and parsing, less plain-text readable
    • Clockwork App would stay compatible with the old format forever
  • user-interface polish / improvements
    • improved UI for each specific platform
  • toolbar improvements
    • dark mode
    • ajax requests support
  • explore optional alternative ways to use Clockwork
    • adding an errors/warnings count to the browser toolbar would provide immediate feedback about performance issues in the current request
      • this would be part of the browser extensions
  • add tagging and starring requests
    • requests can be tagged both server-side and client-side additionally
    • requests should be searchable by tag
  • add ability to (temporarily) disable Clockwork on runtime
  • add ability to show only "my requests" in Clockwork App
    • this is implicit in the extension, but the web-app version shows all requests
    • implementation would most likely be based on client ip
  • upgrade Clockwork app to Vue 3.0
  • new open-source the website
  • consider requiring PHP 7.x
    • currently we still support PHP 5.5 as our lowest PHP version
    • previously we updated PHP requirements only when we actually needed some features from the newer version
  • password removal improvements
    • configurable password removal - feat
    • remove passwords from the Cookies header - feat
    • remove authentication tokens from headers

Nice to have

The less important changes and changes unlikely to make it due to time constraints or implementation concerns.

  • desktop app (beta)
  • Python/Django and Ruby/Rails integrations (alpha)
  • profiling levels with per-request selection
  • improve handling of large metadata
    • we should in general avoid running out of memory at all costs and prefer collecting partial or no data
  • improve assets handling
  • add api docs - feat
  • add ability to reorder tabs
    • first available tab in order would be the default tab
    • lots of annoying UI code to write (animations, touch support)
  • show duplicate queries in the performance tab - feat
  • add Laravel authentication support
  • don't instantiate storage when Clockwork is disabled
  • collect applied scopes for eloquent database queries
  • logging binary data - feat
    • if we find a way to detect binary data without a large performance impact
  • request replay
    • this is very tricky to implement for non-GET requests in cross-platform way
  • collect (simple) responses - feat
    • main concern here is the response size
  • unload old requests
  • better symfony support
  • monolog 2 support
  • Redis storage implementation
  • xhprof support
  • revisit tab badges for like fourth time
  • ugly scrollbars on light OS theme w/ dark Clockwork theme make me sad
  • log messages limit? - feat
  • health check command
  • add support for compressed Xdebug output
  • show multiple requests in a single timeline
    • the goal is to make the execution order more obvious - feat

Release schedule

Clockwork follows a loose yearly release schedule with one major release in late summer / fall and multiple minor releases in-between.

@mahagr
Copy link
Contributor

mahagr commented May 13, 2021

One very useful feature for big data would be to be able to select which log messages to filter (error, info, debug individually), just like PHP debugbar does with its tags. It shows all the used log levels as "tags", which you can click on to enable or disable them.

This could be even implemented instead of profiling levels, giving more freedom to what will be logged. As in large applications, it is pretty useful to have more levels than just the log ones. I generally use dot-separated levels, such as debug.login.

Another feature I would add to the list with PHP 7.x support is to have proper docblocks and phpstan tests.

@itsgoingd
Copy link
Owner Author

Well, we already can filter by log level via the search input, eg. level:error. This has been supported for a long time, but still needs to be documented. Or made more obvious in general, maybe even by adding additional buttons for the log level as you suggest.

The idea behind profiling levels is to avoid collecting unnecessary data, lessening the performance impact and disk usage. Eg. the routes list is something I would typically leave disabled as I don't really need it day-to-day. But it might prove useful like once a month when I'm debugging some routing issue.

It would be cool to be able to tell Clockwork "for my next few requests also collect routes" from the Clockwork app itself. Or collect cache query values only for particular requests. Or collect a more detailed profile for one in 100 requests. Etc.

@itsgoingd itsgoingd pinned this issue May 15, 2021
@mahagr
Copy link
Contributor

mahagr commented Nov 25, 2021

@itsgoingd Any progress on this one?

@itsgoingd
Copy link
Owner Author

@mahagr Hey, thanks for the interest!

Unfortunately I don't have any good news to share. I barely started working on this. So no new release this year. :(

@itsgoingd
Copy link
Owner Author

Figured out I should post some update, since Summer/Fall 2021 is already long in the past and Clockwork 6 clearly was not released.

Unfortunately I was lacking time and motivation to work on the new release last year and couldn't meet my self-imposed yearly release schedule. Instead of rushing things or delaying the release, I've decided to completely skip on the 2021 major release.. what could be a good thing after all! As this gives me way more time, a full year (well, like 8 months at this point), to work on a more ambitious and bigger release.

This year I've not been much more successful so far. I've been experimenting with some new UI ideas (planning on a bigger UX revamp), but haven't done much else. But I feel more productive days coming.

I just wanted to make sure nobody thinks this project is dead or anything, I'm fully committed to delivering a new Clockwork release. At some point.

I might start posting some updates when things start moving on my blog or twitter, so feel free to follow me at @itsgoingd if you care.

@Wulfheart
Copy link

+1 for Ajax request support. It is quite annoying when using it together with livewire.
Maybe (!) I have the time to provide some fix specifically for Laravel Livewire requests.

@Braunson
Copy link

Has this project become forgotten? I see recent updates to the master branch but no releases since exactly 2 years ago?

@itsgoingd
Copy link
Owner Author

Hey, new releases are coming this year. Btw. the last release still works completely fine, even with the latest Laravel release, I use it daily myself. :)

@Braunson
Copy link

Braunson commented Feb 1, 2024

@itsgoingd Awesome, yeah no issues right now using the current release but there's some new features listed that would be really nice to have. 馃槃 ie. Livewire/ajax request support, improved Symfony support, request replay, Laravel Auth support, etc.

@mattvb91
Copy link

mattvb91 commented Feb 2, 2024

Just wanted to 馃憤 for show duplicate queries in the performance tab when not using eloquent relationships. Would be really nice to be able to neatly spot mysql raw queries too

@itsgoingd any chance you could tag the current master as its been nearly 2 years.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants