The Concept of Project Management in Space

With Space, we intend to create an integrated team environment. Using multiple tools makes it difficult to keep track of everything about your projects, teams, and people. Instead of scattering our work and communication across tools, Space endeavors to centralize it all in one place.

Space combines the tools for software development, collaboration, planning, analysis, and project management. It also contains documents, knowledge base, and company structure – all in one interface, powerful for technical people, and friendly for everyone to use. Programmers, designers, QA, PMMs, HRs, and managers feel equally at home and work together seamlessly on projects. This is the idea behind Space and the destination we’re headed for.

Today, we want to introduce you to our concept of project management. This is the plan, the ideas we have behind the project management process, and a lot of work is still in progress. However, we are eager to hear your thoughts on it to be sure we’re building on the right idea.

The Concept of Project Management in Space

The whole project management process can be divided into three main stages: Planning, Analysis, and Execution. Combining these stages, we aim to support a wide array of flows.

Sometimes you start from scratch with the planning phase, moving smoothly to the analysis and execution stages. Other times, you want to go back to planning from the execution stage, for example when features require more input from stakeholders or additional analysis is needed.

Project_management_Space

I. Planning

Project managers often use hierarchical lists in a simple doc/notes form, in order to summarize discussion results, create mind maps, decompose a project scope, and structure ideas into a plan. We’ve decided to reuse this approach.

Long-term planning with checklists:

  • Starting with a top-down planning process, you create structured checklists with epics on the top level, and then further decompose them into features and smaller to-do items in a simple text form.
  • Using the hierarchical checklists, you can plan an epic or a feature, or a version/release. You can play with the level of detail – the hierarchy of the checklist is limited by your imagination and the level of abstraction.
  • You can collect and decompose your ideas in your personal checklist and then move it to a project, or you can create a shared checklist and work collectively to decompose it.

Short-term planning with personal to-dos:

  • Personal to-do lists are intended to be used for short-term personal planning, like sticky notes on your laptop screen, or notes in any other form. When you take any checklist item, it’s automatically converted to an issue, assigned to you, and added to your personal to-do list.
  • You can convert any entity to a to-do item, such as reading a blog post, doing code review, replying to a chat message, and so on. This way, you can finally get rid of stickers and notes all around your working place. (Please tell me I’m not the only one waiting for a chance to do this!)

II. Analysis & Tracking Progress

  • When the checklist is ready, you can go through each item in the list and convert those that require teamwork into issues in one click. (You may ask, “Why not create issues from each checklist item, right away?”. We think that it’s optional; sometimes you may need to plan a meeting, make a decision, or ping someone. It may be an important part of the puzzle, but you may not want to create a “heavy” issue with a state, assignee, etc.)
  • All these issues are then combined in a single issue list view, which can be observed as a backlog or a grouped tree.
  • A multi-view Issue list with search, filters, and analytics capabilities gives you the power to do multi-level analysis and track the progress.

III. Execution

  • After you prepare your backlog for the next iteration using the issue list’s capabilities, you move to the next execution phase.
  • For the execution phase, we suggest visualizing your backlog using an issue board.
  • The board gives the best overview of the current progress and helps the whole team stay on track.

We believe that the suggested form can be reverted at any stage and should work both ways. It’s a simple yet powerful concept making all project data accessible, transparent, and visible to the project team and the rest of the company.

This is the concept of project management we’re implementing in Space. We’ve already introduced the first implementation of checklists and issues, the integration between these two is coming soon. You’re welcome to start using issues and checklists, keeping in mind the future evolution.

What do you think about the concept of project management in Space? Does it fit your current process? Please share your thoughts, we’re waiting for your feedback!

Haven’t tried Space yet? Request your invite and join a free Space early preview program today!

Your Space Team

Posted in Concepts, Project Management, Projects, Sendtoall | Tagged , , | 4 Comments

Introducing Space Packages

Space packages
We’re delighted to introduce Space Packages! In this post we’d like to share with you the existing features, as well as the planned features we have in store for this Space module.

First of all, what is Packages? Packages is a package repository manager. If you’ve ever heard of Maven Central, Docker Hub, or NuGet.org, then you’ll easily get the idea. In a nutshell, like these products, it lets you create your own repositories and use them to publish and share packages of various types, such as Docker/OCI images, .jar and .pom files, and others, all inside your Space instance!

While this is still a work in progress, you can already try out some of the repositories.

Repository types supported

Package repositories in Space are organization-wide entities, making it possible to share repositories between team members.

