@leonkosak
@commondesk: It's not fair that you blame application framework for not knowing library or framework "inside" ABP/ANZ. Just accept reallity - modern full-stack web is noticeable more complex than native (desktop and other native) frameworks. There are so many libraries and frameworks and each of them have active development.
Google, does a fine job of documenting Angular. Microsoft documents ASPNET and C#. Telerik documents their proudcts.. Im happy to learn new framework, but you cant unless there is some documenation.
Modern full stack web frameworks are not more or less complicated that desktop ones. The problem is there written my many groups of people and therefore the documantion standard is lower.
Don't get me wrong, I like the platform and the product. My goal in posting this is to air out several architectural problems, and search for ways to manage these issues.
These are the problem i see
1 - New templates are made available, 6 in 2019 alone, and there is no documented way to upgrade your code to them. New templates serve two purposes, they provide new features and they fix bugs. Fixing bugs is a non-optional requirements while adding feature is completely optional.
While this is a problem for anyone who changes the source code of a large system, little to no thought has going into best practices for attempting to upgrade. We must find a way to merge bug fixes into later version.
In the past i made a suggestion that changes between each template be provided as a set of GIT patch/diff files. This way we could apply the diff's that represent bug fixes. I hope to hear more feedback about his approach
2 - Beyond adding fixing bugs and adding new ANZ template features, we as developers need to add our own change to the template. This is non-optional for us as we need mold ANZ to meet our business needs. In this thread, you will see that i made a proposal for how, ANZ could structure their system so changes could be made easyer to merge. Creating TypeScript base classes and empty Stub classes etc. I hope to hear more feedback on this approach.
3 - Source code for the system is provided, but there is little documentation for the source code. I know that asking developers for source code documenation is always a difficult subject. But for a comerical product its much more expected than for an open-source product. This is a commerical product with a $2500 a year renewal. Im not looking for source code telling me how each line works, but i would like to know many things includeing:
I applaud ANZ as their last version of the documentation. It was much improved. But I hope to see more additions in the near future. These are the topics i would find useful. What topics do you need documented?
I hope everyone views my sharp comments as a way to find better solutions to help all of us. But to solve these problems, you need to admit there are problems.
<br> <br>
From what i can see about abp.io, it appears to be a container framework around the backend of aspnetzero. (yes a vast over-simplication). but the backend of the system is not the problem.
The frontend is the problem. the problem is compounded by the fact that the angular specific internal documentation is sparse. im new to angular, but people with years of experience also find it confusing.
if this was an opensource project i would not complain. but i put down my $2500 so i did not have these sort of issues. im fealing tricked!
They keep saying that, this is a starter project, but the nasa logo on the home page, is not a startup company.
i see they just added graphql support. not sure about everyone else, but based on my limited understanding of graphql, im not going to ditch rest api's anytime soon. so why take the time to implement graphql??. they need to focus on supporting EXISTING customers, who pay yearly renewals.
But the problem is, after you use different options, those are merged with the current options, and used next time the dialog is called.
And there is not way to undo this?
Why would anyone want that feature?
The apb.notify. object in Angular is based on toastr library
https://codeseven.github.io/toastr/demo.html
And can be customized by passing a third argument.
var defaultOptions = {
position: 'top-end',
showConfirmButton: false,
timer: 10000,
padding: 0,
toast: true,
animation: false
};
abp.notify.success("The User was succesfully removed.","",defaultOptions);
If the "Excluding features using the DI object" is a non starter, I will choose to provide different versions of topbar.component.html. So i can simply not show the relivent sections at the top.
You might want to consider adding https://www.uservoice.com/ It would allow the customers to give you feedback on what changes are important and whats not. While i understand that GraphQL is a great technology, it might be voted higher or lower than other topics. The guys who run servicestack.com use it.
You really need a FAQ section in your forum. You should create multiple FAQ pages for for Angular, MVC etc. Then topics that keep coming up over and over can be better documented. I keep seeing places where someone comments and links to another post, which links to another post. Its a mess. A FAQ page would be the place where these reoccuring posts can be moved to.
Any dates on when Metronic V6 or aspentzero V7 are scheduled to complete?
Your company is at a intersting stage in development. You got to where you are by adding new features to attract new customers. But now, you have a lot of customers who all make yearly renewals.. So you need to decide which group you want to continue to make happy. I think you should add more tools and support for your existing customers.
If your company is just to "provide a startup template" and its very costly to upgrade templates, few of your existing customers will ever upgrade, and therefor will not see the new features. Why would i continue to pay you yearly support, if you make it difficult to upgrade to the latest template where bugs are fixed and new features added.
Thanks for taking the time to read my comments..
Mitch
@ismcagdas, @maliming -- any comments on my last past would be greatly apprciated!
any update on a FAQ???
I see you're saying this is the fix
https://github.com/aspnetzero/aspnet-zero-core/commit/c4fa5baeb2974c62937fa0be93f6b1439ca4e177
??
There is a fundamental problem here.
Your team see's new features as a benefit, so adding more of them in every release is a good thing.
I view new features as something that i need to, test, document and support, and many of these features don't make sense in my business use case.
I view new features like a menu in a restaurant. I like that I can choose different things to eat, but i don't want to order ALL of them every time i come into the restaurant. Every time you upgrade i need to go through the process of removing items i don't want from my order.
For example:
As i've stated in other posts, i want to support continuous integration and there for do not want to login as admin, and unchecked features in order for the site to be usable.
From reviewing the HTML, I see that some of these feature can be disabled, via ngIf. But its very confusing to figure out whats required to disable each feature.
These are the various techniques i have found that you make use of.
And now every-time you come up with a new release, i need to make sure that any of the changes i've made are re-implemented in the new template. So far in 2019 you have updated the template 6 times.
So, i know that you're going to fix the problem with multi-tenants being enabled by default in your 6.9.2 release? I want to use it since its a problem for me. But i will need to re-implement, test and certify all of the other changes i made. Its a big mess.
I have some thoughts on how you might consider fixing this problem
While this is not perfect, it will be much easier to merge this change when a new version of the template is made available because, all changes are separated into a different class.
I'm suggesting that you refactor your entire code base and make those changes.
For every UI component, you would provide a class with no methods and a constructor that simply calls super(args). Customers will have the option to customize the empty class named XXX and ASPNETZERO will update the logic in the class named XXXBase.
This change would not effect existing customers who don't modify the system, but would provide a methodology for supporting changes with customers who must modify the system.
3. Another variation of the base class trick is this. We sometimes need versions of your pages that run on different devices and therefore need a different html or css definitions. What we do is to:
I used this as a way to remove UI elements from the topbar.component.ts file. I used this trick and provided a templateUrl directed to a html file with all of those elements removed.
Conclusion I've been a developer for many many years and I really like your framework. But, as a customers that must make changes to what feature our users see, its becoming very difficult to support your platform without changes like i've described above. You really should consider providing a technique like ive desribed or something better.
Thanks for your consideration
Mitch