Projects for Team Collaboration

Introduction

JuliaHub Projects were built to help teams work together on a shared set of resources. When you start a project, you are asked which team members to add and which set of resources you would like to share starting with creating a directory (also known as a repository).

Currently, a project consists of files, linked blobs (of data), entrypoints, and metadata associated with artifacts. You can see how it works:

Creating a Project

To create a project you will need to navigate to Projects tab from the left menubar.

Sidebar

Click on the Create Project button at the top right-hand corner to create new project.

Create Project

You will need to choose the template if you want. In this tutorial, I have selected Generic Project.

Project Template

Once selected the first thing you need to do is give your project a name. Next, you can choose to give a short description and provide any tags that will help your team to find this project easily. The next important step is to select which JuliaHub application the project should launch in by default.

Default Application

Next, you will be required to also specify the workflow (either Collaborative or Exclusive). Collaborative editing lets multiple contributors work on a project at the same time, combining their changes when they are ready. In an exclusive editing workflow, the ability to modify files in the project is delegated to one contributor at a time.

Once selected click Next.

Adding Teams and Users

Projects and the resources that are part of a project are meant to be accessible only by the teams and users you designate for that particular project. In step-3, you will be asked to add team members to the project and select how your organization as a whole can access the project. Add groups or individual users to the project and use the dropdown to change the kind of permissions they have using one of our default roles. The default roles are:

  • Viewer: can view content, but has no other permissions (no edit or write access)
  • Editor: just have read/write permission on files, but cannot create projects or folders
  • Owner: can modify, rename, and archive projects

You can change this information later, even after the project has been created. You can give general access which will be for the whole team or can provide individuals with the specific access.

Team Members

When you are done, hit Next.

Directories (Repositories)

The last step in a project is creating a directory (also known as a repository). There are two kinds of directories that can be created. The first is a code/general directory that houses all of your files, folders, and packages. The second kind of directory is a data directory where all datasets are stored. You can think of a directory as the top-level structure of a project (similar to a GitHub repository). You can have one or multiple directories in a project. Currently, a project will not launch without a directory.

Create Directory

Name your directories and, when done, click on Create button.

Note: You can upload files directly to the directory in the UI, but right now, folder creation is limited to the IDE. Once you launch the JuliaIDE, you can add folders and subfolders to your top-level directory.

Explanation of General Directory vs Data Directory

Directory Type: Code/General

The contents of a general directory are stored in an S3 bucket, which can hold various kinds of files such as packages, text files, images, and more. You can think of a general directory as of a repository on GitHub.

Directory Type: Data

The data directory is meant to store datasets. Datasets provides Julia programs a way to map information to a database. When working with file types that are meant to be associated with data such as CSVs, XMLs, and JSON files. The best practice is to add them to the data directory.

Navigate back to Projects tab so see your new project.

newproject

Launch in JuliaIDE

Once your project that has been successfully created with a directory, you can launch the project with the default application by hitting the Launch button.

Launch

Here is an example of a project with an empty file:

IDE

Importing a Git Project

Importing your existing project to JuliaHub is very easy. You can import your project from external Git repositories.

To import a project go to Projects tab from the left menubar.

Sidebar

Click on the Create Project button at the top right-hand corner to create new project.

Create Project

Hit Import Project as shown in the image below and then click next.

Import Project

In the next step, you will be asked to provide the Repository URL, Provider and Project Name.

Repository

Navigate to your github account and click Repositories from your profile section so see all your repositories.

Github

Select the repository you want to import and copy the URL as shown in the below image.

URL

Go back and Paste the URL in Repository URL and it will auto-fetch the Provider and Project Name.

Adding URL

Then select Workflow mode either Collaborative or Exclusive and click Next.

Workflow Mode

In last(optional) step, you will be asked to add collaborators if you want to add your team contributor and give them tyoe of access. Once done, click Create.

collaborators

Now your project will be created and added to your JuliaHub projects.

Project Created

Two modes of editing: Collaborative and Exclusive

When you start a project, you can enable one of two workflows for editing. Collaborative editing is a git-based workflow where multiple people can make changes in their branches and those branches are then merged with the main branch via a Publish button. Exclusive editing is the other option where only one user can make changes to a set of resources at a time. That one user is the only one with edit access until they "transfer" edit rights to another user.

Active, Finished, Archived Projects

You can also go back to the Projects tab to see all active projects. Additionally, admins can mark a project as finished, and it will move to the finish tab.

Finished

Projects can be also be archived so that they are no longer usable, but can be reactivated in the future should the need arise. You may also wish to download or share your project.

archive