5 ms·
I'm making Windows/.Net based app for managing queues - QueueExplorer. Started with MSMQ support back in 2005, now it supports Azure Service Bus, RabbitMQ and A
by grujicd 5y ago
I'm making Windows/.Net based app for managing queues - QueueExplorer.
Started with MSMQ support back in 2005, now it supports Azure Service Bus, RabbitMQ and ActiveMQ. It's old fashioned perpetual licensing, so revenue is a rollercoaster. Because of that, it's emotional rollercoaster as well. Good thing is you get paid for full license at the time of purchase instead of collecting it in 10-20 months. Bad thing is every month starts at zero.
Although .Net went multiplatform years ago, my app relies on WinForms a lot so it's Win only, except through Wine. I would love to support Mac as well but the only realistic option looks to be Electron based, and it would be a significant step back for my Windows users. Maintaining two different GUIs looks like a problem for micro company.
The best thing about desktop software is it can't break for all the users at once like server-based app can. That gives some piece of mind when you're micropreneur. Sure, there are bugs, but they affect only users who downloaded buggy version. You can't crash all installed instances just like that.
The worst thing is, it's hard to ask for a subscription. Yes, I hate it as a user, but would love it as a business owner :)
https://www.cogin.com https://www.cogin.com
- thom 5y agoAny plans for Kafka support? I was frankly a bit shocked when Conduktor raised investment: https://venturebeat.com/2021/11/22/conduktor-which-brings-a-user-friendly-gui-to-apache-kafka-nabs-20m/ https://venturebeat.com/2021/11/22/conduktor-which-brings-a-... If anything, it's a testament to what an absolute pain it is to develop on existing message queue/event streaming platforms, so it's clearly a valid niche.
- grujicd 5y agoI would love to support Kafka, and even made a simple prototype. However, hit a brickwall when discovered that .Net client (by Confluent, other clients seem to be deprecated) does not have all the features the Java one has. For instance there's no way to get current consumer offsets and I think's something that should be available in a management app.
- coder543 5y agoIf you really want to support Kafka, I think there are options. Besides the obvious option of forking the .NET client to add these missing features, you could also write some kind of "plug-in" in Java or Go or some other language with a fully featured client library, and communicate with it over some type of local RPC from your main application to query against Kafka. Whether it is technically feasible or not, it may not make business sense for you, which is fine, just interesting to think about the options. I'm slightly surprised that the .NET client isn't fully featured, but I've never tried to use Kafka from a .NET language before.
- grujicd 5y agoI suppose .Net client has everything that typical Kafka app needs. Just not everything that management app would need. Btw. that's also the problem with all other queuing systems we support. Their APIs are made to support Send/Receive scenarios, what these systems are built for in the first place. They rarely support "delete message in the middle of the queue", and never "replace message" or "insert message at arbitrary position". I guess API authors are worried that such functionality would lead to apps mistreating queues as a kind database, which is not intended use case. However that sort of functionality is often needed when you're troubleshooting and fixing a problem. It's not like everything always just works. In reality things go wrong, message format changes, invalid data goes into queue, etc. And then we have to abuse existing API and/or give only subset of useful features to users. About combining Java or something else - that might be possible from technical point of view, but remember this is a desktop app which ships as an installer. Not an environment you'd set up on the server. We would have to include another runtime and make sure it works correctly in different scenarios on end-user machines.
- mjul 5y agoIt’s been quite a number of years ago, so I don’t know the current state, but back then we used IKVM to run some finance Java libs in .NET applications. Worked like a charm. Basically, it is a JVM implemented in .NET so you can easily interop to the missing management APIs from the Java client and there is no extra runtime install to worry about or calling out of process. Might be worth a try.
- Melatonic 5y agoYou should just sell maintenance subscriptions / better support tiers - lots of software companies have been doing that for years. Perpetual license and if it breaks for someone using it at home they can go to the free support forums. Large company that needs it fixed in a super quick turnaround? Monthly fee for priority.
- grujicd 5y agoWe do have a maintenance option, but we don't push it that hard and it doesn't bring in significant revenue. This could be handled much better I'm sure. We also have major upgrades which do bring in some more cash since they're more expensive and more users buy them. But it's every 5-6 years. And it's still significantly lower than regular new licenses. I'm thinking about adding a Saas "Team" edition, which would offer centralized management of users, connections they use, permissions, with some auditing etc. First problem is we would have to store some sensitive data (connections) which gives me a security scare. Second problem is we'll introduce central point of failure which gives me another kind of scare. And very soon we'd have different versions of client software running on end users machines which should all work correctly with a server. That's a third scare, a versioning one.
- Melatonic 5y agoDo some type of integration with Azure AD so you do not have to worry about the security or any of that? Plus clients will be familiar with it and could use existing users in their infrastructure.
- grujicd 5y agoThat's a good suggestion. But in reality we'd have to support both Azure AD and our own storage for users who are not using Azure AD. And possibly even on-premise version, which is additional complication. It's beginning to look clear why it's an idea from few years ago but still not implemented.
- 5y ago
- rozab 5y agoHave you looked into .NET MAUI yet? I'm cautiously optimistic, but haven't dug into it. Should be releasing Q2 this year. https://github.com/dotnet/maui https://github.com/dotnet/maui
- mwattsun 5y agoI gave Flutter another try today and was surprised to see it now builds native Windows applications in two flavors, standard and UWP. They don't recommend shipping anything with it yet, but it looks like a good path.
- grujicd 5y agoMAUI doesn't seem to have Linux support for now. There are some community efforts but nothing here yet. That pretty much kills multiplatform aspect. At least for category of server management tools where my product belongs. Ok, Win + Mac is better than Win only, but if I have to redo entire app it should better support Linux as well. Also, it's hard to bet on a new MS GUI framework, when they released and abandoned several in the last decade. Will it be supported in 5 years as a minimum? Yes, Winforms looks outdated, but it still builds and works as it did back in 2005. One more thing, I'm not using vanilla Winforms but also excellent DevExpress controls. For example Winforms has a grid, but DevExpress grid is highly customizable, works ok with 100k rows, has filtering, sorting, etc. It's not only about base GUI framework, it's also about entire ecosystem of GUI controls. And maturity of these controls. E.g. Devexpress has MAUI grid, but I don't expect is to be as mature as winforms one. I'm not saying that MAUI couldn't be useful for some cases. Even many cases. It's just not yet ready for my kind of software.
- idiocrat 5y agoI am looking forward for the upcoming release of WiseJ 3. WiseJ is a drop-in replacement for WinForms apps, to make those run in a browser. The WiseJ 2.5 is yet on .NET 4.8, but the new WiseJ 3, planned for March, is running on .NET Core. The key features for me are: (1) all the wiring is hidden, so no need do not deal with Javascript. All processing is done in server. (2) Refreshing the browser by pressing F5 keeps user's session. (3) Background tasks work seamlessly with UI updates. (4) Can use System.Drawing. It is a paid library, but very reasonable price.
- foepys 5y ago> It is a paid library, but very reasonable price. That's not a bad thing. My company pays quite a bit of money for various libraries and if we notice a bug in any of them, we report it and it's usually fixed within 4-6 weeks in a new release. There is no discussion with 5 people chiming in and you don't need to follow up constantly. Report it once, answer maybe one or two questions on how to reproduce it, and even very complex bugs will be gone. I know that there are a lot of well maintained free projects but being able to write a report and to be guaranteed an answer back on the very next day is very calming when you have customers waiting.
- dep_b 5y agoConverted a simple WinForms app for scanning and reordering medications using Xamarin Mac and storyboards. It was relatively painless.