Space Packages supports (or will support) the following repository formats:

  • Container registries – Storage for Docker/OCI images and Helm charts.
  • Maven repositories – Maven compatible artifact storage to use in Gradle, Maven, and SBT builds.
  • [not-yet-available] NPM registries – Storage for NPM packages to use in npm/yarn.
  • [not-yet-available] NuGet feeds – Storage for NuGet packages for .NET developers.

Packages — Space - demo.jetbrains.space

Search and traceability

As a repository normally contains hundreds or even thousands of packages, it can be difficult to find exactly where a specific package resides. To address this issue, we’ve implemented powerful search capabilities to help you find packages. You can search for packages by name across multiple repositories.

Seach_packages

Finding out who has published the specific package version and where they have it can also be a problem. Thanks to the synergized integration of Space modules to share information, it’s possible to get all the details of this information.

JetBrains Space. Package properties

Repository working modes

There are three modes for working with repositories:

  • Local – This is the default mode. The local repository is the main storage of your packages. You can push and pull packages, reference this repo in your IDE, and use it as you would normally use a package repository.
  • [not-yet-available] Mirror – In this mode, the repository becomes a mirror of another remote repository (for example, Maven Central, NuGet.org, Npmjs.com, and so on).
    • If the mirror is set to Pull only, the repository works as a pull-only cache: When a package is not available locally, Space takes it from the upstream repo and then saves it locally.
    • If Push and pull are set, the mirror has two-way syncing with the upstream server. When you push a package to such a repo, the package is pushed to the upstream repo as well.
  • [not-yet-available] Group – In this mode, the repository serves as a single entry point to the group of local and mirror repositories. Instead of specifying a number of repositories, you can specify a single URL. Not only is this convenient, but in some cases, it also improves performance. For example, Gradle has a significant drop in performance if it has to go through a large number of repositories.

Packages_list

Want to learn more?

The Packages module already has a lot to offer. In the Space documentation, there are tutorials on how to:

There is also lots of other information there, which you might find useful for customizing and getting more out of Space, we recommend you go take a look.

What else is planned for Packages?

  1. Permissions management – Configure access permissions per repository/package name prefix to ensure fine-grained control for package owners.
  2. Retention policies – Automatic cleanup of repository content, leveraging retention policies with rules like “keep packages downloaded once in the last year”.
  3. IDE integration – Search by package name as well as by FQN class/method references inside the IDE.
  4. Project package repositories – Create package repositories for specific projects.
  5. Build tool caсhes – Create repositories for tools like Gradle/Bazel with required retention policies to store remote build caches.
  6. License analysis – Check reports of the used package licenses for specific projects.
  7. Vulnerabilities analysis – View the health of package dependencies for projects.

We’d really appreciate it if you would share your feedback with us about both the currently implemented functionality and our future plans:

If you haven’t tried Space yet, request your invite for a free Space EAP today!

Your Space Team

Posted in Packages, Projects, Sendtoall | Tagged , , , , | 6 Comments

Projects in Space: Self-Service Over Request-And-Wait

The main idea behind projects in Space is to give each team a distinct place for all their work-related resources, which is conveniently organized, managed, and easy to navigate to.

Project Dashboard

If you are already familiar with the concept of Teams in Space, you may wonder how Projects fit in. While it is usual for a team to have an only project, it’s not always the case. Sometimes you want to invite a person from another team to help with something, or people from different teams want to get together to start a new side project.

That’s why we decided to keep the team-project relationship model flexible and open to various real-life scenarios. In Space, a project is not implicitly bound to any team and vice versa. It’s designed to be a self-contained and independently managed entity with its own permission set. It means that a team can work on multiple projects and every member of a team can participate in various projects at the same time.

We want projects to become a comfortable workspace for everyone: from software developers, QA engineers, designers all the way through to marketing and sales.

Developers will appreciate the reliable git hosting and rich interactive environment provided to them with everything they need to collaborate with each other at all the different stages of the development lifecycle. In the future, with the more general features we’re rolling out, non-development teams can benefit from using Projects as well by adopting the top-down planning tools, issue tracker, knowledge base and process management tools.

Whatever work you do, you’ll get access to a large number of seamlessly integrated features that can help you and your teammates organize your workflow and boost productivity.

Here is what’s already available inside the Projects:

  • Source code management (Git hosting): Host one or multiple repositories within a project; manage a repository with configurable push restrictions, protected branches, and webhooks.
  • Code browsing: Browse and search the code base, view the commit history and compare revisions in a diff.
  • Code review: Review and discuss changes, comment on selected lines, and subscribe to updates.

