The alpha is coming

40 views
Skip to first unread message

Fredrik Ekholdt

unread,
May 22, 2014, 2:24:36 PM5/22/14
to adep...@googlegroups.com

After a couple of weeks now of pretty intense hacking things are finally starting to come together.
I think everything I have been working on is operational and I just need to update the sbt plugin and release it, which I should be able to do by tomorrow unless something comes up.

Sorry for all the delays, but it is only me working on this right now, which means that if I have a bad/unproductive day or if I have a client that needs me I will get slowed down.

What you should be able to do in sbt is:

  • ah install akka-actor which searches your local repositories and AdeptHub for a unique module called 'akka-actor' , resolves the new graph and creates a lockfile. The lockfile contains the requirements (dependencies) you have, the context (the state at the time you resolved, aka the commit of the repositories, locations of the repositories, the hashes of the metadata you ended up with) and a list of artifact hashes (SHA 256) as well as their download locations. Although that sounds complex, it is designed to be give you maximum speed, because there is no resolution required when you load up you project unless you change something and it makes it possible to do parallell download of artifacts (from multiple locations). It is also designed for maximum reliability because even if you resolve again or with a new set of requirements, Adept will base it on EXACTLY what you had before.
  • compile which now will download the artifacts if the hashes do not exists locally.
  • ah ivy-install "foo" %% "bar" % "1.0" which imports from Ivy and puts the metadata in a local (unversioned) directory. If a module with the same coordinates is available it will ignore the import and use get the metadata from AdeptHub (unless you force it to import or if you are using a SNAPSHOT).
  • ah contribute-imports which uploads the imports to AdeptHub and downloads the versioned metadata from AdeptHub and deletes you local imports. By doing this you do not need the imported metadata if you push you code and it will be more reliable and faster (because reading from Git is faster than the file system and easily cachable) in addition to helping out others so they will not need to do this anymore. On AdeptHub I will make it possible to manage imports smoothly, but for now everything is accepted.

Once this is out the next step for me is to start cleaning up the code a bit, and make it possible to manage repositories/modules on AdeptHub so that you can set binary versions of things. Since metadata is versioned, users will be able to choose when you are ready to update (I will add a notification mechanism as well, so you will see when something new is available).
On the sbt plugin I will add an upgrade command, which will take you to the latest binary compatible version of modules that have binary versions. The upgrade command will also replace any snapshot you have with a newer one.

I will try to be better at keeping you posted so as soon as the release is out I will ping this mailing list again. 


Josh Suereth

unread,
May 22, 2014, 4:28:09 PM5/22/14
to adept-dev
Wow, this sounds amazing.  Hoping I can find time to try it out soon.

Fredrik Ekholdt

unread,
May 23, 2014, 7:37:12 PM5/23/14
to adep...@googlegroups.com
Finally everything is up and running.

If you are interested in trying out the alpha, see install instructions here: https://github.com/adepthub/adepthub-ext/blob/master/README.md

You must expect some quirks (some I have already noticed), but it should be stable enough to use (perhaps not in prod, but for dev).

How it works:
- Use 'ah install' to install modules/dependencies. Currently only akka-actor and akka-remote is available, but perhaps with your help there will be more! :) You can install to different configurations by adding the conf like this: 'ah install test akka-actor’. You can also get a specific version by doing this: ‘ah install test akka-actor -v 2.2.1’ 
- Use 'ah ivy-install' to install using Ivy. It will use your Ivy resolver to do so. It is pretty slow, which is related to 1) it is Ivy… 2) I am grabbing all direct dependencies of all modules and all configurations from everything. When you have finished installing from Ivy, you can do 'ah contribute-imports’. Right now it will force you to install your contributed imports again, but that will soon change (perhaps tomorrow if I find the time). When you contribute something I am storing the zip file with metadata which should enable me to recreate the data you contributed even if I change the formats etc etc...

Then you can do compile etc etc like normal. If somebody else checks out your project, artifacts will be downloaded when they hit something that requires the classpath, without doing a resolution.

I am going to be offline the upcoming week, but do give send me a mail you have tried it and you have comments (good or bad) or want to get involved.

F
Reply all
Reply to author
Forward
0 new messages