Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Meteor integration #15376

Closed
wants to merge 8 commits into from
Closed

Meteor integration #15376

wants to merge 8 commits into from

Conversation

dandv
Copy link
Contributor

@dandv dandv commented Dec 16, 2014

Hey guys,

This PR lets you publish Bootstrap to Atmosphere, the package repository for Meteor.js. Between Meteor's 21k stars and Bootstrap's 75k, we hope to get even more users to both projects.

I've included the Meteor publishing task in Grunt's dist task, and have already published the current version, so there's nothing to do for now.

Best regards,
Dan & a bunch of Meteor 3rd party library maintainers

command: [
// Make sure Meteor is installed, per https://meteor.com/install.
// The curl'ed script is safe; takes 2 minutes to read source & check.
'type meteor >/dev/null 2>&1 || { curl https://install.meteor.com/ | sh; }',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Considering that only the Core Team would ever run this task, I think we can just omit this and instead put a comment about it requiring meteor to be installed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving to .travis.yml so CI tests can include the Meteor integration.

// Full distribution task.
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js', 'meteor-publish']);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dist is meant for use by regular Bootstrap users, so publishing shouldn't be part of this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed. Where should be the meteorPublish task be included?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nowhere. But we have a checklist that defines the steps in our release process. We would add grunt meteorPublish to that checklist if this PR gets accepted.

@hnrch02
Copy link
Collaborator

hnrch02 commented Dec 16, 2014

I'd rather move the top-level meteor folder to grunt/.

},
meteorCleanup: {
// remove build files and package.js
command: 'rm -rf .build.* versions.json package.js'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use Grunt's clean task instead?

@cvrebert
Copy link
Collaborator

@dandv So, you mentioned:

[...] we have pass-through package installation via bower: or npm:

Then, what exactly are the benefits of making Bootstrap a "native" Meteor package?

@dandv
Copy link
Contributor Author

dandv commented Dec 16, 2014

@cvrebert: thanks for the inline comments; I'll address each.

Regarding the benefits of pass-through package installation: we don't have that yet - it is just a proposal under discussion. When/if this happens, the wrapper would be very thin, automatic, and by necessity, too generic.

Some of the main advantages of an integration "straight from the authors" include Meteor-specific customizations (e.g. automatically initializing widgets in newly rendered templates), package-specific tests (such as those included in this PR), and precise control over what goes in the package (we had for example a problem with naive wrappers of Font Awesome that included blindly the source font files).

@dandv
Copy link
Contributor Author

dandv commented Dec 16, 2014

@hnrch02 - moved meteor under grunt. Thanks.

@cvrebert
Copy link
Collaborator

Some of the main advantages of an integration "straight from the authors" include [...] precise control over what goes in the package (we had for example a problem with naive wrappers of Font Awesome that included blindly the source font files).

bower.json already has that data :-)
(And npm should soon too: #15397)

# Install meteor
- curl https://install.meteor.com | /bin/sh
# Install spacejam, Meteor's CI helper
- npm install -g spacejam
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, this might screw with our dependency caching. Will have to investigate a bit.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems unnecessary since you're already adding spacejam to devDependencies in package.json

@dandv dandv closed this Dec 19, 2014
@dandv dandv reopened this Dec 19, 2014
@dandv
Copy link
Contributor Author

dandv commented Dec 19, 2014

The two errored builds are because npm install -g spacejam (which fails because of a node issue) was cached. I had since removed that line from .travis.yml. How do we bust the cache?

@cvrebert
Copy link
Collaborator

Pull request builds by folks outside the Bootstrap Core Team don't use any cache.
Sounds like we need to set Travis to specifically use Node.js v0.10.33 until that Node.js bug gets resolved.


# Issues

If you encounter a Meteor-related issue while using this package, please CC @dandv when you file it in this repo.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not clear what "this repo" refers to.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sending a revamped README in a bit.

@cvrebert
Copy link
Collaborator

Since you don't seem to be trying to include the .less source files, I assume packaging(/build?) conventions around Less/Sass aren't yet established for Meteor?

@dandv
Copy link
Contributor Author

dandv commented Dec 19, 2014

Since you don't seem to be trying to include the .less source files, I assume packaging(/build?) conventions around Less/Sass aren't yet established for Meteor?

Correct - there's ongoing discussion.

@cvrebert
Copy link
Collaborator

Okay, so should the ability to use .less be mentioned in the README as another reason to use Nemo64/meteor-bootstrap then?

@cvrebert
Copy link
Collaborator

Well, I'm personally basically out of nitpicks, but I will echo several other of the first-party package maintainers you've contacted in saying that Meteor/Atmosphere is by far the most-burdensome-to-support package manager I've seen thus far. I encourage y'all to highly prioritize external bower/npm/etc. package support (MeteorCommunity/discussions#1).

@mdo
Copy link
Member

mdo commented Dec 23, 2014

Dang, this is kind of a lot of stuff to add just for one (more) package manager. My hesitation here is adding this functionality into the project and having no one who actively maintains it on our team. I'm unsure if anyone on @twbs/team has some Meteor experience, but so far it's never come up.

Any thoughts on balancing the code additions with that?

@dandv
Copy link
Contributor Author

dandv commented Dec 23, 2014

Well, the bulk of the Meteor support are the tests, which I thought would make for a solid integration. Out of the 10 changed files, five deal with tests (two sources, then one new dep in package.json, one in .travis.yml, and the Grunt tasks), two are package definition files (can't get around that really), one is a two lines of convenience code (init), then we have a README and a .gitignore change.

I could trim that to just the two package definition files and the Grunt tasks if we want to be extra lean. The Meteor <-> Bootstrap integration is very light by comparison with, say, Sortable. Essentially, the package only lists the .CSS, the .JS, and the Glyphicon fonts in a manifest file. The init code is just to make things extra easy for the developer.

In any case, I'll be active in the open source community for the foreseeable future and will be happy to jump in whenever the Meteor integration needs attention.

@cvrebert
Copy link
Collaborator

@twbs/team Pinging for more opinions. We should try to come to a decision on this.

@cvrebert
Copy link
Collaborator

@dandv Based on https://groups.google.com/forum/m/#!topic/meteor-core/DPd6XK4Ow-w , sounds like the Meteor devs are against non-native-Meteor Atmosphere packages, like this would be?

@dandv
Copy link
Contributor Author

dandv commented Jan 26, 2015

@cvrebert The Nov 2014 Google Groups thread is rather old; the current consensus is at percolatestudio/atmosphere#297 (comment). TL;DR - if this PR isn't accepted, it's no big deal; we'll host the integration in the MeteorPackaging repo. Meteor are for Meteor integrations on Atmosphere for non-native-Meteor (i.e. 3rd party) packages like Bootstrap. That's how we have 3000+ packages; only a small percentage of those are Meteor native ones, and most are wrappers (unfortunately often multiple poorly updates wrappers dating from the days before the integration efforts).

@mdo
Copy link
Member

mdo commented Jan 30, 2015

I think I'm a pass on this unfortunately. It's not something most of us on the Bootstrap team use at this time and as we're trying to keep things super lightweight on our end (especially as we head into v4), this would be a bit of a step in the opposite direction. I understand the usefulness though, and deeply appreciate your level of commitment to this effort. That goes a long way in my book :).

Let us know how we can help put some attention from others on this. We have the Expo resources page, but if this is a separate package, feel free to ask for a tweet or two about this down the line.

<3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants