Fork and change a plugin

Hi,

I wanted to extend the aurelia-configuration plugin, but I don’t how to compile it locally. Also I didn’t find anywhere how to do it.

Do you know how to change an existing plugin? I can fork/check it out from github, but usually there is no aurelia_project in the plugins.

Any help is appreciated.

Thanks

I’m replying to myself to push this subject up. Aurelia is supposed to be an open source collaborative platform, but no one here knows how to fork and edit a plugin.

I think this answers a little the question why Aurelia struggles to gain popularity. It seems there ain’t a real community. Just a core team working on things and a consumer group using it.

I guess you’re referring to https://github.com/Vheissu/aurelia-configuration

The approach would be to clone the repo, add your modifications and publish under a new name via npm if needed so.

Since plugins that aren’t part of official Aurelia ones might behave differently you should consult the package.json to see the available scripts. Alternatively create an issue in the repo and ask for guidance.

As for your later reply, this board is for Aurelia primarily not details for every community plugin. It would be the same like asking around for how to modify the UI-router in the angular boards and most likely not getting a reply. Besides that without proper links and steps what you tried so far people are off to second guessing. So try to be specific and certainly answers should pop up faster

Hi zewa666, thanks for the answer.

Cloning the repo is fine. The problem is how to compile it. Funny that I had to be unpleasant to get an answer.

Your comparison is disproportionate. I’m not asking how to compile an angular plugin, but generally speaking how do I setup the compilation of a forked aurelia plugin (regardless of being official or not). Using the au cli command line sets up a new project.

Anyway, thanks again and I’ll find my way through (with or without the community as I’ve done in the last 2 years).

That’s the thing about community plugins, not all of them follow a certain pattern, e.g created via the CLI. In this case it’s a custom build from @dwaynecharrington where he makes use of custom build and compile scripts within npm scripts. I’d imagine it’s a series of npm run build and deploy where you’d have to modify the package name for a different npm deployment target.

Sorry if my example wasn’t understandable, the point was that official plugins follow a certain approach whereas community plugins are done as by the authors idea. Same like in React, angular, Vue etc lands :wink:

Being unpleasant btw does often get you results but it’s seen rather rude tbh. As said if no one replies, it could be that your question is perhaps not understandable or your steps taken aren’t explained. I still don’t know whether we’re talking about the proper plugin or what you’ve tried so far

@bmarotta, I want to preface that I’m not on the Aurelia team–I use Aurelia quite extensively on several open source projects as well as at work. Asking ‘how do I compile this project’ is like asking how do you eat an oreo, theres more than one way and everyones answer will be opinionated, different, but the same.

The problems you are running into isn’t an Aurelia specific issue. Every framework goes through this, its just unfortunate that Aurelia isn’t more popular, because the problems you and many others are facing is really compounded by junior frontend developers that are unfamiliar with node/npm/javascript. Trying to find quick answers specific to Aurelia when really its a more basic question that can be answered more generally on a node/npm/javascript level.

Aurelia is just one part of the solution of creating amazing frontends, and just like the other frameworks out there, you still need to have a solid foundation of what you are building on top of. To someone new to frontend development, it seems like Aurelia is at fault, but I challenge you to go to Vue/React/Angular or whatever else is out there, and not face these same issues. Sure, you may find answers as those communities may be bigger, but the answers are the same whether its that framework or Aurelia, as these frameworks are also built on top of node/npm/js.

I’ve learned reading code is more important than writing code, and there’s a lot of code out there to read. Also, try to take on tutorials on building npm packages, even it it doesn’t have anything to do with Aurelia. You can apply those learned concepts to Aurelia or whichever framework you decide to go to next.

2 Likes

@bmarotta some plugins are not setup in a contributor friendly way and since they are not shipped by the team the only person to answer your question is the author, which might not be here anymore.
I would try raising an issue on the repo asking your question there.

@jbockle An open-source project is nothing without its community. It can have the best implementation ever, but if someone gets stuck whenever there is a problem and there is no community to support this person, and the best that he/she gets as answer is “you are not experienced enough, go debug the code”, this is an invitation to leave the community.

I started my project almost 3 years ago, and this happened very often to me, that I raised some question or got stuck with a problem and I couldn’t find any answer on any documentation/blog/stackoverflow, nor the support from a community. I gave up asking questions sometime ago and got used to just find my way through.

When I found out about discourse, I decided to give it a try. And yet comes the same old frustration again.

Thanks @MaximBalaganskiy. This is the kind of positive answer I would expect. A better and more polite way to say "unfortunately we can help you any longer ".

Trying to raise the question in this repo is useless. It is dead (I have an open question from January this year).

I feel a bit disappointed about your approach. So first you ask a vague question, then insult the whole community, then blame the framework for shortcomings of a external plugin with no relation to the core and draw your conclusion therefore that the Aurelia community is not helpful.

With all respect but being unpleasant/impolite is really not the way to go in order to ask for help. A simple bump might have brought you the answer with a much nicer tone. Pinging @dwaynecharrington directly here most likely would have helped straight away.

