-
Notifications
You must be signed in to change notification settings - Fork 7
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
Official Meteor integration directly from 3rd party libraries #14
Comments
@dandv, re 2, yeah, if there's no module framework found it exports to window. Which is bad for a Meteor package. It's easy to get around, but unfortunately requires extra files. e.g. chuangbo/meteor-marked@e55d9c2. Maybe part of this issue should be to either support that type of wrap policy natively or allow a |
@gadicc: how about just checking if |
@dandv oh yeah sure, if you have access to the main package itself... forgot about that :> i mostly wrap git submodules, so don't like to touch the actual code. what you describe would work perfectly of course. have a vague memory though that |
👏 |
Today I'm happy to present the official d3 integration. Please log into Atmosphere with your MD account and, Thanks! |
@dandv cool - is it the d3js or meteor that maintains the package? |
@raix: the best permissions combo I've found so far was to create an organization for the library, add myself to it so I can publish the package (helps to remove barriers for the maintainer and make it as easy as possible for them), then ask them to sign up for an MD at meteor.com and tell me their username. Really a 30-second process. Then I'll add their username to the org so they can |
@dandv that makes sense - it would be nice if possible to add the |
Do you mean https://github.com/jashkenas/underscore already has A Meteor integration for component would look very much like the d3 integration. I wanted to keep all meteor-related files in the same directory, and |
@dandv just wanted to commend you on your hard work here, and particularly, your vision... to be honest the thought of getting 3rd party libraries to directly publish Meteor had never occurred to me before. you're doing a stellar job, and I can see how it's been infectious. this is good for so many reasons... i was always against wrapped packages being in atmosphere when they offered nothing new on their own (you and I have discussed this before). but this approach is a real pleasure. latest official release guaranteed, and it means that even if I do an integration package, that say, offers templates etc to use the lib, I don't need to release for every new version and an app developer can still use my package and the latest version of the lib. it's awesome :) also i feel you've done a great job of instilling meteor's place in the JS community... I'm starting to feel more like a 1st class citizen now :> |
@dandv should we hit famous? |
@gadicc: are you chasing me?! ;-) Since I was already in contact with Semantic-UI maintainers I decided to get their opinion before starting chasing meteor wrapper maintainers asking to deprecate packages. In the discussion @dandv already linked we're also trying to figure out which is the more appropriate style language to be used as the main official package: CSS, LESS, SASS, etc. Tnx, |
@splendido, i'm following everyone doing good work in the community :> i'll wait and see how the discussion plays out, I'm less knowledgeable about styling formats. but back to the JS discussion, which I guess is related... @raix, personally i find it annoying to both use and maintain split-up packages like that. also, it's quite likely they might want e.g. It's very clear where this is going :) Packages should include everything, and then you are going to rework famono to work directly on installed packages too :) It's good that you already got familiar with publishing meteor releases :> This is no small feat, and I think also, a revolutionary gamechanger, but your track record is impeccable, so expecting the proof-of-concept tomorrow sometime :> |
@gadicc Haha, right on |
I just wanted to tell you guys that I'm sitting on the "documentcloud" organization for the day underscore/underscore-contrib/backbone wants the namespace. Working on getting meteor support into the official repos of the wrapper packages I'm maintaining too |
Hm, velocity package is not updated on Atmosphere? I thought it should be updating automatically? |
Hey all, good news: ES6 modules are work in progress, so soon enough it'll be easy to import many of these libraries without needing to make wrapper packages. meteor/meteor#5475 |
I'd highly recommend just using |
@dandv @splendido, I am considering to wrap mathquill, a library to make typing math on web as easily as writing, so could you please add me to MeteorPackaging organization ? Please refer to https://github.com/raohuaming/mathquill/tree/meteor-integration, and see if that looks good. thx a lot |
Hey guys, anyone interested in helping us get Foundation for Sites 6 ready to rock on Meteor? We've never set up a Meteor package before and we want to make sure we do it properly, with auto updates, etc. |
@zurbchris Hi, I think that now the 'zurb:foundation-sites' package should work well. You need to remember about package.js file - versions, the scss file list in 'api.addFiles' need to be up to date. I think there is no need for this kind of auto packaging. You have your own 'Zurb' organisation on atmosphere so everything is ready to go. You just need to change the version in the package.js file and 'meteor publish' when the Foundation version changes. (of course if there will be no other scss file structure changes) There is even separate docs for it which is cool. It looks like real maintained package and not some automated build. I could keep an eye on it if you want. I maintain Foundation 5 package so there is no problem for me. and congratulations, Foundation 6 is awesome :) |
Thanks @juliancwirko we hope everyone likes it. I just want to make sure we are doing what we need to do to give the Meteor community access to the framework. Though we may ask for assistance in doing so from time to time 😄
|
@zurbchris just in case you don't want to manually run It's working just fine for a number of packages, just let me know if you're interested to get more details. Cheers, |
@dandv and @splendido would it possible to be added to the MeteorPackaging organization? I'm currently working on packaging gitgraph.js, and I'm sure I'll be able to contribute more packages going forward! Thanks. |
I recently happened upon the nice demo at https://deck-of-cards.js.org/ ; since I wanted to use cards in a Meteor app I started a PR at deck-of-cards/deck-of-cards#26 and it would be nice to be able to transfer my fork into MeteorPackaging. This would be very nice for creating card games and other fun stuff. |
@dandv , @splendido I am working on a package for seiyria/bootstrap-slider, could you please add me to the MeteorPackaging organization. It will be my first contribution and hope not the last. |
@dandv , @splendido , Can you please add me to the MeteorPackaging organization ? I want to package those librairies :
Thank you ! |
Oh yes, I was just yesterday looking into packaging simple-peer, but then I discovered that it does not support MediaStream on the server, so I gave up. |
@mitar :
Sorry, but I don't really get it : Isn't simple-peer only client-sided ? Why should a meteor wrapper for simple-peer contains server code ? ( I might not understand at all what you meant). In order to not pollute this thread with messages about a simple-peer wrapper for meteor, how can I send you messages ? If you have some time to spare, I'll might have some questions ? (As you've already tried to create a package for simple-peer). |
No no! The beauty of simple-peer is that it works in node.js as well! And this allows a complete new programming paradigm, namely that you can simply use WebRTC for all data transmissions, so server is then only one peer, and you can have client-server, server-server, client-client communications, all with same technology. Even more, connections can be based on SCTP, have multi-path routing, you can have data packets which are reliable or unreliable, you can even have backpressure support (imagine that you could push back on Meteor publish because client cannot handle observes as quickly as server is pushing). So yea, that is the future. No more Websockets but simply one transport for everything. Where you can publish directly between clients as well. Crazy stuff. Anyway, I think if you really want to package this you should make sure it works both on client and server side. This is how Meteor packages are normally packaged. With both client and server support. And especially for this package which has support for both out of the box. That could be a great replacement for meteor-streams. Sadly, it does not have support for MediaStreams which what I needed. I think the best would be to open a new ticket here in this repository and we can have discussion there. I do not have time to help you much though. No time. |
Opened jsplumb/community-edition#143. So yea, I think that WebRTC in Meteor can be quite a deal and a big paradigm shift. |
Thank you for your answer ! Helped me a lot understanding the exact point of simple-peer |
@dandv , @splendido , Can you please add me to the MeteorPackaging organization ? I want to package this library:
Here is my work so far: Thank you ! |
@dandv , @splendido I have packaged Clipper.js. I want to do it the right way, however the library is hosted in Sourceforge and not in Github. Will it be an issue? |
Hey guys, It might be that we won't need wrapper packages and autopublish.meteor.com anymore! |
autopublish is pretty nice for pure meteor packages too, but it's not the end of the world if I don't have it =) Some "wrapper" packages are still gonna be needed, for example https://github.com/rzymek/meteor-fullcalendar. However these kinds of package could just have weak dependencies too, but if there are packages that wrap npm modules with meteor specific code, I don't think you can have weak dependencies on npm packages? |
Also client-side only wrappers? i.e. non-npm |
Honestly I still had no time to look well into 1.3... :-( |
Does autopublish still work? Dogfalo/materialize#3057 |
I believe autopublish has been decommissioned |
Autopublish no longer works because meteor.com hosting was retired. The guidance is to use npm packages directly with 1.3+, but the problem is this: |
yes guys, no more autopublish.meteor.com. |
Have you applied here? http://go.meteor.com/PackageDemoGalaxyRequest-lp.html |
If you're looking for a popular 3rd party library on Atmosphere, chances are you'll find several wrappers, in various states of maintenance. To avoid this problem, several Meteor community members have started to provide authoritative, high-quality, Meteor integrations of 3rd party libraries, complete with tests and grunt scripts. These are forks of the library rather than Git submodules, because forks allow modifying the source to support Meteor (if necessary) and one can still pull upstream changes without having to re-apply the integration changes.
These forks live in the MeteorPackaging GitHub organization. This org was created so that multiple developers can collaborate on maintaining an integration in a centralized location. Now that Meteor's Package API is stable, we can submit PRs to popular JS library maintainers to add official Meteor integration. Some maintainers will accept the PR - great, we have integration straight from the source, with same-day updates on Atmosphere. Some won't accept the PR, in which case we continue with the MeteorPackaging fork.
I started this effort in November 2014, spoke about it at DevShop SF, and here's where we are now.
Going forward
As of September 2015, see http://autopublish.meteor.com. It's a system authored by @splendido that automatically publishes new versions of a wrapper package automatically on Atmosphere (once you've registered your repo with it), as soon as the upstream package has a new release. See the How it works page. For an example repo, see https://github.com/MeteorPackaging/numeraljs-core-wrapper.
The instructions from here on may be somewhat outdated.
Contribute (minimal effort)
If you're working on integrating a 3rd party library with Meteor, please post here. I have also reserved Meteor Developer (Atmosphere) organization namespaces for many libraries; ask if you need one.
If you have created an MD organization for a library, please let us know. Namespace is precious. Currently we're looking for:
Who has these?
Popular libraries with official Meteor support
PR acceptance pending
Refused to accept the PR
How to do this
Overview
meteor publish
Below are the detailed steps.
Get the integration working before even contacting the maintainer
Fork <repo_url_of_the_library>
git clone <your_fork_url>
cd <repo_directory>
git remote add upstream <repo_url_of_the_library>
git fetch upstream
Read through CONTRIBUTING.md or README.md and figure out which branch the original author wants pull requests against. Some can be very finicky.
git checkout -b meteor-integration upstream/
that_branchCreate a
meteor
directory in the root of the project and copy there the Hammer.js Meteor package files, or the Font Awesome Meteor package files, depending on whether you integrate a library or CSS/image/font resources.Go through every file and make changes to reflect the actual library you're working on.
in particular, give a GOOD summary in
package.js
(for SEO on Atmosphere), instead of the library's tagline. Example:For Atmosphere, a repository of JavaScript libraries, this is suboptimal: it repeats the library name, and it says "library" and "JavaScript" (well duh). You only have 100 characters. Don't waste them. Better:
Export the library global(s)
If the package is a jQuery package and adds itself to
$
, there's nothing to export.Otherwise, add a
meteor/export.js file
like this:Add a package test file, at least checking if the library instantiates correctly.
You want to make it as painless as possible for the maintainer to accept the PR. If there's a build process they use to publish, it would be great if you could add to it. Here's a gruntfile patch for Meteor and a Makefile patch (used for d3). If their README mentions Component/Bower/Npm, add a section mentioning Meteor (example).
Run the tests using the build process, e.g.
grunt meteor-test
. If you want to run tests manually, execute this:Pick a namespace and publish the package under it
Please be very careful with this, as renaming packages is impossible.
Log into your Meteor Developer account and create an organization that represents the package. Most often it will be the name of library, without any special characters (no
-
,.
). No need to include theJS
part, since we're always dealing with JavaScript libraries.If the organization name is not available, contact me, @dandv. I've registered a bunch of them, so potentially evil individuals don't :)
meteor publish
the package to Atmosphere for the first time. This prevents the maintainer from running into an error that the package doesn't exist when they publish (meteor would complain about a--create flag
).After you've ensured publishing works (namespace is available, the
name
inpackage.js
is valid etc.), push to your git fork:Congratulations! Reply to this issue and add the link to the package's Atmosphere page.
Now you can go to the GitHub page of the library and issue a pull request!
Contact the library maintainers
Here is the recommended PR message.
See d3 and Font Awesome above for addressing objections.
Contact the maintainers of other Meteor wrapper libraries
Ask them to deprecate the library by creating a PR overwriting the README.md of their package with the text
The commit message should be "Deprecating package in favor of official integration".
The name of the PR issue (after you click "Create pull request) should be "Kind request to deprecate package in favor of official integration".
The text of the PR should be similar to this:
Go to the Atmosphere page of their package and flag it anyway. Ideally, get others to flag the wrapper package. This is important because
meteor
doesn't warn the user when runningmeteor add
on a deprecated package, so we hope users will check on Atmosphere. However, each package needs several flags from different users, in order to show as flagged globally.TODO
moment
(pinging @estark37)The text was updated successfully, but these errors were encountered: