scenejs icon indicating copy to clipboard operation
scenejs copied to clipboard

SceneJS as a bower dependency?

Open arjamizo opened this issue 11 years ago • 3 comments

Is there any up-to-date repository with sceneJS which can be fetched with bower? :>

arjamizo avatar Jul 31 '14 18:07 arjamizo

There doesn't seem to be. It would be nice if this repo included bower support. Would the maintainer be open to a pull request on for it?

However in the mean time, adding the following to your dependencies in your bower.json file works.

"scenejs": "https://github.com/xeolabs/scenejs.git",

then in your index.html or where have you

<script src="bower_components/scenejs/api/latest/scenejs.js"></script>

and configure scenejs with something like

SceneJS.setConfigs({pluginPath: 'bower_components/scenejs/api/latest/plugins/'})

It's not ideal but it can be made to work.

nat-n avatar Jul 31 '14 18:07 nat-n

@nat-n thanks! While you've been writing I have found this way to solve this problem. You can also do

bower install --save [email protected]:xeolabs/scenejs.git

but note that this will probably fetch (by now) scenejs#2.1.0 so correct command is

bower install --save [email protected]:xeolabs/scenejs.git#V3.1

which fetches current version or even this one to preserve current version for other ppl in team (and fight with this problem)

bower install --save [email protected]:xeolabs/scenejs.git#dbc228223485

The reason I asked this question here was I thought I need to recompile source, but it looks like in api/ there's up-to-date "binary". Anyway I wanted to use post-install hook from bower to implement that from here

Thanks!

arjamizo avatar Jul 31 '14 19:07 arjamizo

Hey all,

FWIW I have a scenejs fork that is current as of one month ago that uses semantic versioning, bower and plays nice as an AMD module (so you can use it with things like requirejs) here: https://github.com/Stonelinks/scenejs

It isn't registered on bower though, and I need to overhaul my fork as scenejs has been getting bugfixes and improvements that I stopped following since they broke things for me. I haven't had time to fix them yet.

Two things for whoever maintains the bower dependency:

The scenejs repo is gigantic

Currently when I use bower to download scenejs...

ld@dev0:~/test$ bower install [email protected]:xeolabs/scenejs.git#dbc228223485                                                                                                                                      
-----------------------------------------
Update available: 1.3.8 (current: 1.3.7)
Run npm update -g bower to update
-----------------------------------------

bower scenejs#dbc228223485  not-cached [email protected]:xeolabs/scenejs.git#dbc228223485
bower scenejs#dbc228223485     resolve [email protected]:xeolabs/scenejs.git#dbc228223485
bower scenejs#dbc228223485    checkout dbc228223485
bower scenejs#dbc228223485     invalid-meta scenejs is missing "main" entry in bower.json
bower scenejs#dbc228223485     invalid-meta scenejs is missing "ignore" entry in bower.json
bower scenejs#dbc228223485         resolved [email protected]:xeolabs/scenejs.git#dbc2282234
bower scenejs#dbc228223485          install scenejs#dbc2282234

scenejs#dbc2282234 bower_components/scenejs
ld@dev0:~/test$ du -hs bower_components/scenejs                                                                                                                                                                    
172M    bower_components/scenejs

... it is a whopping 172M, in my opinion way too big if your app ships with any amount of regularity. Whoever maintains the bower module should use the ignore array (see here) in bower.json. Most libraries I use (even really big ones) do this and are typically 2-5 megabytes on average.

Semantic versioning

Semver is good for a lot of reasons, but some people don't follow it which is fine. However, developers who use tools like bower (and npm, and rubygems, and pip to an extent) expect it. It is pretty much a de facto versioning standard at this point.

Additionally, some awesome features of those tools (like automatic updating) don't work unless you follow semver, and a few of their respective package registries won't let you register unless you use semver.

I strongly advise whoever maintains the bower module to start following semantic versioning. scenejs itself would benefit from following it too.

Current scenejs doesn't seem to have a development / release cycle as far as I can tell. All commits happen on the "V3.1" branch. This is bad because:

  • Versions of a library should be snapshots in time and never change (IE a git tag). "V3.1" is a git branch that keeps changing every time a commit is made, so it isn't clear what "V3.1" actually is.
  • It doesn't follow semver.
  • There are other branches like "v3.0", "v4.0", etc. Not clear if those are releases or not.
  • "master" hasn't been touched in three years.

This is my opinion, but since scenejs is quite a large library what should happen is:

  • "master" is unstable and where all development happens and feature branches get merged in
  • "stable" points is the latest stable version, only pulls from master
  • Periodically make releases by tagging "stable" as necessary and follow semver when doing them

This is obviously @xeolabs decision but in lieu of following something like that, whoever maintains the bower module should at least make semver tags that attempt to follow API changes with scenejs as it grows.

I'd be okay with being this person so long as I had @xeolabs blessing :smile:

Looking forward to your thoughts!

Stonelinks avatar Aug 01 '14 02:08 Stonelinks