Code Review_new

  • Web Editor: Edit files and push changes right from the web UI.
  • Members and Responsibilities: See who is contributing to the project and who’s in charge of what.
  • Checklists: Manage your project development cycle by setting goals and deliverables in easy-to-track checklists. The first step towards the powerful planning tool, fully integrated into the issues and other modules.
  • Issues: a lightweight way to track issues inside the project. The first step towards the full-featured issue tracker, fully integrated, with rich customization capabilities.

Related to Projects:

  • Package management: Storage for package repositories that can be used in your CI/CD pipelines as well as from developer machines.

Here is what we are cooking up:

  • Automation: Integrated CI/CD tools with a Kotlin based DSL and pipeline graphs.
  • Planning tools/Issue tracker evolution/Wiki: A powerful fusion of structured task lists, full-featured issue tracker, and project documentation with cross-reference, search, and analytics. Issues can be created out of task-list items and then combined in a single issue list.
  • IDE Integration: An IDE plugin that lets you review code, comment on fragments, and communicate with your teammates right from your IDE.

Who can create a project in Space?

Anyone! There are no restrictions. Whether you’re considering to move an existing codebase or starting something new, Space welcomes you. All projects are “self-service”, meaning that once you create a project, you get full control over it and become the project administrator. Grant access to other contributors and manage repositories – you’re in command.

To create a project, just click + on the main sidebar, choose New project, and fill out a few fields on the form.

When adding a repository to your project, you have a choice of creating one from scratch, importing an existing repository from some external hosting, or you can just make a synchronized mirror of a repository to browse its codebase, review changes online, and use other tools included with the project.

Access and membership

As mentioned before, projects are not part of the Teams. They are designed as independent modules with per-project membership requirements.

While anyone inside your organization can browse code, participate in code reviews, and post comments, only the project members are allowed to change code and tweak with the internal project tools.

The project administrator can grant membership to individual users and entire teams as they choose.

Members_team

Last but not least: a project can be made private, which means it will be hidden and inaccessible to anyone but its members (and the system administrator). So, if you ever want to start your own secret project, now you can!

Join a project

Here is what you need to do if you want to join an existing project and start contributing to it:

  1. Click your avatar → My profile → Git Keys & Passwords) and add your public SSH key.
  2. You need to be a project member. If you already are, the project will be shown in your profile, and you’ll be listed on the Project Settings->Access page under Project Members. If not, contact the project administrator and ask for membership. As of now, Space can’t show you who the project administrator is, so you’ll have to ask around.

Projects in Profile

 

3. Go to your project, choose the right repository, get its URL, and follow the instructions in README. That’s all there is to it.

Play with it!

Most of the project features are available regardless of membership. Try them out!

We hope this post helps you get started. If you haven’t joined Space yet, request your invite today. Space is closer than you think and is waiting for you!

For more details, check out our user documentation and, as always, feel free to ask questions and leave feedback via our help center, or by creating a YouTrack issue.

Your Space Team

Posted in Concepts, Projects, Sendtoall | Tagged , , , , , , , | 6 Comments

Teams – a Core Concept to Working and Communicating in Space

Teams are a key concept in Space. Teams represent the organization structure and how people work together. They can be flat and simple, or more complex hierarchies with multi-level teams.

Having teams eliminates the need for creating concepts such as groups and then making sure that every team member is also part of it. In many organizations, those groups are centered around distribution or access rights and don’t fully map to the organization structure.

In Space, teams and roles give us a convenient way to browse the organization by its real structure. A person can be a member of one or several teams and have a role that represents their title or specialty.

The Team Directory gives us an overview of all the teams, locations, and roles in our organization. We can drill down those concepts using various filters. If we’re searching for a certain person or someone with a certain role, the Team Directory can help us find them!

Team Directory gives us an overview of all the teams, locations and role

Within a team, meetings, calendars, vacations, blog posts, projects, and more are grouped together. We can see a feed of who’s joining or changing roles, and check the availability of the entire team without having to open calendars separately.

Within a team, meetings, calendars, vacations, blog posts, projects and more are grouped together.

Tip: Use Go to Anything (Ctrl+K / Cmd+K) to quickly search for anything in Space, including teams, roles, and people.

Go to Anything can be used to quickly search for anything in Space, including teams, roles, and people.

Teams for Individuals

Who can review my code? Who is around to help me with a given task? As a team member, it’s important to keep your calendar and absences up-to-date. By doing so, you help your colleagues know when you are working remotely, on a business trip, attending a conference, not feeling well enough to come to the office, or on vacation.

Adding those plans to your profile helps you make it clear to everyone who needs to know whether you are available or not. The team can make better decisions about whom to contact for a given topic, and not disturb you while away.

Teams for Communication

Having teams defined in Space helps make communication more efficient. Setting up meetings, communicating through chats, sharing knowledge – all this is centered around teams.