Also with regards to “you’re inexperienced and go debug yourself” I’ve reread all posts and haven’t seen anything like this. What @jbockle tried to explain is that you’re not having an Aurelia specific issue but a generic infrastructure one where a quick look into the package.json would have revealed the answer right away. Moreover I’ve twice replied to your question and still haven’t heard any answer to my feedback nor whether you tried the mentioned approach.

So as an advice, not purely Aurelia specific but in general for OSS projects, try to be respectful. People are most of the time trying to help you where they can. If you don’t get what you’re looking for start to rethink whether the problem is how you ask for help, both tone-wise and description-wise.

4 Likes

Dear Vildan,

Me being unpleasant was a way to draw attention (but also a reflection of my 3 years frustration on getting stuck with Aurelia related problems without finding any online help).

I really don’t understand why you don’t stick with stackoverflow and have to reinvent the wheel. In stackoverflow if I ask a vague question (which also happens) people will comment. I will refine it, people will comment again. At some point, one has a clean question that makes sense to the community and some other else might answer it or decline it.

Here I post a vague question and there is 8 days blank (no one said: please refine your question or this question is unrelated). If I start a meta discussion about the framework, 3 people jump in and answers come in few minutes time.

As a reflection: if you (or anyone here) still believes that there is a future for Aurelia, you should put your energy in building a self-sustaining collaborative community and less effort in trying to defend yourselves.

As an example: It would require less effort to refine/answer/decline in a timely fashion all the stackoverflow questions than to develop a new parallel stackoverflow with less features and that throws the connection out every 10 minutes forcing people to retype everything again.

Alright @bmarotta, got it.

@bmarotta I am the author of the plugin you speak of. I haven’t actually done anything with it in a long time. My work on Aurelia and the community plugins like the one you speak of are completely separate. The plugins on GitHub like the aforementioned configuration plugin are built and maintained in my very little spare time.

Your question isn’t specific to Aurelia whatsoever other than this being an Aurelia plugin. As you can understand, all of us work on this framework and contribute to the community for free, donating our time to not only help push Aurelia forward but also find the time to answer questions here on Discourse or Stackoverflow, write blog posts, respond to GitHub issues and pull requests.

My advice for any future questions you encounter relating to non-official Aurelia plugins like mine is to create an issue on the repository itself. For example, the configuration plugin has an issues tab where anyone can ask questions or file issues here. And understand that even if you do, I have a day job and a family to feed, I can’t solve every problem or get to every issue ASAP and at times, they might fall through the cracks and require a ping. The beautiful thing about open source is you can fork a repository and contribute back any improvements in the form of a pull request, I merge all reasonable PR’s.

For the plugin in question, my advice is that you don’t even need to use it anymore. You can achieve the same thing in code yourself without using the package. When this was created, Aurelia didn’t ship with the aurelia_project folder or anything in apps, nor did it have proper environment configurations.

Now, regarding your specific question. If you open up package.json and go to scripts you’ll see a build task which calls a bunch of other tasks to build different formats for the plugin. You can see the script here. This is standard practice for Node packages, to use a script to handle build processes.

It is pretty understandable that you did not get a response. You didn’t detail what steps you had already taken, you didn’t mention if you looked in the package.json file for a script or attempted to run them. If you asked the same question elsewhere, it would have been flagged for not being a properly formed question.

The important distinction to make here is that community plugins !== Aurelia. You’re conflating two completely separate things. The community and framework itself are separate, nobody on the core team decides what the community does or how they do it.

4 Likes

Hi @dwaynecharrington ,

Thanks for the answer. As you may see from the issues list, I already tried posting an issue on github beginning of this year, with no answer, the reason why I decided to change the plugin myself.

In between I already figured out how to compile the plugin and I created a fork out of it (aurelia-configx). I also work with aurelia only in my spare time and I also believe that I won’t have time to maintain the plugin. If you like, I’ll be more than happy to instead of maintaining a separate plugin, just send a push request to aurelia-configuration and just delete the aurelia-configx. By the way, the code in github seems to be older than the one in the npm package. Probably you never committed your last changes (in github the main class is called Configuration while in npm it is called AureliaConfiguration. I assume this is the right one).

Even if very basic, I find your plugin still very useful because I like the ability to change some of the configurations in a run-time without having to deploy a new code. For instance: if I want to do an A/B experiment, at some point in time I can decide which version to take by just changing the config.

The problem that bothers me more with the plugin is that it loads the config.json during the Aurelia initialization. I believe that this is the right place to do it, but I have some reports of errors loading the config.json (for whatever reason which is still not clear). I see that this is an open issue in github too.

For the cases that the config.json is not loaded, I prefer to take the risk of running the application with the default configs set in the code, rather than the dynamic configs from the json file. That was the main reason why I wanted to fork the plugin. For the other error reported by me, I can live with it. I just have to be carefull when creating the config file.