Hello,

I've been following JMeter for a while now, even did a separate project based 
on JMeter (YaMeter.com ) so I figured I should mention some (technical) 
concerns of mine about JMeter.

I thought about sending multiple emails, each about a single aspect, but I will 
just list everything here and people are invited to only answer the subset they 
care about.

1. Userbase

It seems to me there are no clear metrics about the JMeter userbase. We have no 
phone-home, no plugin portal, no download statistics(!?) so we can only use 
indirect means of estimating the userbase: stackoverflow questions and such.

This seems a very poor state of affairs. Resources are scarce: how do you know 
what to focus on if you have very little insight into who your users are, what 
are they doing and where are they struggling?

1.1 Metrics

I believe it is possible to add usage metrics to JMeter while respecting the 
ASF policy on privacy, etc.

It's also unclear to me how download stats are not shared by the Apache mirrors 
(any ASF document explaining this policy?).

2. Speed of development

Compared to some of the plugins, JMeter seems to move very slowly. This might 
create the impression of stability but I believe it's just a sign of being 
resource constrained.

Are any companies putting resources into JMeter? I see a lot of companies / 
startups trying to make money off JMeter but how many are contributing back?

BTW, one reason I decided to do YaMeter.com instead of trying to push into 
JMeter proper is the approval speed. Getting a patch in seems to take a lot of 
effort and I can only imagine how long it would have take to try something as 
large as what I did with YaMeter.

3. UI

The JMeter UI needs some improving. The problem is not that it uses Java / 
Swing because even Swing can be made to look good but we need people to look 
into this. Is it "good enough" for people being forced to use JMeter in a 
corporate setting? Would an user pick it just based on the UI?

3.1 Swing

If Swing remains the future of JMeter, I suggest looking into a better 
framework like Apache NetBeans Platform which provides a lot of useful things 
for desktop Java apps.

Generally speaking, it would be good to split the UI from the "core" so we have 
some path where we evolve to some other UI.

3.2 Web based

Alternatively, a web-based interface could be made for JMeter. Any interest in 
this?

Just like companies use local GitLab installations, I am certain a lot of 
companies would install a local Apache JMeter Web Portal where all the load 
testing would be centralised.

4. Plugin Manager

It seems unacceptable to me that JMeter does not have a Plugin Manager and a 
plugin portal with some lower-usage plugins (eg. mongodb).

It's acceptable for other plugins to exist elsewhere, but those should be just 
another "PPA" (see Ubuntu PPA) or another "plugin repository" URL to register.

5. Out of the box experience

The way I see it, Apache JMeter is not just a "platform" with some core files 
and external plugins but something usable out of the box.

So, except niche situations, users should be catered by the default JMeter 
install.

5.1 HTTP2

A major problem being the lack of an official HTTP2 plugin, which people have 
to take from elsewhere. Blazemeter is probably quite happy with their 
implementation being used since it funnels people into their services.

6. Project based

I find the whole configuration .properties file a very poor solution to the 
notion of a "project". If a JMX needs a .properties change, then those two 
belong together.

JMeter should have the notion of a 'project' and maybe even be capable of 
having two projects open at once. And executing two unrelated tests at once. 
(Same for servers perhaps?)

6.1 Too many .properties

I also believe JMeter tries to be too configurable sometimes with flags for 
everything.

7. Module system

JMeter is using a lot of reflection to reinvent its own quirky module system 
(which provides the way the plugins work).

This needs some standardization work.

The NetBeans Platform, for example, comes with its own module system that also 
supports OSGI bundles (another module system). Then, there's the JVM service 
locator (for services) and the Java 9 modules.

8. Remote is using old technologies

RMI is a killer in modern setups. It needs open ports on both the slave and 
master for communication which only makes sense within the same intranet and 
it's a pain to configure when using Cloud resources.

The whole communication between JMeter client and servers should be rewritten 
using more modern protocols.

9. Cloud aware

The notion that the user tries to configure N servers then gives JMeter a list 
of IPs for remote load testing seems... primitive. This is something I've been 
trying to solve with YaMeter.com

10. Packaging

JMeter should be everywhere. Official Docker files, AMI images, etc.

11. Pipeline aware / agents

JMeter should think more about making it easy to be hooked up into a CI / CD 
pipeline.

12. Script files instead of JMX

The XML files are a pain to diff and people like to track / compare changes in 
modern devops shops.

Maybe a switch to YAML might suffice, but I believe a new scripting support 
(based on Groovy or whatever) should be developed.

--emi

Reply via email to