Chat channels for a team can be created by adding the entire team as a participant in one go – including future team members.

Create a new chat and invite the entire team.

Important updates and news for the company can be shared in blog posts. Blog posts and events can be published company-wide (think general news, town halls, holiday parties, and internal events) or specific to certain teams or locations. The team structure helps get the right information to the right people.

Blog posts and communication can target the entire organization, or specific teams and locations.

Teams for Security

When a member joins a team, Space provides them with permissions to access version control, code reviews, packages, issues, channels in chats, and knowledge base articles. Joining the team is all it takes to start working together – no more need to request access to 20+ distribution groups!

Within a team, there are 4 roles. Everyone in a team is a Team Member automatically, with the default permissions required to start working and communicating.

Team Leads have additional responsibilities and viewing rights within the team. They can view team members’ availability and approve absence requests from other team members. There can be one or more team leads in a team.

Next, the Team Manager has the same responsibilities and viewing rights as the team lead, except they are assigned as a direct supervisor in the organization. In the hierarchy, managers have people report to them, whereas team leads just have additional responsibilities.

Lastly, the Team Admin keeps the team records up-to-date. They receive and approve requests to join or leave the team, can edit team members’ profiles, add new members to the team, and create new sub-teams.

Default permissions for these roles can be configured from the Space administration dashboard.

Default permissions for these roles can be configured from the Space administration dashboard.

Teams for HR

While Team Leads, Managers, and Admins typically manage absences and member profiles, it can be convenient to have a dedicated team or specific people perform typical HR tasks.

When assigned the System Admin role, they can edit team records and member profiles, including scheduled absences and personal information, and add and remove members from teams.

What’s next?

As we’ve seen in this post, teams are a central concept in Space. Setting up the right team structure helps people communicate and work together more efficiently.

Existing functionality, such as chats, availability, source control, and meetings, is all centered around teams. Upcoming functionality such as the knowledge base will be too!

Sign up for your own Space and let us know how it goes!

Posted in Concepts, Sendtoall, Teams | Tagged , , , , | 1 Comment

Welcome Space!

Today at KotlinConf, we announced our brand new product Space, and we have already opened the Early Access Program.

What is Space

Space is an integrated team environment that provides teams and organizations with the tools they need to collaborate effectively and efficiently. It has Git-based Version Control, Code Review, Automation (CI/CD) based on Kotlin Scripting, Package Repositories, Planning tools, Issue Tracker, Chats, Blogs, Meetings, and Team Directory, among other features.

project_dashboard

Space was born out of our own needs at JetBrains. As a company, we’ve grown from a team of 3 developers to over 1200 people, 60% of whom are technical. With this growth, we’ve found our current use of independent tools has often created silos, leading to miscommunication, less efficient collaboration, and loss of information.

Space is about people and teams

In Space, the concept of a team is a first-class citizen. When you join a team, you are automatically included in everything related to it, be it meetings, blogs, source control, calendars, vacations, etc. This eliminates the need for creating concepts such as groups and then making sure that every team member is also part of the corresponding group.

member_profiles

Tight integration between the areas of the system provides for numerous advantages such as knowing a person’s availability, which is useful if you want to have a chat or assign a code review to them.

integrated_with_profiles

Space is a platform

Space allows you to build on the platform in multiple ways. Whether you do so by using webhooks, HTTP API, or even plugins (on the self-hosted version), you can extend the existing functionality of Space and make use of the information available to you without needing to hook up many different solutions that create silos of data.

Space as a service or self-hosted

We will be offering Space either as a service, hosted and managed entirely by JetBrains, or as a self-hosted version (available in the near future). The pricing plan has four levels, starting at the free tier, which is ideal for small teams, and progressing up to the Enterprise tier, which meets the needs of large organizations.

pricing

Space is available everywhere

Built from the ground up with Kotlin multiplatform technology, Space clients are available for web, desktop, and mobile platforms, and offer full IDE integration with the IntelliJ Platform.

Space Launch and roadmap

Today we already provide a ton of functionality, such as:

  • Version Control
  • Code Reviews
  • Blogs
  • Chats
  • Team Directory
  • Package Registry
  • Planning
  • Issue Tracker
  • IDE Integration

We have a lot more planned for Space, including:

  • Knowledge Base
  • Automation
  • CI/CD Pipelines
  • Personal To-Do lists and notification management

The Early Access Program will be accepting requests on a first-come-first-served basis, and we’ll be gradually increasing the number of teams that can gain access. So don’t wait! Sign up now to get your team Space!

Posted in Announcements, Sendtoall | Tagged , , , | Leave a comment